А где память под буфер? Хотябы
Убедись что функция вообще что нибудь читает.
| Код | procedure TForm1.Button1Click(Sender: TObject); var hProc, PID, numberRead : DWORD; hWnd : THandle; IpBuf :array[0..127]of widechar ; //256 байт i,j, len : integer; ipBase: ^dword; s, wname : string; begin wname:= edit1.Text; hWnd:=findwindow(nil,PChar(wname)); GetWindowThreadProcessId(hWnd, @PID); hProc:=OpenProcess(PROCESS_VM_READ, False, PID); cardinal(ipBase):=strtoint(edit2.Text); //Адрес по которому прочитать len := sizeof(IpBuf); fillchar(ipbuf,len,0); if not ReadProcessMemory(hProc, ipBase, @ipbuf, len, numberRead)then messagebox(0,'noread','',0); CloseHandle(hProc);
Memo1.Lines.Clear; for j:=0 to 15 do begin s:=inttohex(cardinal(ipBase)+j*16,8)+':'+^I; for i:=0 to 15 do if i=8 then s:=s+^i+inttohex(pbyte(cardinal(@ipbuf)+j*16+i)^,2)+' 'else s:=s+inttohex(pbyte(cardinal(@ipbuf)+j*16+i)^,2)+' '; memo1.Lines.Add(s); end;
end;
|
Для Блокнота по адресу $0100739D (адрес точки входа) Получишь
| Код | 0100739D: 6A 70 68 98 18 00 01 E8 BF 01 00 00 33 DB 53 8B 010073AD: 3D CC 10 00 01 FF D7 66 81 38 4D 5A 75 1F 8B 48 010073BD: 3C 03 C8 81 39 50 45 00 00 75 12 0F B7 41 18 3D 010073CD: 0B 01 00 00 74 1F 3D 0B 02 00 00 74 05 89 5D E4 010073DD: EB 27 83 B9 84 00 00 00 0E 76 F2 33 C0 39 99 F8 010073ED: 00 00 00 EB 0E 83 79 74 0E 76 E2 33 C0 39 99 E8 010073FD: 00 00 00 0F 95 C0 89 45 E4 89 5D FC 6A 02 FF 15 0100740D: 38 13 00 01 59 83 0D 9C AB 00 01 FF 83 0D A0 AB 0100741D: 00 01 FF FF 15 34 13 00 01 8B 0D B8 9A 00 01 89 0100742D: 08 FF 15 30 13 00 01 8B 0D B4 9A 00 01 89 08 A1 0100743D: 2C 13 00 01 8B 00 A3 A4 AB 00 01 E8 A7 01 00 00 0100744D: 39 1D 08 96 00 01 75 0C 68 F4 75 00 01 FF 15 28 0100745D: 13 00 01 59 E8 77 01 00 00 68 10 90 00 01 68 0C 0100746D: 90 00 01 E8 5D 01 00 00 A1 B0 9A 00 01 89 45 DC 0100747D: 8D 45 DC 50 FF 35 AC 9A 00 01 8D 45 D4 50 8D 45 0100748D: D0 50 8D 45 CC 50 FF 15 20 13 00 01 89 45 C8 68
|
Что соответствует
| Код | 0100739D EntryPoint: 0100739D 6A70 push 00000070h 0100739F 6898180001 push L01001898 010073A4 E8BF010000 call SUB_L01007568 010073A9 33DB xor ebx,ebx 010073AB 53 push ebx 010073AC 8B3DCC100001 mov edi,[KERNEL32.dll!GetModuleHandleA] 010073B2 FFD7 call edi 010073B4 6681384D5A cmp word ptr [eax],5A4Dh 010073B9 751F jnz L010073DA 010073BB 8B483C mov ecx,[eax+3Ch] 010073BE 03C8 add ecx,eax 010073C0 813950450000 cmp dword ptr [ecx],00004550h 010073C6 7512 jnz L010073DA 010073C8 0FB74118 movzx eax,[ecx+18h] 010073CC 3D0B010000 cmp eax,0000010Bh 010073D1 741F jz L010073F2 010073D3 3D0B020000 cmp eax,0000020Bh 010073D8 7405 jz L010073DF 010073DA L010073DA: 010073DA 895DE4 mov [ebp-1Ch],ebx 010073DD EB27 jmp L01007406 010073DF L010073DF: 010073DF 83B9840000000E cmp dword ptr [ecx+00000084h],0000000Eh 010073E6 76F2 jbe L010073DA 010073E8 33C0 xor eax,eax 010073EA 3999F8000000 cmp [ecx+000000F8h],ebx 010073F0 EB0E jmp L01007400 010073F2 L010073F2: 010073F2 8379740E cmp dword ptr [ecx+74h],0000000Eh 010073F6 76E2 jbe L010073DA 010073F8 33C0 xor eax,eax 010073FA 3999E8000000 cmp [ecx+000000E8h],ebx 01007400 L01007400: 01007400 0F95C0 setnz al 01007403 8945E4 mov [ebp-1Ch],eax 01007406 L01007406: 01007406 895DFC mov [ebp-04h],ebx 01007409 6A02 push 00000002h 0100740B FF1538130001 call [msvcrt.dll!__set_app_type] 01007411 59 pop ecx 01007412 830D9CAB0001FF or dword ptr [L0100AB9C],FFFFFFFFh 01007419 830DA0AB0001FF or dword ptr [L0100ABA0],FFFFFFFFh 01007420 FF1534130001 call [msvcrt.dll!__p__fmode] 01007426 8B0DB89A0001 mov ecx,[L01009AB8] 0100742C 8908 mov [eax],ecx 0100742E FF1530130001 call [msvcrt.dll!__p__commode] 01007434 8B0DB49A0001 mov ecx,[L01009AB4] 0100743A 8908 mov [eax],ecx 0100743C A12C130001 mov eax,[msvcrt.dll!_adjust_fdiv] 01007441 8B00 mov eax,[eax] 01007443 A3A4AB0001 mov [L0100ABA4],eax 01007448 E8A7010000 call SUB_L010075F4 0100744D 391D08960001 cmp [L01009608],ebx 01007453 750C jnz L01007461 01007455 68F4750001 push SUB_L010075F4 0100745A FF1528130001 call [msvcrt.dll!__setusermatherr] 01007460 59 pop ecx 01007461 L01007461: 01007461 E877010000 call SUB_L010075DD 01007466 6810900001 push L01009010 0100746B 680C900001 push L0100900C 01007470 E85D010000 call jmp_msvcrt.dll!_initterm 01007475 A1B09A0001 mov eax,[L01009AB0] 0100747A 8945DC mov [ebp-24h],eax 0100747D 8D45DC lea eax,[ebp-24h] 01007480 50 push eax 01007481 FF35AC9A0001 push [L01009AAC] 01007487 8D45D4 lea eax,[ebp-2Ch] 0100748A 50 push eax 0100748B 8D45D0 lea eax,[ebp-30h] 0100748E 50 push eax 0100748F 8D45CC lea eax,[ebp-34h] 01007492 50 push eax 01007493 FF1520130001 call [msvcrt.dll!__getmainargs] 01007499 8945C8 mov [ebp-38h],eax
|
|