Программинг  Форум для тем связанных с программированием  
	
	
	
	
	
	
	
	
	
	
	
	
		
		 
	
	
	
	
	 
 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#51  
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 07.03.2009
				
				
				
					Сообщений: 9,139
				
				 
	Сказал Спасибо: 70
	
		
			
				Имеет 2,820 спасибок в 1,735 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			думаю понятно.
	delphi Код:
	var 
  i : integer ;
  P : Pointer ;
  OtherI1 : ^Integer ;
  OtherI2 : integer ;
begin 
  i := 123123 ;
  p := @i;
  OtherI1 := p; //"ссылко" 
  OtherI2 := integer ( P^) ; //"копия" 
  ShowMessage ( inttostr ( integer ( p^) ) ) ; //123123 
  ShowMessage ( inttostr ( OtherI1^) ) ; //123123 
  ShowMessage ( inttostr ( OtherI2) ) ; //123123 
  i := 321321 ;
  ShowMessage ( inttostr ( integer ( p^) ) ) ; //321321 
  ShowMessage ( inttostr ( OtherI1^) ) ; //321321 
  ShowMessage ( inttostr ( OtherI2) ) ; //123123 
end ;
 
Добавлено через 3 минуты 
в данном случае ему нужно
1. прочитать значение с off_40A798 - это базовый адрес по которому лежит экземпляр класса.
2. добавить к этому значение смещение переменной (на сколько там от базового адреса далеко нужная переменная)
3. загнать полученое значение в var value: ^НужныйТип;
4. юзать value^
				__________________
		
		
		
		
		
		
		
						
				Последний раз редактировалось alexteam, 25.01.2011 в 21:34 .
				Причина: Добавлено сообщение
				 
			
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	
		
			
				
					За это сообщение alexteam нажился спасибкой от: 
				
				
				
			 
			 
	
  
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#52  
	
 
	
			
            
			
			Местный
			
			
		
			
				
			
			
			
				 
				Регистрация: 23.09.2009
				
				
				
					Сообщений: 1,232
				
				 
	Сказал Спасибо: 119
	
		
			
				Имеет 172 спасибок в 134 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			так так
		
	
		
		
		
		
		
		
			
				__________________Н а ч а л о . 
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#53  
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 26.06.2009
				
				
				
					Сообщений: 2,433
				
				 
	Сказал Спасибо: 154
	
		
			
				Имеет 692 спасибок в 426 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			
	Цитата:
	
	
		
			
				
					Сообщение от 
supernewbie 
					messagebox(0,PChar(IntToStr(Integer(otheri1^))),''  ,0);
			
		 
	 
	
 :facepalm:
				__________________
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	
		
			
				
					За это сообщение destructor нажился спасибкой от: 
				
				
				
			 
			 
	
  
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#54  
	
 
	
			
            
			
			Местный
			
			
		
			
				
			
			
			
				 
				Регистрация: 23.09.2009
				
				
				
					Сообщений: 1,232
				
				 
	Сказал Спасибо: 119
	
		
			
				Имеет 172 спасибок в 134 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			че с ним не так))
		
	
		
		
		
		
		
		
			
				__________________Н а ч а л о . 
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#55  
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 26.06.2009
				
				
				
					Сообщений: 2,433
				
				 
	Сказал Спасибо: 154
	
		
			
				Имеет 692 спасибок в 426 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			весь код функции покажи
		
	
		
		
		
		
		
		
			
				__________________
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	
		
			
				
					За это сообщение destructor нажился спасибкой от: 
				
				
				
			 
			 
	
  
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#56  
	
 
	
			
            
			
			Местный
			
			
		
			
				
			
			
			
				 
				Регистрация: 23.09.2009
				
				
				
					Сообщений: 1,232
				
				 
	Сказал Спасибо: 119
	
		
			
				Имеет 172 спасибок в 134 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			
	delphi Код:
	library path;
uses 
  SysUtils,
  Windows,
  Classes;
var 
ID, ThrHandle: Cardinal ;
adr:Cardinal ;
objaddr:Pointer ;
otheri1:^cardinal ;
procedure  MyProc;
begin 
adr:=getmodulehandle( 'project25.exe' )  + $A798;
otheri1:=@adr;
//messagebox(0,PChar(IntToHex(objaddr,8)),'',0); 
messagebox( 0 ,PChar ( IntToStr ( otheri1^) ) ,'' ,0 ) ;
end ;
{$R *.res} 
begin 
  messagebox( 0 ,'pause' ,'' ,0 ) ;
  ThrHandle:=CreateThread( nil ,0 ,@MyProc,nil ,0 ,id) ;
end .
 
				__________________Н а ч а л о . 
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#57  
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 26.06.2009
				
				
				
					Сообщений: 2,433
				
				 
	Сказал Спасибо: 154
	
		
			
				Имеет 692 спасибок в 426 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			
	Код:
	procedure MyProc;
var //учимся НЕ юзать глобальные переменные
   adr:^pointer;
   objaddr:pointer;
begin
  adr:=getmodulehandle('project25.exe') + $A798;
  obaddr:=adr^;
  messagebox(0,PChar(IntToHex(obaddr)),'',0);
end; 
 помоему так
				__________________
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	
		
			
				
					За это сообщение destructor нажился спасибкой от: 
				
				
				
			 
			 
	
  
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#58  
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 07.03.2009
				
				
				
					Сообщений: 9,139
				
				 
	Сказал Спасибо: 70
	
		
			
				Имеет 2,820 спасибок в 1,735 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			
	delphi Код:
	program  Project2;
{$APPTYPE CONSOLE} 
type 
  TMyClass = class 
  public 
    X: integer ;
    Y: integer ;
    Procedure  ApplicationProcedure;
  end ;
{ TMyClass } 
procedure  TMyClass.ApplicationProcedure ;
begin 
  Writeln ( x,' ' ,y) ;
end ;
var 
  MyObj : TMyClass;
  Stored, OffsetX, OffsetY : Pointer ;
  PIntX, PIntY : ^integer ;
begin 
  //приложение 
  MyObj := TMyClass.Create ;
  MyObj.X  := 100 ;
  MyObj.Y  := 200 ;
  MyObj.ApplicationProcedure ;
  //а это типо у нас 
  Stored := MyObj; //прочитать значение с off_40A798 
  OffsetX := @TMyClass( nil ) .x ; //т.к. я в этом же приложении то могу сделать воттак. 
  OffsetY := @TMyClass( nil ) .y ; //на самом деле у нас константы - смещения 
  PintX := pointer ( integer ( Stored)  + integer ( OffsetX) ) ; //базовый адрес + смещение = адрес того где читать\менять 
  PintY := pointer ( integer ( Stored)  + integer ( OffsetY) ) ;
  PintX^ := 111 ; //меняем 
  PintY^ := 222 ;
  //опять приложение 
  MyObj.ApplicationProcedure ;
  readln ;
end .
 
				__________________
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	
		
			
				
					За это сообщение alexteam нажился спасибкой от: 
				
				
				
			 
			 
	
  
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#59  
	
 
	
			
            
			
			Местный
			
			
		
			
				
			
			
			
				 
				Регистрация: 23.09.2009
				
				
				
					Сообщений: 1,232
				
				 
	Сказал Спасибо: 119
	
		
			
				Имеет 172 спасибок в 134 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			getmodulehandle возвращает кардинал же
		
	
		
		
		
		
		
		
			
				__________________Н а ч а л о . 
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#60  
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 26.06.2009
				
				
				
					Сообщений: 2,433
				
				 
	Сказал Спасибо: 154
	
		
			
				Имеет 692 спасибок в 426 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			
	Цитата:
	
	
		
			
				
					Сообщение от 
supernewbie 
					кардинал же
			
		 
	 
	
 это адрес начала твоего приложения в памяти
приведение типов гугли
				__________________
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
		
 
	
		
 
  
	
		
	
		 
 
 
	
		
		Вы не можете  создавать темы
		Вы не можете  отвечать на сообщения
		Вы не можете  прикреплять файлы
		Вы не можете  редактировать сообщения
		HTML код Выкл. 
	  
 
	 
	
		
	 
 
Часовой пояс GMT +4, время: 16:21 .
		 	
	 
 
	
	
	
	vBulletin style designed by 
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: 
zCarot 
	
 
 
 
 
Вы хотите чувствовать себя в безопасности? чоп  Белган обеспечит её!