reversing/리버싱 코드 복원

04.Function_Quiz_01_01

grinidia 2025. 6. 11. 11:49

 


문제

어셈블리코드

 


문제풀이

00401000              /$  55              PUSH    EBP
00401001              |.  8BEC            MOV     EBP, ESP
00401003              |.  51              PUSH    ECX
00401004              |.  8B45 08         MOV     EAX, DWORD PTR SS:[EBP+8]                ;  04_02_01.<ModuleEntryPoint>
00401007              |.  0345 0C         ADD     EAX, DWORD PTR SS:[EBP+C]
0040100A              |.  8945 FC         MOV     DWORD PTR SS:[EBP-4], EAX
0040100D              |.  8BE5            MOV     ESP, EBP
0040100F              |.  5D              POP     EBP                                      ;  kernel32.7C816D4F
00401010              \.  C3              RETN
00401011              /$  55              PUSH    EBP
00401012              |.  8BEC            MOV     EBP, ESP
00401014              |.  83EC 08         SUB     ESP, 8
00401017              |.  C745 F8 0900000>MOV     DWORD PTR SS:[EBP-8], 9
0040101E              |.  8B45 F8         MOV     EAX, DWORD PTR SS:[EBP-8]                ;  kernel32.7C816D58
00401021              |.  83C0 02         ADD     EAX, 2
00401024              |.  8945 FC         MOV     DWORD PTR SS:[EBP-4], EAX
00401027              |.  8B4D FC         MOV     ECX, DWORD PTR SS:[EBP-4]
0040102A              |.  51              PUSH    ECX                                      ; /Arg2 = 0012FFB0
0040102B              |.  8B55 F8         MOV     EDX, DWORD PTR SS:[EBP-8]                ; |kernel32.7C816D58
0040102E              |.  52              PUSH    EDX                                      ; |Arg1 = 7C93EB94
0040102F              |.  E8 CCFFFFFF     CALL    04_02_01.00401000                        ; \04_02_01.00401000
00401034              |.  83C4 08         ADD     ESP, 8
00401037              |.  33C0            XOR     EAX, EAX
00401039              |.  8BE5            MOV     ESP, EBP
0040103B              |.  5D              POP     EBP                                      ;  kernel32.7C816D4F
0040103C              \.  C2 1000         RETN    10

 

#include <windows.h>

method(n1, n2)
{
	int n3 = n1 + n2;
}

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
	int n1 = 9;
    int n2 = n1 + 2;
    
    method(n1, n2);
    
    return 0;
}

설명이 필요하지 않을 정도의 쉬운 문제