Thema: Delphi Assembler -> HexCode

Einzelnen Beitrag anzeigen

brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#3

Re: Assembler -> HexCode

  Alt 16. Mai 2005, 15:26
ein call/jmp (e8, e9) ist relativ

d.h. du musst das vroher berechnen,

E8 = call, dann nen integer/cardinal für die distanz, wobei die berechnung zuadresse-vonadresse-5 ist

du musst auch noch die relocations alle fixen, bzw einfach keine benutzen

nen call bzw jump würdest könntest auch noch durch ne relocation fake jmp/call hinbekommen

Delphi-Quellcode:
mov eax, adresse
call eax
d.h. adresse würde dann bei deiner kompilierten exe in der relocation tabelle vorkommen, dann mussu net mehr nach den distance calls/jumps suchen

wenn du parameter über register übergibst kannste nen call/jmp auch so machen:

Delphi-Quellcode:
push adresse // unterfunktion oder jump
push @@ret1 // weglassen wenns nen jump sein soll, bei nem call brauchste das
ret
@@ret1:
du könntest aber auch alle funktionen die du benutzt in eine funktion auslagern dann brauchste dich eigentlich gar nicht mehr drum kümmern

Delphi-Quellcode:
procedure programstart; stdcall;
  procedure unterfunktion1(a,b: integer); stdcall;
  begin
  end;
  procedure unterfunktion2(a,b: integer); stdcall;
  begin
  end;
begin
  unterfunktion1(1,2);
  unterfunktion2(1,2);
end;
dann kopierste die ganze funktion in deine neue exe, aber auch hier musste noch die relcos zu den strings fixen
  Mit Zitat antworten Zitat