Вверх ↑
Этот топик читают: Гость
Ответов: 1341
Рейтинг: 31
#1: 2020-03-15 16:50:16 ЛС | профиль | цитата
Не понимаю как заставить этот кусок работать с 8-ми байтовыми адресами, пробовал менять тип данных на Int64, а он магическим образом режет адрес (было ACBC12FFFFFF, стало 12FFFFFF)

пробовал собирать и на Delphi и на FPC64, одно и тоже

Add(MainForm,2953706,112,98)
{
Width=322
Height=409
Caption=""
Position=1
Point(Handle)
}
Add(Button,16760750,203,245)
{
Left=20
Top=90
Width=105
Caption="Region info"
link(onClick,1363106:doEvent1,[])
}
Add(Edit,8498475,336,154)
{
Left=20
Top=60
Width=95
Text="848300015616"
}
Add(InlineCode,13372217,294,259)
{
WorkPoints=#9:doGetInfo|
EventPoints=#9:onGetInfo|
VarPoints=#11:BaseAddress|10:RegionSize|11:RegionState|13:RegionProtect|9:AllocBase|12:AllocProtect|
DataPoints=#6:ProcID|7:Address|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses Windows,kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|38: FMemInfo: TMemoryBasicInformation;|9: public|42: ProcID, Address, onGetInfo: THI_Event;|53: procedure doGetInfo(var _Data:TData; Index:word);|4: |59: procedure BaseAddress(var _Data: TData; Index: Word);|58: procedure RegionSize(var _Data: TData; Index: Word);|59: procedure RegionState(var _Data: TData; Index: Word);|61: procedure RegionProtect(var _Data: TData; Index: Word);|57: procedure AllocBase(var _Data: TData; Index: Word);|60: procedure AllocProtect(var _Data: TData; Index: Word);|5: end;|0:|0:|4:type|55: PMemoryBasicInformation64 = ^TMemoryBasicInformation;|38: _MEMORY_BASIC_INFORMATION64 = record|24: BaseAddress : Int64;|27: AllocationBase : Int64;|30: AllocationProtect : DWORD;|23: RegionSize : Int64;|18: State : DWORD;|20: Protect : DWORD;|6: end;|0:|0:|0:|14:implementation|0:|0:|0:|32:procedure THiAsmClass.doGetInfo;|4:var |15: Pid: Integer;|17: HProc: THandle;|14: Adr: String;|10: ad: I64;|0:|0:|5:begin|0:|36: Pid := ReadInteger(_Data, ProcID);|36: Adr := ReadString(_Data, Address);|23: ad := Str2Int64(adr);|0:|2: |57: FillChar(FMemInfo, SizeOf(TMemoryBasicInformation), 0);|64: HProc := OpenProcess(PROCESS_QUERY_INFORMATION, False, Pid); |88: VirtualQueryEx(HProc, Pointer(Int64(Ad)), FMemInfo, SizeOf(TMemoryBasicInformation));|26: _hi_onEvent(onGetInfo)|8:end; |34:procedure THiAsmClass.BaseAddress;|5:begin|48: dtInteger(_Data, Int64(FMemInfo.BaseAddress));|4:end;|0:|33:procedure THiAsmClass.RegionSize;|5:begin|40: dtInteger(_Data, FMemInfo.RegionSize);|4:end;|0:|34:procedure THiAsmClass.RegionState;|5:begin|35: dtInteger(_Data, FMemInfo.State);|4:end;|0:|36:procedure THiAsmClass.RegionProtect;|5:begin|37: dtInteger(_Data, FMemInfo.Protect);|4:end;|0:|0:|32:procedure THiAsmClass.AllocBase;|5:begin|53: dtInteger(_Data, Integer(FMemInfo.AllocationBase));|4:end;|0:|35:procedure THiAsmClass.AllocProtect;|5:begin|47: dtInteger(_Data, FMemInfo.AllocationProtect);|4:end;|0:|4:end.|
link(onGetInfo,9271981:doString,[(360,265)(360,383)(282,383)(282,328)])
link(ProcID,14056472:Text,[(300,223)(293,223)])
link(Address,8498475:Text,[(307,237)(342,237)])
}
Add(FormatStr,9271981,294,322)
{
DataCount=6
Mask="BaseAddress: %1\r\nRegionSize: %2\r\nRegionState: %3\r\nRegionProtect: %4\r\nAllocBase: %5\r\nAllocProtect: %6"
link(onFString,12799375:doAdd,[(379,328)(379,244)])
link(Str1,13372217:BaseAddress,[])
link(Str2,13372217:RegionSize,[])
link(Str3,13372217:RegionState,[])
link(Str4,13372217:RegionProtect,[])
link(Str5,13372217:AllocBase,[])
link(Str6,13372217:AllocProtect,[])
}
Add(Memo,12799375,420,238)
{
Left=10
Top=120
Width=280
Height=220
ScrollBars=3
}
Add(Hub,1363106,252,245)
{
link(onEvent1,12799375:doClear,[])
link(onEvent2,13372217:doGetInfo,[(280,258)(280,265)])
}
Add(Edit,14056472,287,154)
{
Left=130
Top=60
Text="5080"
}

Редактировалось 1 раз(а), последний 2020-03-15 18:20:17
карма: 2

0
vip
#1.1контекстная реклама от партнеров
1
Сообщение
...
Прикрепленные файлы
(файлы не залиты)