首页
社区
课程
招聘
[分享]入门级crackme
发表于: 2012-2-23 16:53 9702

[分享]入门级crackme

2012-2-23 16:53
9702

一个入门级的crackme 。 要求发成功爆破截图。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 6
支持
分享
最新回复 (10)
雪    币: 3832
活跃值: (4397)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
2
强烈要求集体来BS独头蒜这个250,写个crackme也这么250

200  和 300 是初值。

x=200+50=300-50=250

================================================

00401053  |.  C745 F8 C8000>mov     dword ptr [ebp-8], 0C8
0040105A  |.  C745 F4 2C010>mov     dword ptr [ebp-C], 12C
00401061  |.  8B4D FC       mov     ecx, dword ptr [ebp-4]           ;  输入的数值
00401064  |.  034D F8       add     ecx, dword ptr [ebp-8]
00401067  |.  894D F0       mov     dword ptr [ebp-10], ecx
0040106A  |.  8B55 F8       mov     edx, dword ptr [ebp-8]
0040106D  |.  0355 F4       add     edx, dword ptr [ebp-C]
00401070  |.  8955 EC       mov     dword ptr [ebp-14], edx
00401073  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
00401076  |.  0345 F4       add     eax, dword ptr [ebp-C]
00401079  |.  8945 E8       mov     dword ptr [ebp-18], eax
0040107C  |.  8B4D F0       mov     ecx, dword ptr [ebp-10]
0040107F  |.  83C1 32       add     ecx, 32                          ;  +32
00401082  |.  894D F0       mov     dword ptr [ebp-10], ecx
00401085  |.  8B55 E8       mov     edx, dword ptr [ebp-18]
00401088  |.  83EA 32       sub     edx, 32                          ;  -32
0040108B  |.  8955 E8       mov     dword ptr [ebp-18], edx
0040108E  |.  C745 E4 00000>mov     dword ptr [ebp-1C], 0
00401095  |.  C645 E0 4B    mov     byte ptr [ebp-20], 4B
00401099  |.  C645 DC 4E    mov     byte ptr [ebp-24], 4E
0040109D      8B45 F8       mov     eax, dword ptr [ebp-8]
004010A0  |.  3B45 F4       cmp     eax, dword ptr [ebp-C]
004010A3  |.  75 0D         jnz     short 004010B2
004010A5  |.  68 38704200   push    00427038                         ; /NO
004010AA  |.  E8 61020000   call    00401310                         ; \1.00401310
004010AF  |.  83C4 04       add     esp, 4
004010B2  |>  50            push    eax
004010B3  |.  58            pop     eax
004010B4  |.  51            push    ecx
004010B5  |.  59            pop     ecx
004010B6  |.  B8 64000000   mov     eax, 64
004010BB  |.  05 C8000000   add     eax, 0C8
004010C0  |.  2D E6000000   sub     eax, 0E6
004010C5  |.  83C0 03       add     eax, 3
004010C8  |.  BB 04000000   mov     ebx, 4
004010CD  |.  03C3          add     eax, ebx
004010CF  |.  33C9          xor     ecx, ecx
004010D1  |.  85C9          test    ecx, ecx
004010D3  |.  74 0D         je      short 004010E2
004010D5  |.  68 34704200   push    00427034                         ; /OK
004010DA  |.  E8 31020000   call    00401310                         ; \1.00401310
004010DF  |.  83C4 04       add     esp, 4
004010E2  |>  03C3          add     eax, ebx
004010E4  |.  BB 0A000000   mov     ebx, 0A
004010E9  |.  40            inc     eax
004010EA  |.  43            inc     ebx
004010EB  |.  90            nop
004010EC  |.  90            nop
004010ED  |.  90            nop
004010EE  |.  83C0 0A       add     eax, 0A
004010F1  |.  8B55 F0       mov     edx, dword ptr [ebp-10]
004010F4  |.  3B55 EC       cmp     edx, dword ptr [ebp-14]
004010F7  |.  75 28         jnz     short 00401121
004010F9  |.  8B45 F0       mov     eax, dword ptr [ebp-10]
004010FC  |.  3B45 E8       cmp     eax, dword ptr [ebp-18]
004010FF  |.  75 20         jnz     short 00401121
00401101  |.  8B4D EC       mov     ecx, dword ptr [ebp-14]
00401104  |.  3B4D E8       cmp     ecx, dword ptr [ebp-18]
00401107  |.  75 18         jnz     short 00401121
00401109  |.  0FBE55 E0     movsx   edx, byte ptr [ebp-20]
0040110D  |.  52            push    edx                              ; /Arg3
0040110E  |.  8B45 E4       mov     eax, dword ptr [ebp-1C]          ; |
00401111  |.  50            push    eax                              ; |Arg2
00401112  |.  68 2C704200   push    0042702C                         ; |\t%d%c\t
00401117  |.  E8 F4010000   call    00401310                         ; \1.00401310
0040111C  |.  83C4 0C       add     esp, 0C
0040111F  |.  EB 16         jmp     short 00401137
00401121  |>  8B4D E4       mov     ecx, dword ptr [ebp-1C]
00401124  |.  51            push    ecx                              ; /Arg3
00401125  |.  0FBE55 DC     movsx   edx, byte ptr [ebp-24]           ; |
00401129  |.  52            push    edx                              ; |Arg2
0040112A  |.  68 24704200   push    00427024                         ; |\t%c%d\t
0040112F  |.  E8 DC010000   call    00401310                         ; \1.00401310
00401134  |.  83C4 0C       add     esp, 0C
00401137  |>  68 1C704200   push    0042701C                         ; /pause
0040113C  |.  E8 5F000000   call    004011A0                         ; \1.004011A0
00401141  |.  83C4 04       add     esp, 4
00401144  |.  5F            pop     edi
00401145  |.  5E            pop     esi
00401146  |.  5B            pop     ebx
00401147  |.  83C4 64       add     esp, 64
0040114A  |.  3BEC          cmp     ebp, esp
0040114C  |.  E8 3F020000   call    00401390
00401151  |.  8BE5          mov     esp, ebp
00401153  |.  5D            pop     ebp
00401154  \.  C3            retn
上传的附件:
  • 1.jpg (29.64kb,777次下载)
2012-2-23 17:24
0
雪    币: 136
活跃值: (1525)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
3
前排围观
2012-2-23 17:27
0
雪    币: 11
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
"强烈要求集体来BS独头蒜这个250,写个crackme也这么250 "

谁敢第二个说我250?
2012-2-23 17:49
0
雪    币: 697
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
哈哈,牛X,哈哈
2012-2-23 18:53
0
雪    币: 115
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
#include <stdio.h>
#include <stdlib.h>

void main()
{
        int var4,var8,varc,var10,var14,var18,var1c;
        char var20,var24;

        printf("\t\t\t\t独头蒜 crackme01 \n");
        printf("请输入密码:(3位数字)");
        scanf("%d", &var4);
        var8=200;
        varc=300;
        var10=var4+var8;
        var14=var8+varc;
        var18=varc+var4;
        var10+=50;
        var18-=50;
        var1c=0;
        var20='K';
        var24='N';
        if(var8==varc)
        {
                printf("NO");
        }

        //干扰开始。。。
        _asm{
                push        eax
                pop                eax
                push        ecx
                pop                ecx
                mov                eax,100
                add                eax,200
                mov                ebx,4
                add                eax,ebx
                xor                ecx,ecx
                test        ecx,ecx
                jz                loc
        }
                printf("OK");
        _asm{
loc:
                add                eax,ebx
                mov                ebx,10
                inc                eax
                inc                ebx
                nop
                nop
                nop
                add                eax,10
        }
        //干扰结束。。。

        if(var10==var14 && var10==var18 && var14==var18)
        {
                printf("\t%d%c\t", var1c, var20);
        }else
        {
                printf("\t%c%d\t", var24, var1c);
        }
        system("pause");
}
2012-2-24 22:30
0
雪    币: 49
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
本人菜鸟,刚入门几天,这是第一个弄出来的crackMe,所以很happy呀,就发出来得瑟一下
要是有错误的话还望指正

00401010  |> \55                     PUSH EBP
00401011  |.  8BEC                  MOV EBP,ESP
00401013  |.  83EC 64             SUB ESP,64
00401016  |.  53                       PUSH EBX
00401017  |.  56                       PUSH ESI
00401018  |.  57                       PUSH EDI
00401019  |.  8D7D 9C             LEA EDI,DWORD PTR SS:[EBP-64]
0040101C  |.  B9 19000000     MOV ECX,19
00401021  |.  B8 CCCCCCCC   MOV EAX,CCCCCCCC
00401026  |.  F3:AB         REP STOS DWORD PTR ES:[EDI]
//上面的代码就是建立新的栈帧,保存可能用到的寄存器,int3填充申请的栈空间,所以应该是debug版的
00401028  |.  68 B8814200   PUSH 1.004281B8                          ; /Arg1 = 004281B8
0040102D  |.  E8 DE020000   CALL 1.00401310                          ; \1.00401310
00401032  |.  83C4 04       ADD ESP,4
//打印出第一行那个独头蒜
00401035  |.  68 40704200   PUSH 1.00427040                          ; /Arg1 = 00427040
0040103A  |.  E8 D1020000   CALL 1.00401310                          ; \1.00401310
0040103F  |.  83C4 04       ADD ESP,4
//打印第二行的输入提示
00401042  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
00401045  |.  50            PUSH EAX                                 ; /Arg2
00401046  |.  68 3C704200   PUSH 1.0042703C                          ; |Arg1 = 0042703C ASCII "%d"
0040104B  |.  E8 60020000   CALL 1.004012B0                          ; \1.004012B0
00401050  |.  83C4 08       ADD ESP,8
//调用scanf函数接受输入的密码
//下面的代码就是主要的部分了,有很多变量,可以把EBP-4命名为var4,按此则有

00401053  |.  C745 F8 C8000>MOV DWORD PTR SS:[EBP-8],0C8
//var8 = 200(十进制,下同)

0040105A  |.  C745 F4 2C010>MOV DWORD PTR SS:[EBP-C],12C  
//varc = 300
00401061  |.  8B4D FC       MOV ECX,DWORD PTR SS:[EBP-4]  
//var4是输入的密码,不妨设为X

00401064  |.  034D F8       ADD ECX,DWORD PTR SS:[EBP-8]  
00401067  |.  894D F0       MOV DWORD PTR SS:[EBP-10],ECX
//var10 = var4+var8 = x+200

0040106A  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]  
0040106D  |.  0355 F4       ADD EDX,DWORD PTR SS:[EBP-C]
00401070  |.  8955 EC       MOV DWORD PTR SS:[EBP-14],EDX
//var14 = var8+varc = 500

00401073  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]  
00401076  |.  0345 F4       ADD EAX,DWORD PTR SS:[EBP-C]
00401079  |.  8945 E8       MOV DWORD PTR SS:[EBP-18],EAX
//var18 = var4+varc = x+300

0040107C  |.  8B4D F0       MOV ECX,DWORD PTR SS:[EBP-10]
0040107F  |.  83C1 32       ADD ECX,32
00401082  |.  894D F0       MOV DWORD PTR SS:[EBP-10],ECX
//var10 = var10+50 = 250+x

00401085  |.  8B55 E8       MOV EDX,DWORD PTR SS:[EBP-18]
00401088  |.  83EA 32       SUB EDX,32
0040108B  |.  8955 E8       MOV DWORD PTR SS:[EBP-18],EDX
//var18 = var18-50 = 250+x
0040108E  |.  C745 E4 00000>MOV DWORD PTR SS:[EBP-1C],0   
//之后的就没感觉有什么用了

00401095  |.  C645 E0 4B    MOV BYTE PTR SS:[EBP-20],4B
00401099  |.  C645 DC 4E    MOV BYTE PTR SS:[EBP-24],4E
0040109D  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
004010A0  |.  3B45 F4       CMP EAX,DWORD PTR SS:[EBP-C]
004010A3  |.  75 0D         JNZ SHORT 1.004010B2         
//var8和varc不相等,所以一定会跳

004010A5  |.  68 38704200   PUSH 1.00427038                          ; /Arg1 = 00427038 ASCII "NO"
004010AA  |.  E8 61020000   CALL 1.00401310                          ; \1.00401310
004010AF  |.  83C4 04       ADD ESP,4
004010B2  |>  50            PUSH EAX
004010B3  |.  58            POP EAX
004010B4  |.  51            PUSH ECX
004010B5  |.  59            POP ECX
004010B6  |.  B8 64000000   MOV EAX,64
004010BB  |.  05 C8000000   ADD EAX,0C8
004010C0  |.  2D E6000000   SUB EAX,0E6
004010C5  |.  83C0 03       ADD EAX,3
004010C8  |.  BB 04000000   MOV EBX,4
004010CD  |.  03C3          ADD EAX,EBX
004010CF  |.  33C9          XOR ECX,ECX
004010D1  |.  85C9          TEST ECX,ECX
004010D3  |.  74 0D         JE SHORT 1.004010E2        
//同上面的跳转,先把ECX清0再TEST一定会跳的

004010D5  |.  68 34704200   PUSH 1.00427034                          ; /Arg1 = 00427034 ASCII "OK"
004010DA  |.  E8 31020000   CALL 1.00401310                          ; \1.00401310
004010DF  |.  83C4 04       ADD ESP,4
004010E2  |>  03C3          ADD EAX,EBX                 
//跳到这里,然后下面的命令感觉也没什么用处

004010E4  |.  BB 0A000000   MOV EBX,0A
004010E9  |.  40            INC EAX
004010EA  |.  43            INC EBX
004010EB  |.  90            NOP
004010EC  |.  90            NOP
004010ED  |.  90            NOP
004010EE  |.  83C0 0A       ADD EAX,0A
004010F1  |.  8B55 F0       MOV EDX,DWORD PTR SS:[EBP-10]   
//从这里开始有用了

004010F4  |.  3B55 EC       CMP EDX,DWORD PTR SS:[EBP-14]
004010F7  |.  75 28         JNZ SHORT 1.00401121            
//比较var10与var14是否相等

004010F9  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]
004010FC  |.  3B45 E8       CMP EAX,DWORD PTR SS:[EBP-18]
004010FF  |.  75 20         JNZ SHORT 1.00401121            
//比较var10与var18是否相等

00401101  |.  8B4D EC       MOV ECX,DWORD PTR SS:[EBP-14]
00401104  |.  3B4D E8       CMP ECX,DWORD PTR SS:[EBP-18]
00401107  |.  75 18         JNZ SHORT 1.00401121            
//比较var18与var14是否相等
//上面三个跳转应该是所谓的关键跳转了,而且都跳到同一个位置,会不会是switch?嘿嘿
//根据上面,就是 var10 = var14 = var18 即 250+x = 250+x = 500 所以密码是250 ~
//下面就是输出了

00401109  |.  0FBE55 E0     MOVSX EDX,BYTE PTR SS:[EBP-20]
0040110D  |.  52            PUSH EDX                                 ; /Arg3
0040110E  |.  8B45 E4       MOV EAX,DWORD PTR SS:[EBP-1C]            ; |
00401111  |.  50            PUSH EAX                                 ; |Arg2
00401112  |.  68 2C704200   PUSH 1.0042702C                          ; |Arg1 = 0042702C ASCII "        %d%c        "
00401117  |.  E8 F4010000   CALL 1.00401310                          ; \1.00401310
0040111C  |.  83C4 0C       ADD ESP,0C
0040111F  |.  EB 16         JMP SHORT 1.00401137
00401121  |>  8B4D E4       MOV ECX,DWORD PTR SS:[EBP-1C]
00401124  |.  51            PUSH ECX                                 ; /Arg3
00401125  |.  0FBE55 DC     MOVSX EDX,BYTE PTR SS:[EBP-24]           ; |
00401129  |.  52            PUSH EDX                                 ; |Arg2
0040112A  |.  68 24704200   PUSH 1.00427024                          ; |Arg1 = 00427024 ASCII "        %c%d        "
0040112F  |.  E8 DC010000   CALL 1.00401310                          ; \1.00401310
00401134  |.  83C4 0C       ADD ESP,0C
00401137  |>  68 1C704200   PUSH 1.0042701C                          ; /Arg1 = 0042701C ASCII "pause"
0040113C  |.  E8 5F000000   CALL 1.004011A0                          ; \1.004011A0
00401141  |.  83C4 04       ADD ESP,4
00401144  |.  5F            POP EDI
00401145  |.  5E            POP ESI
00401146  |.  5B            POP EBX
00401147  |.  83C4 64       ADD ESP,64
0040114A  |.  3BEC          CMP EBP,ESP
0040114C  |.  E8 3F020000   CALL 1.00401390
00401151  |.  8BE5          MOV ESP,EBP
00401153  |.  5D            POP EBP
00401154  \.  C3            RETN

第一次在看雪发言,见笑~
2012-5-9 20:10
0
雪    币: 409
活跃值: (75)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢楼主~新手尝试一下
2012-5-14 10:56
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
简单,欢乐,适合俺这样的新手玩~
2012-6-14 17:48
0
雪    币: 13
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
请给出破解的过程和思路和方法和。。。?
2012-8-6 21:45
0
雪    币: 588
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
开始的时候输入的是100,看看流程,401067-40108B后面的注释结果有些错误,勉强看吧.
.text:00401010 _main_0 proc near                       ; CODE XREF: _mainj
.text:00401010
.text:00401010 var_64= byte ptr -64h
.text:00401010 var_24= byte ptr -24h
.text:00401010 var_20= byte ptr -20h
.text:00401010 var_1C= dword ptr -1Ch
.text:00401010 var_18= dword ptr -18h
.text:00401010 var_14= dword ptr -14h
.text:00401010 var_10= dword ptr -10h
.text:00401010 var_C= dword ptr -0Ch
.text:00401010 var_8= dword ptr -8
.text:00401010 var_4= dword ptr -4
.text:00401010
.text:00401010 push    ebp
.text:00401011 mov     ebp, esp
.text:00401013 sub     esp, 64h
.text:00401016 push    ebx
.text:00401017 push    esi
.text:00401018 push    edi
.text:00401019 lea     edi, [ebp+var_64]
.text:0040101C mov     ecx, 19h
.text:00401021 mov     eax, 0CCCCCCCCh
.text:00401026 rep stosd
.text:00401028 push    offset aTCrackme01              ; "\t\t\t\t独头蒜 crackme01 \n"
.text:0040102D call    _printf
.text:00401032 add     esp, 4
.text:00401035 push    offset aIFIIg3                  ; "请输入密码:(3位?
.text:0040103A call    _printf
.text:0040103F add     esp, 4
.text:00401042 lea     eax, [ebp+var_4]
.text:00401045 push    eax
.text:00401046 push    offset Format                   ; "%d"
.text:0040104B call    _scanf                          ; var_4 ... var_64 =0XCCCCCCCC
.text:0040104B                                         ; var_4=input_data=100
.text:00401050 add     esp, 8
.text:00401053 mov     [ebp+var_8], 0C8h               ; var_8=200
.text:0040105A mov     [ebp+var_C], 12Ch               ; var_C=300
.text:00401061 mov     ecx, [ebp+var_4]
.text:00401064 add     ecx, [ebp+var_8]
.text:00401067 mov     [ebp+var_10], ecx               ; var_10=var_4+var_8=100+200=300
.text:0040106A mov     edx, [ebp+var_8]
.text:0040106D add     edx, [ebp+var_C]
.text:00401070 mov     [ebp+var_14], edx               ; var_14=var_8+var_C=200+300=500
.text:00401073 mov     eax, [ebp+var_4]
.text:00401076 add     eax, [ebp+var_C]
.text:00401079 mov     [ebp+var_18], eax               ; var_18=var_4+var_C=100+300=400
.text:0040107C mov     ecx, [ebp+var_10]
.text:0040107F add     ecx, 32h
.text:00401082 mov     [ebp+var_10], ecx               ; var_10=var_10+50=300+50=350
.text:00401085 mov     edx, [ebp+var_18]
.text:00401088 sub     edx, 32h
.text:0040108B mov     [ebp+var_18], edx               ; var_18=var_18-50=400-50=350
.text:0040108E mov     [ebp+var_1C], 0                 ; var_1C=0
.text:00401095 mov     [ebp+var_20], 4Bh               ; var_20=4B
.text:00401095                                         ; 这个是字符K,就是OK的K了
.text:00401099 mov     [ebp+var_24], 4Eh               ; var_24=4E
.text:00401099                                         ; 这个是字符N,就是NO的N了
.text:0040109D mov     eax, [ebp+var_8]
.text:004010A0 cmp     eax, [ebp+var_C]                ; var_8==var_C ?
.text:004010A0                                         ; 300=100?
.text:004010A3 jnz     short loc_4010B2                ; 垃圾代码
.text:004010A5 push    offset aNo                      ; "NO"
.text:004010AA call    _printf
.text:004010AF add     esp, 4
.text:004010B2
.text:004010B2 loc_4010B2:                             ; CODE XREF: _main_0+93j
.text:004010B2 push    eax                             ; 垃圾代码
.text:004010B3 pop     eax                             ; 垃圾代码
.text:004010B4 push    ecx
.text:004010B5 pop     ecx
.text:004010B6 mov     eax, 64h
.text:004010BB add     eax, 0C8h
.text:004010C0 sub     eax, 0E6h
.text:004010C5 add     eax, 3
.text:004010C8 mov     ebx, 4
.text:004010CD add     eax, ebx
.text:004010CF xor     ecx, ecx
.text:004010D1 test    ecx, ecx
.text:004010D3 jz      short loc_4010E2                ; 这里的"OK"是个假货,嘿嘿
.text:004010D5 push    offset aOk                      ; "OK"
.text:004010DA call    _printf
.text:004010DF add     esp, 4
.text:004010E2
.text:004010E2 loc_4010E2:                             ; CODE XREF: _main_0+C3j
.text:004010E2 add     eax, ebx
.text:004010E4 mov     ebx, 0Ah
.text:004010E9 inc     eax                             ; 垃圾代码
.text:004010EA inc     ebx                             ; 垃圾代码
.text:004010EB nop
.text:004010EC nop
.text:004010ED nop
.text:004010EE add     eax, 0Ah                        ; 垃圾代码
.text:004010F1 mov     edx, [ebp+var_10]
.text:004010F4 cmp     edx, [ebp+var_14]               ; var_10==var_14?
.text:004010F7 jnz     short loc_401121
.text:004010F9 mov     eax, [ebp+var_10]
.text:004010FC cmp     eax, [ebp+var_18]               ; var_10==var_18?
.text:004010FF jnz     short loc_401121
.text:00401101 mov     ecx, [ebp+var_14]               ; var_14==var_18?
.text:00401104 cmp     ecx, [ebp+var_18]               ; 向上替代:
.text:00401104                                         ; var_10:
.text:00401104                                         ; =var_10+50
.text:00401104                                         ; =var_4+var_8+50
.text:00401104                                         ; =var_4+200+50
.text:00401104                                         ; =var_4+250
.text:00401104                                         ;
.text:00401104                                         ; var_14:
.text:00401104                                         ; =var_8+var_C
.text:00401104                                         ; =200+300
.text:00401104                                         ; =500
.text:00401104                                         ;
.text:00401104                                         ; var_18:
.text:00401104                                         ; =var_18-50
.text:00401104                                         ; =var_4+var_C-50
.text:00401104                                         ; =var_4+300-50
.text:00401104                                         ; =var_c+250
.text:00401104                                         ;
.text:00401104                                         ; 要var_10=var_14=var_18,只有var_4=250 :)
.text:00401107 jnz     short loc_401121
.text:00401109 movsx   edx, [ebp+var_20]               ; 字符K
.text:0040110D push    edx
.text:0040110E mov     eax, [ebp+var_1C]               ; 字符O,这里实际是数字0
.text:00401111 push    eax
.text:00401112 push    offset aDC                      ; "\t%d%c\t"
.text:00401117 call    _printf                         ; 这里才是成功的输出,
.text:00401117                                         ; 是输出了一个数组0和一个字符K,
.text:00401117                                         ; 看起来时OK
.text:00401117                                         ;
.text:0040111C add     esp, 0Ch
.text:0040111F jmp     short loc_401137
.text:00401121 ; ---------------------------------------------------------------------------
.text:00401121
.text:00401121 loc_401121:                             ; CODE XREF: _main_0+E7j
.text:00401121                                         ; _main_0+EFj ...
.text:00401121 mov     ecx, [ebp+var_1C]
.text:00401124 push    ecx
.text:00401125 movsx   edx, [ebp+var_24]
.text:00401129 push    edx
.text:0040112A push    offset aCD                      ; "\t%c%d\t"
.text:0040112F call    _printf                         ; 这里输出的是NO,
.text:0040112F                                         ; 其实这里输出的是字符N和数字0
.text:00401134 add     esp, 0Ch
.text:00401137
.text:00401137 loc_401137:                             ; CODE XREF: _main_0+10Fj
.text:00401137 push    offset Command                  ; "pause"
.text:0040113C call    _system
.text:00401141 add     esp, 4
.text:00401144 pop     edi
.text:00401145 pop     esi
.text:00401146 pop     ebx
.text:00401147 add     esp, 64h
.text:0040114A cmp     ebp, esp
.text:0040114C call    __chkesp
.text:00401151 mov     esp, ebp
.text:00401153 pop     ebp
.text:00401154 retn
.text:00401154 _main_0 endp
2012-8-7 12:36
0
游客
登录 | 注册 方可回帖
返回
//