RE FORUM
[REVERSE ENGINEERING] => Programming => Topic started by: pr0p4g4nd4 on May 06, 2008, 12:17:43 PM
-
Zdravim mladez,
potrebujem pomoct s jednym kodom. Konkretne mi ide o to aby som z c kodu dostal asm kod(tj dissam kod). Ide mi o tento kod:
case WM_MOVING:
long scrx, scry;
RECT * rect;
rect = (RECT *)lParam;
scrx = GetSystemMetrics(SM_CXSCREEN);
scry = GetSystemMetrics(SM_CYSCREEN);
if(rect->right > scrx)
OffsetRect(rect, scrx - rect->right, 0);
if(rect->bottom > scry)
OffsetRect(rect, 0, scry - rect->bottom);
if(rect->left < 0)
OffsetRect(rect, -rect->left, 0);
if(rect->top < 0)
OffsetRect(rect, 0, -rect->top);
return true;
-
Zdar.
Neviem, ci som pochopil o co ti ide. Ty chces ten kod prepisat do asm? O co konkretne ti ide - o pouzitie funkcie alebo o tu naslednu komparaciu a vyhodnotenie?
Ale skusim odpovedat, snad trafim to, co si chcel vediet...Musis na to ist zo strany funkcnosti. Zakladom je teda funkcia GetSystemMetrics - syntax si najdes v helpe:
http://msdn.microsoft.com/en-us/library/ms724385.aspx
http://msdn.microsoft.com/en-us/library/aa227571(VS.60).aspx
Tiez si tam najdes, co musis naskladat do zasobnika a aj co a kam ti funkcia vrati. Potom to uz len porovnavas medzi sebou (CMP alebo niektorym z dalsich sposobov...).
Staci tak?
-
NaMoving proc uses esi edi ecx edx ebx lParam:DWORD
mov ebx,dword ptr[lParam]
invoke GetSystemMetrics,SM_CXSCREEN
mov esi,eax
invoke GetSystemMetrics,SM_CYSCREEN
mov edi,eax
.if [ebx+RECT.right]>esi
mov eax,esi
sub eax,[ebx+RECT.right]
invoke OffsetRect,lParam,eax,0
.endif
.if [ebx+RECT.bottom]>edi
mov eax,edi
sub eax,[ebx+RECT.bottom]
invoke OffsetRect,lParam,0,eax
.endif
.if sdword ptr[ebx+RECT.left]<0
mov eax,[ebx+RECT.left]
neg eax
invoke OffsetRect,lParam,eax,0
.endif
.if sdword ptr[ebx+RECT.top]<0
mov eax,[ebx+RECT.top]
neg eax
invoke OffsetRect,lParam,0,eax
.endif
xor eax,eax
inc eax
ret
NaMoving endp
...
elseif uMsg==WM_MOVING
invoke NaMoving,lParam
...
Je to pro Masm
-
2CZpCZ: No ide mi o to aby mi okno v mojom malom asm projektiku zasekavalao na okraji obrazovky. V asm to potrebujem preto lebo ten projektik programujem v masme - a nie som schopny z toho c kodu dostat kod ktory by som bol schopny pouzit..
Som schopny rozoznat ake api sa tam pouzivaju ale kedze to robim v asm tak potrebujem vediet presne ako kod funguje.. Takze tak..
2HypnotiX: Krasne.. fenkju :)