RE FORUM
[REVERSE ENGINEERING] => Programming => Topic started by: Conflict on May 14, 2006, 06:31:07 PM
-
zdar zdar
Urcite ste si vsimli, ze ma Delphi hrozne omezenej assembler(BASM). A je hafo dobrych zdrojaku v TASM. Abych se pri jejich kradeni(teda kopirovani) nemusel votravovat prepisovanim do pascalu, musim je do Delphi vkladat pres .obj soubory. Googlil sem jak malej, abych zistil jak na to. Vsude popisovali jak se to dela v HLA a ze musim mit TASM v5.3 a jiny kecy. Zkusil sem tedy HLA, ale hazelo mi to naky chyby. Prosel sem co HLA vytvoril, hodne upravil, zjednodusil a vysledkem je funkcni implementace .obj do Delphi.
1) Vytvorime ASM2OBJ.asm s nasledujicim obsahem.
;ASM2OBJ.asm
.586p
.model flat, syscall
option noscoped
.data
db ?
.code
public setREG, checkREG ;je dulezity kompileru rict, ze nase fcn sou public
setREG proc near32
mov eax, 0ffh
ret
setREG endp
checkREG proc near32
cmp eax, 0ffh
mov eax, 0h
jnz exit
mov eax, 1h
exit:
ret
checkREG endp
end
setREG a checkREG sou funkce, ktery budem volat z Delphi. jejich obsah je jasny.
2) vytvorime ASM2OBJ.obj soubor z ASM2OBJ.asm pomoci prikazove radky tasm32 ASM2OBJ.asm
3) zdrojak v Delphi, ktery vola nase funkce
.
.
.
implementation
{$R *.dfm}
{$L ASM2OBJ.obj } // loadneme si nas .obj
procedure setREG; external; // urcime co z .obj chcem pouzit
function checkREG: boolean; external;
procedure TForm1.FormCreate(Sender: TObject);
var
s : string;
begin
s := 'tady si zastavte v olly';
asm
pushad
call setREG
popad
end;
if checkREG then ShowMessage('OK');
end;
.
.
.
Tot vse, ani to nebolelo.
btw: vite proc se nezobrazi hlaska "OK" ?? :rolleyes:
-
máte delat v c++ :)
-
delal sem v C. v hodne vyvojovych prostredich. a ve vsech je az na VC++ hroznej ASM. A abych te vyvedl z omylu, tak ASM ve VC++ taky neni zadna slast. taky ma svoje omezeni. Ale da se to cekat, vzdyt kdo dela v ASM?? jen par magoru a ti omezeni vzdycky nejak obejdou i kdyz je to pracny jako prase. Je ale pravda, ze sem jeste nevidel packer v delphi, hihi, ten by vypadal.
-
... kdo dela v ASM?? jen par magoru ...
podobne urazky si laskave nech :mad: taky ti nerikam jakej ses debil kdyz delas v takove sracce jako je delphi :confused:
-
Valim se pod stolem, tady to asi nekdo nepochopil. Heee HEEE hihiihi juchuu chuu :D . Postavte boxersky ring, z80 se chce poprat s celym svetem. Jako bych to videl.
"Jako prvni nastupuje Svet a jako druhy prichazi jeho vyzyvatel Z80"
"Ale nee co to vidim, Z80 dava rany pod paaaas."
"Svet si to nenechava libit a... a... a... ale neeee no fuuuj, to je ale humus."
"Kolem ringu litaj zuby, Z80 se kaci k zemi. 10,9,8, nema to cenu. Z80 je odnasen z ringu."
Takhle dopadnes. Neboj neni to tak hrozny. Behem mesice sem byl zdravej.
-
kdyby ses radsi misto navazeni se do nas magoru co delaj v asm venoval necemu lepsimu :D ... ehm. nech me premyslet :confused: ... jo uz vim naucil se programovat a anglicky a jeste se naucit s googlem by to chtelo ;)
-
zase nejakej Conflict?? :D
Peace susenky!
-
nez na to zapomenu, tak public nemusi bejt jenom fcn, ale i navesti
;ASM2OBJ.asm
public somecode
somecode:
xor eax, eax
mov eax, 1
add eax, 1
ret
nezapomente na instrukci ret pri ukonceni behu kodu