Author Topic: bitmapa v assm  (Read 1390 times)

NeptuN

  • I'd be forever young
  • Junior Member
  • ***
  • Posts: 158
bitmapa v assm
« on: January 24, 2008, 06:48:04 AM »
nazdar, tak pisu to crackmecko ( rozhodl jsem se ho napsat v cistym assm, bude to lepe komentovatelny a udelam to pekne prehledne ), ale jsem trochu zmateny co se tyce nacitani bitmapy ( pres zdroje ), presneji, co se tyce API funkci a co delaji... nasel jsem jeden priklad ( ktery provadel animaci ( bitmapa se posunuje zleva doprava ), takze to osekavam, problem je, co nechat a co vyhodit, ze :D ). Tedy potrebuju pochopit, co jednotlive fce delaji, popripade jake pouzit, vychazim z API LoadBitmapA, ale co dal...?
Knowledges are powerful weapon

pr0p4g4nd4

  • [SCF]
  • Senior Member
  • ****
  • Posts: 429
Re: bitmapa v assm
« Reply #1 on: January 24, 2008, 01:27:25 PM »
No, takto.. Pre moje cme kt programujem ked mam volny cas mi ERASER spravil velmi pekne GUI code(v MASMe). Cize on by ti s tym vedel urcite pomoct.. Skus mu napisat na icq lebo tu na fore som ho uz dost dlho nevidel..

EDIT: Tu je par ukazok ako sa to da spravit:

Code: [Select]
http://canterwood.online.fr/click.php?url=shared%2Ftools%2FMASM32_keygen_template_v2.5-CW.zip

Code: [Select]
http://canterwood.online.fr/click.php?url=shared%2Ftools%2FCanter_Keygen_5.zip
« Last Edit: January 24, 2008, 02:07:01 PM by pr0p4g4nd4 »
Aký je rozdiel medzi mladým a starým chlapom?
Mladému behá piča po rozume, starému po byte...

Kto robí je robot, kto koktá je.. koktavý!

NeptuN

  • I'd be forever young
  • Junior Member
  • ***
  • Posts: 158
Re: bitmapa v assm
« Reply #2 on: January 24, 2008, 04:46:01 PM »
Super, dik za tipy :) .Jinak jsem se jeste jednou podival na iczeliona, a tentokrat jsem uz neco nasel  :D
Code: [Select]
http://win32assembly.online.fr/tut25.html
Pekne rozebrani jednotlivych funkci, k cemu to je dobry...
Kdyz jsem tu uz zalozil ten thread, tak to priblizim pro vsechny ( teda predevsim pro newbiky jako ja ;) ) :
1. LoadBitmap - pripravi bitmapu k pouziti v programu
2. GetDC - ziskam dc(=device content) toho myho formulare
3. CreateCompatibleDC - vytvorim "skryty" formular podobny tomu mymu a ziskam jeho dc
4. SelectObject - vykresli bitmapu na ten skryty formular ( sice fakt nechapu, jak prisli na nazev SelectObject...? )
5. BitBlt - prekresli z toho skryteho formulare na ten muj ( tenhle nazev jde taky mimo mne )
Knowledges are powerful weapon

eraser

  • repe cmpsb
  • Senior Member
  • ****
  • Posts: 268
  • Kill malware!
Re: bitmapa v assm
« Reply #3 on: January 24, 2008, 10:55:22 PM »
Quote from: pr0p4g4nd4
No, takto.. Pre moje cme kt programujem ked mam volny cas mi ERASER spravil velmi pekne GUI code(v MASMe).
V podstate ide o obrázky, tzn. potrebný je dialóg a tlačítka, samozrejme tlačítka majú dva stavy pre vykreslenie. Ďalej je tam scrollovací text a učorkovaná animácia. :)  No a klasikou zostáva prehrávanie hudby pomocou mfm. To je v?etko, čo ten GUI doká?e. Čisto len zdrojáky majú cez 40 kB ASM kódu. Ja by som to zverejnil, keď releasne? to tvoje crackme, čo povie??

Quote from: pr0p4g4nd4
tu na fore som ho uz dost dlho nevidel.
Heh, som sa tri tý?dne nedostal domov, kvôli debilkom, ktorí si myslia, ?e vývoj SW je podobné, ako hranie guličiek na pieskovisku.   :mad:  Od 7.1. do dneska, či?e 24.1. som nemal jediný den oddychu.
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

NeptuN

  • I'd be forever young
  • Junior Member
  • ***
  • Posts: 158
Re: bitmapa v assm
« Reply #4 on: January 25, 2008, 01:33:16 AM »
Tak jsem zas ( pro zmenu ) v haji - prestoze obrazek jsem si nacetl v pohodicce, vlastne vsechny prvky na formulari sou v pohode, problemem mi zustalo "prazdne" misto na virtualnim formulari ( ten, co pouzivam pro vykreslovani te bitmapy ). Zatimco obrazek se vyresli v poradku, misto, kde obrazek neni, je pruhledne. Ne ze by tento efekt musel nutne byt na skodu, ale do toho vstupniho easy cmecka bych ho radsi nedaval...
Nevite nekdo, v cem je zakopanej pes? Nevim, jestli je nutne vyplnovat celou plochu toho virtualniho formulare, nebo na to existuje nejakej trik ( == 1xAPI ) Pro uplnost prikladam moji obsluhu prekresleni:
Code: [Select]
WMPAINT:

PUSH OFFSET PS
PUSH DESKTOP_HWND
CALL BEGINPAINT@8
MOV MY_DC_HANDLE, EAX

PUSH MY_DC_HANDLE
CALL CREATECOMPATIBLEDC@4
MOV COMPATIBLE_DC_HANDLE, EAX
 
PUSH BMP_HANDLE
PUSH COMPATIBLE_DC_HANDLE
CALL SELECTOBJECT@8

PUSH OFFSET BMP_RECT
PUSH DESKTOP_HWND
CALL GETCLIENTRECT@8

PUSH SRCCOPY
PUSH 0
PUSH 0
PUSH COMPATIBLE_DC_HANDLE
PUSH BMP_RECT.BOTTOM
PUSH BMP_RECT.RIGHT
PUSH 0
PUSH 0
PUSH MY_DC_HANDLE
CALL BITBLT@36

PUSH COMPATIBLE_DC_HANDLE
CALL DELETEDC@4

PUSH OFFSET PS
PUSH DESKTOP_HWND
CALL ENDPAINT@8

MOV EAX, 0
JMP FINISH
Knowledges are powerful weapon

BlackRose

  • [CSCF]
  • Newbie
  • ***
  • Posts: 24
Re: bitmapa v assm
« Reply #5 on: January 25, 2008, 10:02:31 AM »
A nebylo by jednodussi nekreslit na formular ale na nejaky kontrol (napr label) ? Pri zprave wm_paint bys kotroloval, jestli je pro ten kontrol a proved pripadne prekopirovani bitmapy...

HypnotiX

  • [CSCF]
  • Newbie
  • ***
  • Posts: 43
Re: bitmapa v assm
« Reply #6 on: January 25, 2008, 05:25:57 PM »
Bud to udelas jak pise BlackRose, tj. ze si das na formular prvek image a jemu priradis bitmapu, nebo pomoci napriklad Shape prvku a obsluhy WM_PAINT tohoto prvku pomoci SetWindowLong viz priloha. Je to delane v RadAsm editoru.

pr0p4g4nd4

  • [SCF]
  • Senior Member
  • ****
  • Posts: 429
Re: bitmapa v assm
« Reply #7 on: January 28, 2008, 11:15:14 AM »
Quote from: eraser
Ja by som to zverejnil, keď releasne? to tvoje crackme, čo povie??

Samozrejme, nevidim v tom ziadny problem :)


Quote from: eraser
Heh, som sa tri tý?dne nedostal domov, kvôli debilkom, ktorí si myslia, ?e vývoj SW je podobné, ako hranie guličiek na pieskovisku.     Od 7.1. do dneska, či?e 24.1. som nemal jediný den oddychu.

To su svine. Dufam, ze ti aspom dobre platia za dobre vykonanu pracu :) ;)
Aký je rozdiel medzi mladým a starým chlapom?
Mladému behá piča po rozume, starému po byte...

Kto robí je robot, kto koktá je.. koktavý!

NeptuN

  • I'd be forever young
  • Junior Member
  • ***
  • Posts: 158
Re: bitmapa v assm
« Reply #8 on: January 30, 2008, 02:26:16 PM »
tak jsem aplikoval postup navrzeny BlackRose -em, bitmapu vykresluju na button ( ten je disabelnuty, takz pohoda ), jenze se mi problem presunul jinam  :mad:

ollym jsem zjistil, ze zprava WM_PAINT se posila pouze formulari, prvkum nikoliv, ty maj na to jine zpravy, konkretne buttony WM_CTLCOLORBTN o hodnote 135h, takze ten jsem odchytil, overil, jestli v LPARAM [EBP+14h] je handle toho spravnyho buttona a pokud ano, tak vykresluju tu bitmapu.

spustim a nic... olly mi prozradil, ze program opravdu vykona moji obsluhu ve spravnou chvili, jenze ta moje obsluha ( viz. vyse ) proste nic nedela...

tak jsem za fci BeginPaint dopsal GetDC, tedy do MY_DC_HANDLE ziskam hodnotu znovu, ale jinak - vuala! program NAPUL funguje, NAPUL ne... proste po prekryti jinym oknem nedojde v vykresleni. Nevykresli se ani po spusteni. Ale jakmile oknem cmecka vyjedu mimo obrazovku a zpet - vykresli se ( a to jeste ne sprave - vykresleni zacne od mista hranice obrazovky, takze obrazek je posunut ).

Proste nevim, co to ten program vyvadi...  :confused:  :mad:  :eek:
Knowledges are powerful weapon