Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 25.01.2011, 21:33   #51
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

думаю понятно.
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^
__________________
L2Ext - project closed.

Последний раз редактировалось alexteam, 25.01.2011 в 21:34. Причина: Добавлено сообщение
alexteam вне форума   Ответить с цитированием
За это сообщение alexteam нажился спасибкой от:
Старый 25.01.2011, 21:38   #52
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

так так

otheri1:^integer;

adr:=getmodulehandle('project25.exe') + $A798;
otheri1:=@adr;

messagebox(0,PChar(IntToStr(Integer(otheri1^))),'' ,0);

4237208

PS где-то я уже видел это число
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 25.01.2011, 21:42   #53
Рыцарь
 
Аватар для destructor
 
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
destructor на пути к лучшему
По умолчанию

Цитата:
Сообщение от supernewbie Посмотреть сообщение
messagebox(0,PChar(IntToStr(Integer(otheri1^))),'' ,0);
:facepalm:
__________________
Шожиделать.. ботить хочется..
destructor вне форума   Ответить с цитированием
За это сообщение destructor нажился спасибкой от:
Старый 25.01.2011, 21:44   #54
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

че с ним не так))
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 25.01.2011, 21:50   #55
Рыцарь
 
Аватар для destructor
 
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
destructor на пути к лучшему
По умолчанию

весь код функции покажи
__________________
Шожиделать.. ботить хочется..
destructor вне форума   Ответить с цитированием
За это сообщение destructor нажился спасибкой от:
Старый 25.01.2011, 21:51   #56
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

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.
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 25.01.2011, 21:54   #57
Рыцарь
 
Аватар для destructor
 
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
destructor на пути к лучшему
По умолчанию

Код:
procedure MyProc;
var //учимся НЕ юзать глобальные переменные
   adr:^pointer;
   objaddr:pointer;

begin
  adr:=getmodulehandle('project25.exe') + $A798;
  obaddr:=adr^;

  messagebox(0,PChar(IntToHex(obaddr)),'',0);
end;
помоему так
__________________
Шожиделать.. ботить хочется..
destructor вне форума   Ответить с цитированием
За это сообщение destructor нажился спасибкой от:
Старый 25.01.2011, 21:56   #58
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

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.
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
За это сообщение alexteam нажился спасибкой от:
Старый 25.01.2011, 21:56   #59
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

getmodulehandle возвращает кардинал же
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 25.01.2011, 21:59   #60
Рыцарь
 
Аватар для destructor
 
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
destructor на пути к лучшему
По умолчанию

Цитата:
Сообщение от supernewbie Посмотреть сообщение
кардинал же
это адрес начала твоего приложения в памяти
приведение типов гугли
__________________
Шожиделать.. ботить хочется..
destructor вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 03:35.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!