Add(MainForm,14776695,161,84) { Point(Handle) } Add(InlineCode,9970704,308,133) { WorkPoints=#6:doOpen|6:doRead| EventPoints=#6:onOpen|6:onRead| DataPoints=#4:Addr|2:AP| Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses Windows,kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|29: ProcessHandle: THandle; |26: procedure CloseLinks;|9: public|10: Addr,|8: AP,|23: onRead: THI_Event;|23: onOpen: THI_Event;|34: destructor Destroy; override;|51: procedure doOpen(var _Data:TData; Index:word);|51: procedure doRead(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|0:|31:destructor THiAsmClass.Destroy;|5:begin|14: CloseLinks; |13: inherited; |4:end;|0:|33:procedure THiAsmClass.CloseLinks;|5:begin|29: CloseHandle(ProcessHandle);|4:end;|0:|29:procedure THiAsmClass.doOpen;|5:begin|56: if ProcessHandle <> 0 then CloseHandle(ProcessHandle);|100: ProcessHandle := OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ,False,ReadInteger(_data,AP));|49: if ProcessHandle <> 0 then _hi_OnEvent(onOpen);|4:end;|0:|29:procedure THiAsmClass.doRead;|4:var |19: BytesRead: DWORD;|12: Dest: I64;|5:begin|97: ReadProcessMemory(ProcessHandle,Pointer(Hex2Int(ReadString(_Data,Addr))), @Dest, 8, BytesRead);|64: _hi_OnEvent(onRead,Int2Hex(Dest.Hi, 8) + Int2Hex(Dest.Lo, 8));|4:end;|0:|4:end.| link(onOpen,9970704:doRead,[(362,139)(362,195)(296,195)(296,146)]) link(onRead,14532976:doAdd,[]) link(Addr,5852976:Value,[]) link(AP,16513190:ProcessID,[(321,124)(223,124)(223,177)(181,177)]) } Add(Memory,5852976,308,84) { Default=String(00417000) } Add(WinInfo,16513190,161,133) { Point(ProcessID) link(onWinInfo,9970704:doOpen,[]) link(Handle,14776695:Handle,[]) } Add(Memo,14532976,406,140) { Left=45 Top=30 Width=260 Height=205 } Add(Button,12686990,91,133) { Left=45 Top=245 link(onClick,16513190:doWinInfo,[]) }