RE FORUM
[REVERSE ENGINEERING] => Programming => Topic started 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.
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
-
assume je ekvivalent instrukce mov nebo lea
-
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
-
takze sem to tak nak (ne)vyresil
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
mov dword ptr[NTheader], eax
ale nefunguje to, tak jak chcu
Jak mam kurva nahradit to zapraskany ASSUME ?????
ja to snad nevyresim
-
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
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).