RE FORUM

[REVERSE ENGINEERING] => Programming => Topic started by: Conflict on November 20, 2005, 08:20:27 PM

Title: TASM -> Delphi 2
Post 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?
Code: [Select]
jmp   $-2
nedelejte ze neumite programovat a reknete mi to (a delejte :p )
Title: TASM -> Delphi 2
Post by: Conflict on November 21, 2005, 08:39:49 PM
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:
Title: TASM -> Delphi 2
Post by: CZerezpiCZkin on November 21, 2005, 10:29:05 PM
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.
Title: TASM -> Delphi 2
Post by: Z!L0G80 on November 21, 2005, 10:40:32 PM
Quote from: Conflict
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:
Title: TASM -> Delphi 2
Post by: Conflict on November 22, 2005, 10:01:26 PM
Quote from: Z!L0G80
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:
Title: TASM -> Delphi 2
Post by: Z!L0G80 on November 23, 2005, 12:24:00 AM
Quote from: Conflict
co je to za blby otazky? :confused:  :D
kdybys mi radsi poradil a prestal pyskovat :mad:

protoze sem moderator blbecku  :D
Title: TASM -> Delphi 2
Post by: Conflict on December 16, 2005, 09:54:45 PM
Abych to dokoncil, tak tu je reseni.

Mame vice moznosti zapisu:
1.
Code: [Select]
db 0EBh; db -2
2.
Code: [Select]
dw 0FEEBh
Me se vic libi ten prvni zpusob, je totiz na prvni pohled videt co to dela.
Title: Re: TASM -> Delphi 2
Post by: Conflict on May 10, 2007, 10:18:33 AM
Prisel sem na pro me novou vec v Delphi (D7).
Code: [Select]
 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]
Title: Re: TASM -> Delphi 2
Post by: eraser on May 10, 2007, 01:52:30 PM
Otázka priamo na teba. Pou?íva? zásadne vkladaný ASM do Delphi alebo vyu?íva? i linkovanie?
Title: Re: TASM -> Delphi 2
Post by: Conflict on May 10, 2007, 03:14:31 PM
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.
Title: Re: TASM -> Delphi 2
Post by: eraser on May 10, 2007, 03:27:05 PM
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?
Title: Re: TASM -> Delphi 2
Post by: Conflict on May 10, 2007, 04:45:46 PM
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.
Title: Re: TASM -> Delphi 2
Post by: eraser on May 10, 2007, 06:08:19 PM
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.
Code: [Select]

   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.
Code: [Select]

   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]
Title: Re: TASM -> Delphi 2
Post by: Conflict on May 10, 2007, 08:01:55 PM
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.
Title: Re: TASM -> Delphi 2
Post by: eraser on May 10, 2007, 08:26:58 PM
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.