RE FORUM
[REVERSE ENGINEERING] => Programming => Topic started by: Conflict on November 20, 2005, 08:20:27 PM
-
zdarec,
predem se omlouvam, ze zas votravuju :D
a taky se omlouvam, ze se to zas tyka ASM v delphi :D
jak se da tento kod v TASM napsat v Delphi?
jmp $-2
nedelejte ze neumite programovat a reknete mi to (a delejte :p )
-
furt nic?????
no tak lidi, nestvi te me.
hodne z vas dela v delphi, v jednom kuse civite do debuggeru a nejste mi schopni odpovedet? :mad:
-
Sorry, sice v Delphi robim, ale s vkladanym assemblerom nemam skusenosti... (Na to pouzivam MASM) Ale vyskusaj Delphi forum na builderi.cz, tam mi zatial vzdy pomohli, ked som potreboval.
-
furt nic?????
no tak lidi, nestvi te me.
hodne z vas dela v delphi, v jednom kuse civite do debuggeru a nejste mi schopni odpovedet? :mad:
co tady rves ? a proc kvuli tomu zakladas novy thread? :confused:
-
co tady rves ? a proc kvuli tomu zakladas novy thread? :confused:
co je to za blby otazky? :confused: :D
kdybys mi radsi poradil a prestal pyskovat :mad:
-
co je to za blby otazky? :confused: :D
kdybys mi radsi poradil a prestal pyskovat :mad:
protoze sem moderator blbecku :D
-
Abych to dokoncil, tak tu je reseni.
Mame vice moznosti zapisu:
1.db 0EBh; db -2
2.dw 0FEEBh
Me se vic libi ten prvni zpusob, je totiz na prvni pohled videt co to dela.
-
Prisel sem na pro me novou vec v Delphi (D7).
call @next
@next:
pop ebp
lea eax, @next
sub ebp, eax
[B]mov eax, [ebp+@next2][/B]
add eax, ebp
jmp eax
nop
nop
[B]@next2: dd @end[/B] // do navesti se da ulozit adresa jineho navesti
nop
nop
[B]@end:[/B]
-
Otázka priamo na teba. Pou?íva? zásadne vkladaný ASM do Delphi alebo vyu?íva? i linkovanie?
-
Jejda, to je otazka primo na telo.
Podle toho co ma byt vysledkem. V pripade Dropper_Creator mohl bejt pouzit jen inline assembler. SHADeR je taky jenom inline.
Linkovanej sem pouzil asi jen jednou. A stejne sem musel upravovat samotnej zdrojak v TASM, protoze tam byli naky cachry s registrama.
-
Tak?e jednoznačne prevláda ten inline. A jak to vidí? s podporou, predpokladám, ?e v nových Delphi je u? dosť in?trukcií známych, tak?e netreba "opcodovať". Čo bol vlastne i dôvod, resp. uvádzaná výhoda linkovania voči inline.
Jo a e?te podotázka, prečo Dropper_Creator mohol pou?ívať iba inline assembler?
-
Assembler v delphi se menuje BASM. Ma mnoho omezeni viz. predchozi thready, ale neprisel sem na istrukci kterou by BASM nepodporoval. Jedna z veci kterou BASM nepodporuje a to me dost stve sou makra. Treba kouzelne vyreseny SEH od 29A je vyresenej pomoci maker. Problem by mel bejt vyresen v nove verzi Delphi 2007, mozna to je uz v 2006. Hodne problemu s assemblerem nastava, kdyz sou spatne nastaveny Options v delphi.
Dropper_Creator se jako packer pripoji k existujicimu exe a potrebuje mit pod kontrolou svoji datovou oblast. Mno, a kdyz prilinkujes do delphi z .obj public proceduru, tak delphi automaticky hodi promenny do datove sekce a kod do code sekce => nemas pod kontrolou promenny.
-
Jo, o tom som počul, len som nevedel, ako to je s podporou ASM v nov?ích verziách. Ale vyzerá to do pohody a pokiaľ hovorí?, ?e by mali byť i makrá, tak to bude vá?ne sila. :cool:
Neviem si presne predstaviť, čo Delphi robia s prilinkovanou funkciou a najmä premennými, to by som musel od?kú?ať a vidieť. Ale aspoň chápem ten dôvod pou?iť inline.
OK, teraz k téme, resp. tvojemu ASM kódu, čo si sem nahodil. Som si to tro?ku omrkol.
Sa mi páči ten sofistikovaný "obfuscation", ktorý sa inak dá zapísať dvoma riadkami. :) Inak zjavne BASM automaticky pretypováva, preto?e napr. TASM hodí na riadok mov eax, [ebp+@next2] chybu Operand types do not match. S tým ulo?ením je to v ASM pohoda. V podstate ka?dý label je vlastne adresa typu DWORD. Ja mám rád ukladanie vlo?ených odkazov, resp. reťazcov. Vhodné miesta sú ka?dé nepodmienené skoky, resp. ulo?iť ich za nim. Napr.
jmp show_msgbox
db "[TiME 4 CRiME]",0
...
align 4
show_msgbox:
...
A e?te jeden parádny zápis pou?il napr. Hypno vo svojom CM18, taktie? som túto metódu videl v R!SCovom unSafeDisc-u.
call here
db "Ntdll.dll",0
... [COLOR=DimGray]; obfuscation code, etc.[/COLOR]
here:
call GetModuleHandle
[EDIT:chtel jsem to upravit do kodu ,ale rozhodil jsem ti to a pak uz nedal dohromady - tag to zkus sam - sorry a diky:) - llAmElliK]
[No problemo - eraser]
-
tak jasne ze to v TASM haze chybu, protoze potrebuje next jako promenou jejiz hodnotu pricte k ebp. takze bud bude next promenna a nebo pokud chces pouzit to navesti tak takhle mov eax, [ebp+offset next]
v delphi tenhle problem odpada. zkus napsat do bloku asm..end; promenou ktera bude obsahovat 1234h a druhou, ktera bude obsahovat 'ahoj'.
pak na to prijdes.
-
Ten zápis je tie? funkčný, tak ako i mov eax, dword ptr [ebp+next2] a k Delphi sa tak ľahko nedostanem, tak?e to asi neodskú?am, no ak by sa ti chcelo, mohol by si nejaké tie príklady popísať. Díkes.