Author Topic: TASM -> Delphi  (Read 646 times)

Conflict

  • g0d i5 just a stat1st1c
  • Senior Member
  • ****
  • Posts: 475
TASM -> Delphi
« 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

Z!L0G80

  • -=[t4C]=-
  • Senior Member
  • ****
  • Posts: 280
TASM -> Delphi
« Reply #1 on: November 12, 2005, 09:25:51 PM »
assume je ekvivalent instrukce mov nebo lea
-= SmrT SiGNaTuRaM !!! =-

Conflict

  • g0d i5 just a stat1st1c
  • Senior Member
  • ****
  • Posts: 475
TASM -> Delphi
« Reply #2 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

Conflict

  • g0d i5 just a stat1st1c
  • Senior Member
  • ****
  • Posts: 475
TASM -> Delphi
« Reply #3 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

Conflict

  • g0d i5 just a stat1st1c
  • Senior Member
  • ****
  • Posts: 475
TASM -> Delphi
« Reply #4 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).