飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2943|回复: 4

[求助] 转自看雪-------放个CrackMe给新手玩玩

[复制链接]
  • TA的每日心情
    开心
    2019-2-26 11:14
  • 签到天数: 459 天

    [LV.9]以坛为家II

    发表于 2015-4-16 12:01:39 | 显示全部楼层 |阅读模式
    *****************************************
    题目来源:xxxx大学首届CTF大赛逆向工程的题
    题目难度:简单,三无产品
    *****************************************
    转自看雪   搞定的写个分析吧  谢谢

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    5 天前
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2015-4-16 12:38:58 | 显示全部楼层
    提示一下:

    XOR BYTE PTR DS:[EAX],0x6E
    .
    .
    .
    .
    XOR BYTE PTR DS:[EAX+0x13],0x6E

    CMP ECX,0x14 // 注册码共0x14位

    // 练习算法的童鞋根据上面说明,继续,还玩不转就恶补汇编指令了。。

    SN:nctf{********()


    1. int main(int, char **, char **)
    2. {
    3.         // xor table
    4.         unsigned char MyArray[0x14] = {0x6E,0x62,0x76,0x65,0x7F,0x49,0x36,0x4B,0x57,0x79,0x6F,0x65,0x78,0x3E,0x51,0x44,0x79,0x20,0x23,0x6E};

    5.         for (int i = 0; i < 0x14; i++)
    6.                 printf("%c", MyArray[i]^i);
    7.         printf("\n");
    8.         return 1;
    9. }

    复制代码

    点评

    飘哥太给力了。直接上注册机源码了  详情 回复 发表于 2015-4-16 13:34

    评分

    参与人数 1威望 +4 飘云币 +4 收起 理由
    wgz001 + 4 + 4 谢谢

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-3-10 19:49
  • 签到天数: 473 天

    [LV.9]以坛为家II

    发表于 2015-4-16 13:34:19 | 显示全部楼层
    飘云 发表于 2015-4-16 12:38
    提示一下:

    XOR BYTE PTR DS:[EAX],0x6E

    飘哥太给力了。直接上注册机源码了
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-3-17 22:44
  • 签到天数: 132 天

    [LV.7]常住居民III

    发表于 2015-4-16 22:18:28 | 显示全部楼层
    基友,行动起来吧  {:soso_e128:}

    路障1:


    这里是个有限循环,小兄弟有没有被搞基?
    跳过或者修改循环变量,另存为新文件



    路障2:


    这里有个全局变量,下个硬件断点,来到这里,OD不能有效分析了,看来是人为因素修改二进制代码了。


    尝试删除分析:


    单步跟进:


    哎呦,看到了关键信息。

    可是 XOR BYTE PTR DS:[EAX], ?? 这行代码哪去了?
    这里,局部代码模块化很强,应该是个循环,大胆尝试修改如下2个字节:
    40143D,40144B


    好了,看到我们要的数据了。

    算法,见老飘贴的代码。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x

    评分

    参与人数 1威望 +4 飘云币 +4 收起 理由
    wgz001 + 4 + 4 感谢

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-2-26 11:14
  • 签到天数: 459 天

    [LV.9]以坛为家II

     楼主| 发表于 2015-4-17 17:48:13 | 显示全部楼层
    本帖最后由 wgz001 于 2015-4-17 17:54 编辑

    感谢楼上各位的分析   我看了后也总结了一下  不知道对不

    OD载入后 bp MessageBoxA  F9运行后,ALT+F9返回,出现消息框后点确定,中断在程序中
    1. 00405B6B  |.  8945 E4       MOV     DWORD PTR SS:[EBP-0x1C], EAX
    2. 00405B6E  |.  C745 FC FEFFF>MOV     DWORD PTR SS:[EBP-0x4], -0x2
    3. 00405B75  |.  E8 0B000000   CALL    00405B85                         ;  错误检测
    4. 00405B7A  |.  8B45 E4       MOV     EAX, DWORD PTR SS:[EBP-0x1C]
    5. 00405B7D  |>  E8 5FB40100   CALL    00420FE1                         ;  2015_nct.00420FE1
    6. 00405B82  \.  C3            RETN

    复制代码


    00420FE1这个call修改了返回地址,不知道是怎么回事,继续往下走会来到这里,
    1. 004012FB   > \BE 00010000   MOV     ESI, 0x100
    2. 00401300   >  6A 00         PUSH    0x0
    3. 00401302   .  6A 00         PUSH    0x0
    4. 00401304   .  68 70894300   PUSH    0x438970                         ;  小兄弟,搞基吗?
    5. 00401309   .  E8 F84A0000   CALL    00405E06                         ;  2015_nct.00405E06
    6. 0040130E   .  83EE 01       SUB     ESI, 0x1                         ;  来到这里
    7. 00401311   .^ 75 ED         JNZ     SHORT 00401300                   ;  2015_nct.00401300
    8. 00401313   .  5F            POP     EDI
    9. 00401314   .  8D46 01       LEA     EAX, DWORD PTR DS:[ESI+0x1]
    10. 00401317   .  5E            POP     ESI
    11. 00401318   .  C3            RETN

    复制代码

    此时ESI=0X100 也就在一个循环的次数,看来搞基0x100次后会有结果啊{:soso_e113:},正如大大说的一样,这里可以跳转后,F9出现另外一个画面,下断点,bp GetDlgItemTextA,输入假码"1234567890",点确定,中断后返回,
    1. 0040B471  |.  5D            POP     EBP                              ;  0012F82C
    2. 0040B472  |.  C2 0C00       RETN    0xC
    3. 0040B475  |>  8B49 4C       MOV     ECX, DWORD PTR DS:[ECX+0x4C]
    4. 0040B478  |.  8B01          MOV     EAX, DWORD PTR DS:[ECX]
    5. 0040B47A  |.  5D            POP     EBP
    6. 0040B47B  \.  FF60 7C       JMP     NEAR DWORD PTR DS:[EAX+0x7C]

    复制代码
    此时一路F7,代码做了很多变形,不知道是怎么变的啊,
    1. 0040141F    A1 3C524400     MOV     EAX, DWORD PTR DS:[0x44523C]     ; 注册码的地址
    2. 00401424    51              PUSH    ECX
    3. 00401425    52              PUSH    EDX
    4. 00401426    53              PUSH    EBX
    5. 00401427    E8 00000000     CALL    0040142C                         ; 2015_nct.0040142C
    6. 0040142C    5A              POP     EDX                              ; 下面几句修改返回地址
    7. 0040142D    83C2 07         ADD     EDX, 0x7
    8. 00401430    52              PUSH    EDX
    9. 00401431    C3              RETN


    复制代码
    再往下面走,会看到很多变形的代码
    1. 00401441    8030 6E         XOR     BYTE PTR DS:[EAX], 0x6E
    2. 00401444    51              PUSH    ECX
    3. 00401445    52              PUSH    EDX
    4. 00401446    53              PUSH    EBX
    5. 00401447    33DB            XOR     EBX, EBX
    6. 00401449    74 01           JE      SHORT 0040144C                   ; 2015_nct.0040144C
    7. 0040144B  - E9 5B5A5980     JMP     80996EAB
    8. 00401450    70 01           JO      SHORT 00401453                   ; 2015_nct.00401453
    9. 00401452    6251 52         BOUND   EDX, QWORD PTR DS:[ECX+0x52]
    10. 00401455    53              PUSH    EBX
    11. 00401456    33DB            XOR     EBX, EBX
    12. 00401458    74 01           JE      SHORT 0040145B                   ; 2015_nct.0040145B
    13. 0040145A    59              POP     ECX
    14. 0040145B    5B              POP     EBX
    15. 0040145C    5A              POP     EDX
    16. 0040145D    59              POP     ECX
    17. 0040145E    8070 02 76      XOR     BYTE PTR DS:[EAX+0x2], 0x76
    18. 00401462    51              PUSH    ECX
    19. 00401463    52              PUSH    EDX
    20. 00401464    53              PUSH    EBX
    21. 00401465    33DB            XOR     EBX, EBX
    22. 00401467    74 01           JE      SHORT 0040146A                   ; 2015_nct.0040146A
    23. 00401469    50              PUSH    EAX
    24. 0040146A    5B              POP     EBX
    25. 0040146B    5A              POP     EDX
    26. 0040146C    59              POP     ECX
    27. 0040146D    8070 03 65      XOR     BYTE PTR DS:[EAX+0x3], 0x65
    28. 00401471    51              PUSH    ECX

    复制代码
           XOR     BYTE PTR DS:[EAX+XX], 0x6E-------这样的代码就是在解密注册码,其中好多指令被修改成如E9 5B 5A 59 80,第一个字节被改成了E9,这个就是花指令么,E9改成59或58后代码还原了,谢谢大大们的指点,不修改也可以调试,不影响,走到下面算法的位置处
    1. 0040156C    8B0D 3C524400   MOV     ECX, DWORD PTR DS:[0x44523C]
    2. 00401572    0FB611          MOVZX   EDX, BYTE PTR DS:[ECX]           ; 取注册码解密后的第一位----EDX中
    3. 00401575    85D2            TEST    EDX, EDX
    4. 00401577    75 4A           JNZ     SHORT 004015C3                   ; 2015_nct.004015C3
    5. 00401579    C645 FF 00      MOV     BYTE PTR SS:[EBP-0x1], 0x0
    6. 0040157D    EB 08           JMP     SHORT 00401587                   ; 2015_nct.00401587
    7. 0040157F    8A45 FF         MOV     AL, BYTE PTR SS:[EBP-0x1]        ; 注册码的位数------>AL
    8. 00401582    04 01           ADD     AL, 0x1                          ; 下一位
    9. 00401584    8845 FF         MOV     BYTE PTR SS:[EBP-0x1], AL
    10. 00401587    0FB64D FF       MOVZX   ECX, BYTE PTR SS:[EBP-0x1]       ; EBP-1中保存注册码位数
    11. 0040158B    83F9 14         CMP     ECX, 0x14                        ; 是否20位全部取完
    12. 0040158E    7D 33           JGE     SHORT 004015C3                   ; 2015_nct.004015C3
    13. 00401590    0FB655 FF       MOVZX   EDX, BYTE PTR SS:[EBP-0x1]       ; 注册码的位数保存---->EDX
    14. 00401594    0FB645 FF       MOVZX   EAX, BYTE PTR SS:[EBP-0x1]
    15. 00401598    8B0D 3C524400   MOV     ECX, DWORD PTR DS:[0x44523C]
    16. 0040159E    0FB60401        MOVZX   EAX, BYTE PTR DS:[ECX+EAX]       ; 取注册码解密后的第EAX位----->EAX
    17. 004015A2    3BD0            CMP     EDX, EAX                         ; 比较解密后的该位的值与对应的位数是否相等
    18. 004015A4    75 19           JNZ     SHORT 004015BF                   ; 2015_nct.004015BF
    19. 004015A6    0FB64D FF       MOVZX   ECX, BYTE PTR SS:[EBP-0x1]       ; 位数----ECX中
    20. 004015AA    83F9 13         CMP     ECX, 0x13                        ; 是否比较结束
    21. 004015AD    75 0E           JNZ     SHORT 004015BD                   ; 2015_nct.004015BD
    22. 004015AF    6A 00           PUSH    0x0
    23. 004015B1    6A 00           PUSH    0x0
    24. 004015B3    68 84894300     PUSH    0x438984                         ; success!

    复制代码
    好多的代码不知道怎么变形来的{:soso_e154:},这个大大们再指点下呗
    再次感谢各位大大们的指点,小菜菜一步一步往前爬{:soso_e182:}






    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表