Программинг  Форум для тем связанных с программированием  
	
	
	
	
		
		 
	
	
	
	
	 
 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#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, время: 22:59 .
		 	
	 
 
	
	
	
	vBulletin style designed by 
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: 
zCarot 
	
 
 
 
 
Вы хотите чувствовать себя в безопасности? чоп  Белган обеспечит её!