Author Topic: TASM -> Delphi 2  (Read 1279 times)

Conflict

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

Conflict

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

CZerezpiCZkin

  • Junior Member
  • ***
  • Posts: 181
TASM -> Delphi 2
« Reply #2 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.
CZpCZ

Z!L0G80

  • -=[t4C]=-
  • Senior Member
  • ****
  • Posts: 280
TASM -> Delphi 2
« Reply #3 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:
-= SmrT SiGNaTuRaM !!! =-

Conflict

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

Z!L0G80

  • -=[t4C]=-
  • Senior Member
  • ****
  • Posts: 280
TASM -> Delphi 2
« Reply #5 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
-= SmrT SiGNaTuRaM !!! =-

Conflict

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

Conflict

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

eraser

  • repe cmpsb
  • Senior Member
  • ****
  • Posts: 268
  • Kill malware!
Re: TASM -> Delphi 2
« Reply #8 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?
th3 r341 f4!1ur3 !5 wh3n y0u d0n't 134rn 4nyth!n6 fr0m 4ny 6!v3n 5!tu4t!0n
the real failure is when you don't learn anything from any given situation

Conflict

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

eraser

  • repe cmpsb
  • Senior Member
  • ****
  • Posts: 268
  • Kill malware!
Re: TASM -> Delphi 2
« Reply #10 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?
th3 r341 f4!1ur3 !5 wh3n y0u d0n't 134rn 4nyth!n6 fr0m 4ny 6!v3n 5!tu4t!0n
the real failure is when you don't learn anything from any given situation

Conflict

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

eraser

  • repe cmpsb
  • Senior Member
  • ****
  • Posts: 268
  • Kill malware!
Re: TASM -> Delphi 2
« Reply #12 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]
« Last Edit: May 10, 2007, 08:32:15 PM by eraser »
th3 r341 f4!1ur3 !5 wh3n y0u d0n't 134rn 4nyth!n6 fr0m 4ny 6!v3n 5!tu4t!0n
the real failure is when you don't learn anything from any given situation

Conflict

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

eraser

  • repe cmpsb
  • Senior Member
  • ****
  • Posts: 268
  • Kill malware!
Re: TASM -> Delphi 2
« Reply #14 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.
th3 r341 f4!1ur3 !5 wh3n y0u d0n't 134rn 4nyth!n6 fr0m 4ny 6!v3n 5!tu4t!0n
the real failure is when you don't learn anything from any given situation