RE FORUM

[REVERSE ENGINEERING] => Programming => Topic started by: Conflict on November 12, 2005, 08:42:20 PM

Title: TASM -> Delphi
Post by: Conflict on November 12, 2005, 08:42:20 PM
zdarec,
po dlouhe dobe sem prispeju i ja, a hned problemem(muzete bejt radi ze Vas Konfliktek vubec navstivil :D ).

jde tato cast kodu v TASM prevest do Delphi 7? jestli jde, tak pls reseni.
Code: [Select]
   mov edi, pNT_header
    assume edi : ptr IMAGE_NT_HEADERS

    push [edi].IMAGE_NT_HEADERS.NumberOfSections
    pop NumSec

jde o to, ze v Delphi 7 neni instrukce assume podporovana, nebo aspon u me neni
vim, ze pouzivat ASM v Delphi je tezkopadny, ale ja ten pascal furt nak nechapu
stejne me Borland nastval, ze nedal do svych produktu plnou podporu TASM. v D7 to jeste ujde, ale CBuilder6 je naprosta katastrofa. tim se u me Borland fakt vysvihl, ale tak o 5 pater dolu.

dikec
Title: TASM -> Delphi
Post by: Z!L0G80 on November 12, 2005, 09:25:51 PM
assume je ekvivalent instrukce mov nebo lea
Title: TASM -> Delphi
Post by: Conflict on November 13, 2005, 12:57:32 AM
fakt?
a jak udelat, abych se pak mohl odkazat na vlastnost IMAGE_NT_HEADERS pomoci "."?

tohle proste potrebuju vymacknout z delphi
push [edi].IMAGE_NT_HEADERS.NumberOfSections
Title: TASM -> Delphi
Post by: Conflict on November 13, 2005, 09:45:30 AM
takze sem to tak nak (ne)vyresil

Code: [Select]
procedure TForm1.FormCreate(Sender: TObject);
var
   NTheader : Image_Nt_Headers;
   SecNum : word;
   hModule : integer;
begin
   hModule := GetModuleHandle(nil);
   asm
   pushad
   mov   eax, hModule
   add   eax, [eax+3ch]                                 // EAX = adresa PE header
   mov   dword ptr[NTheader], eax
   mov   ebx, dword ptr[NTheader.Signature]             // ?? je to divny ??
   mov   cx, word ptr[NTheader.FileHeader.Machine]      // ?? nejsu si jistej ??
   push  word ptr[NTheader.FileHeader.NumberOfSections] // ?? nejsu si jistej ??
   pop   SecNum
   popad
   end;
   ShowMessage('NumberOfSections = ' + IntToStr(SecNum));
end;

takze ASSUME sem zkusil nahradit timhle
Code: [Select]
mov   dword ptr[NTheader], eax
ale nefunguje to, tak jak chcu
Jak mam kurva nahradit to zapraskany ASSUME ?????

ja to snad nevyresim
Title: TASM -> Delphi
Post by: Conflict on November 13, 2005, 10:50:41 AM
kurvaaa mam to, ja vedel ze to dam
podelim se s vama(ja uz su holt takovej :rolleyes: )
tak tady je nahrada ASSUME, kdo by sakra rekl, ze to bude tak jednoduchy
Code: [Select]
procedure TForm1.FormCreate(Sender: TObject);
var
   SecNum : word;
   hModule : integer;
begin
   hModule := GetModuleHandle(nil);
   asm
   pushad
   mov   eax, hModule
   add   eax, [eax+3ch]
   mov   edi, eax
   mov   ebx, dword ptr[edi.Image_Nt_Headers.Signature]
   push  word ptr[edi.Image_Nt_Headers.FileHeader.NumberOfSections]
   pop   SecNum
   popad
   end;
   ShowMessage('NumberOfSections = ' + IntToStr(SecNum));
end;

Ted uz to ukazuje pocet Sekci = 8 => OK

Tak ja mizim, ale nebojte, jen na par mesicu. Pak se zas ozvu s nakym problemem, kterej si zas sam vyresim(jak jinak).