吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5151|回复: 11
收起左侧

[原创] 练手 160个CrakeMe程序之032

  [复制链接]
hjm666 发表于 2018-5-31 17:28
本帖最后由 hjm666 于 2018-5-31 18:51 编辑

继续熟悉熟悉下keyfile模式软件


一、基础信息


1.png    
4.png     5.png          6.png


开头是一个NAG也是一个keyfile 验证,解决了keyfile 后才能进入到软件, 序列号验证窗口中 有两个按钮,一个不显现
2.png




有加 UPX壳。。。 还没遇过这个版本的UPX壳·


二、脱壳
    不管有没有遇过,先大esp定律上来,断下点后一个大跳,到达OEP
(ps:esp 定律不懂度娘····)
3.png
     脱下了壳···  是Delphi 写的软件


7.png


   补充软件的关键事件信息 有5个事件需要注意一下,,  但并没有找到用户名输入的输入框的事件··


三、keyfile解决
NAG窗口上提醒我们让我们找Reg.dat 会在哪个文件夹上
   果断在CrakeMe的文件夹新建Reg.dat  随便输入写什么,再打开后keyfile直接解决
后来我花了大时间去追为什么是这个路径等等问题···················
   发现程序在OD还没有进行任何操作时,在堆栈窗口中我就已经翻到了CrakeMe的路径已经在堆栈了····
   而且也并未对Reg.dat 文件中的数据进行任何操作。。只要存在这一个名字的文件就好···
       (没意思啊。。。。。。)
四、暴力破解


断下5个断点后发现 OK 事件没什么帮助 4 个序列号事件都调用了同一个call
[Asm] 纯文本查看 复制代码
00437CBB    83FE 05         cmp esi,0x5
00437CBE  ^ 75 E5           jnz short 1.00437CA5
00437CC0    EB 05           jmp short 1.00437CC7
00437CC2    B9 01000000     mov ecx,0x1
00437CC7    85C9            test ecx,ecx                             ; ecx 要等于 0
00437CC9    75 14           jnz short 1.00437CDF                     ; 关键跳转
00437CCB    A1 28A74300     mov eax,dword ptr ds:[0x43A728]
00437CD0    8B80 E0010000   mov eax,dword ptr ds:[eax+0x1E0]
00437CD6    B2 01           mov dl,0x1
00437CD8    E8 7B54FEFF     call 1.0041D158
00437CDD    EB 12           jmp short 1.00437CF1
00437CDF    A1 28A74300     mov eax,dword ptr ds:[0x43A728]
00437CE4    8B80 E0010000   mov eax,dword ptr ds:[eax+0x1E0]
00437CEA    33D2            xor edx,edx                              ; ntdll.KiFastSystemCallRet[/size]
[size=5]



关键跳转处修改标志位直接暴力破解掉。。
五、注册机探究
只剩下4个事件了,妥妥的关键地方在共用的那个call
[Asm] 纯文本查看 复制代码
00437BD8    55              push ebp                                  ; 关键点
00437BD9    8BEC            mov ebp,esp
00437BDB    6A 00           push 0x0
00437BDD    6A 00           push 0x0
00437BDF    53              push ebx
00437BE0    56              push esi
00437BE1    33C0            xor eax,eax
00437BE3    55              push ebp
00437BE4    68 0C7D4300     push 1.00437D0C
00437BE9    64:FF30         push dword ptr fs:[eax]
00437BEC    64:8920         mov dword ptr fs:[eax],esp
00437BEF    8D55 FC         lea edx,dword ptr ss:[ebp-0x4]
00437BF2    A1 28A74300     mov eax,dword ptr ds:[0x43A728]
00437BF7    8B80 0C020000   mov eax,dword ptr ds:[eax+0x20C]
00437BFD    E8 BE55FEFF     call 1.0041D1C0                           ; 压入用户名
00437C02    8B45 FC         mov eax,dword ptr ss:[ebp-0x4]
00437C05    E8 6EBDFCFF     call 1.00403978                           ; 计算子符长度
00437C0A    83F8 05         cmp eax,0x5                               ; 大于5个字符
00437C0D    0F8C AF000000   jl 1.00437CC2
00437C13    8B45 FC         mov eax,dword ptr ss:[ebp-0x4]
00437C16    0FB600          movzx eax,byte ptr ds:[eax]               ; 用户名第1个
00437C19    B9 0A000000     mov ecx,0xA
00437C1E    99              cdq
00437C1F    F7F9            idiv ecx                                  ; 除以A
00437C21    A3 2CA74300     mov dword ptr ds:[0x43A72C],eax
00437C26    8B45 FC         mov eax,dword ptr ss:[ebp-0x4]
00437C29    0FB640 02       movzx eax,byte ptr ds:[eax+0x2]           ; 用户名第3个
00437C2D    B9 0A000000     mov ecx,0xA
00437C32    99              cdq
00437C33    F7F9            idiv ecx                                  ; 除以A
00437C35    A3 30A74300     mov dword ptr ds:[0x43A730],eax
00437C3A    8B45 FC         mov eax,dword ptr ss:[ebp-0x4]
00437C3D    0FB640 03       movzx eax,byte ptr ds:[eax+0x3]           ; 用户名第4个
00437C41    B9 0A000000     mov ecx,0xA
00437C46    99              cdq
00437C47    F7F9            idiv ecx                                  ; 除以A
00437C49    A3 34A74300     mov dword ptr ds:[0x43A734],eax
00437C4E    8B45 FC         mov eax,dword ptr ss:[ebp-0x4]
00437C51    0FB640 04       movzx eax,byte ptr ds:[eax+0x4]           ; 用户名第5个
00437C55    B9 0A000000     mov ecx,0xA
00437C5A    99              cdq
00437C5B    F7F9            idiv ecx                                  ; 除以A
00437C5D    A3 38A74300     mov dword ptr ds:[0x43A738],eax
00437C62    BE 01000000     mov esi,0x1
00437C67    BB 2CA74300     mov ebx,1.0043A72C
00437C6C    8D55 F8         lea edx,dword ptr ss:[ebp-0x8]
00437C6F    8B03            mov eax,dword ptr ds:[ebx]
00437C71    E8 8AECFCFF     call 1.00406900
00437C76    8B45 F8         mov eax,dword ptr ss:[ebp-0x8]            ; kernel32.7C817080
00437C79    E8 FABCFCFF     call 1.00403978
00437C7E    48              dec eax
00437C7F    74 0C           je short 1.00437C8D
00437C81    8B03            mov eax,dword ptr ds:[ebx]
00437C83    B9 0A000000     mov ecx,0xA
00437C88    99              cdq
00437C89    F7F9            idiv ecx                                  ; 除以A
00437C8B    8903            mov dword ptr ds:[ebx],eax
00437C8D    46              inc esi
00437C8E    83C3 04         add ebx,0x4
00437C91    83FE 05         cmp esi,0x5
00437C94  ^ 75 D6           jnz short 1.00437C6C
00437C96    BE 01000000     mov esi,0x1
00437C9B    B8 2CA74300     mov eax,1.0043A72C
00437CA0    BA 3CA74300     mov edx,1.0043A73C                        ; ebx==0043A73C
00437CA5    8B0A            mov ecx,dword ptr ds:[edx]
00437CA7    3B08            cmp ecx,dword ptr ds:[eax]
00437CA9    74 07           je short 1.00437CB2                       ; 要跳
00437CAB    B9 01000000     mov ecx,0x1
00437CB0    EB 15           jmp short 1.00437CC7
00437CB2    33C9            xor ecx,ecx
00437CB4    46              inc esi
00437CB5    83C2 04         add edx,0x4
00437CB8    83C0 04         add eax,0x4
00437CBB    83FE 05         cmp esi,0x5
00437CBE  ^ 75 E5           jnz short 1.00437CA5
00437CC0    EB 05           jmp short 1.00437CC7
00437CC2    B9 01000000     mov ecx,0x1
00437CC7    85C9            test ecx,ecx                              ; ecx 要等于 0
00437CC9    75 14           jnz short 1.00437CDF                      ; 关键跳转


总结:
          其实这个需要分析的也比较简单,不过有些带有迷惑性,没有GET到全局变量的变化,感觉有点烦···(一开始我便是),程序分别取了用户名的第一 ,第三 ,第四,第五位分别进行了 除以 0xA 操作,
至于序列号如果上述的操作结果还是两位数,就再进行一次除以 0xA 操作,这操作后的4位个数就是序列号
(程序序列号点小按钮最多加到9 ,也可以提供分析思路···)




[C] 纯文本查看 复制代码
#include<stdio.h>
#include<string.h>
#include<iostream>
int main()
{
        int b;
        int key[4]={0};
        char name[20]={0};
        printf("Input yous name:\n");
        scanf("%s",&name);
        int len =strlen(name); 
        if(len<5)
        {
                printf("Sorry, your name is too small!! \n");
        }        
        else
        {        
                key[0]=name[0]/10;
                if(key[0]>9) key[0]=key[0]/10;
                key[1]=name[2]/10;
                if(key[1]>9) key[1]=key[1]/10;
                key[2]=name[3]/10;
                if(key[2]>9) key[2]=key[2]/10;
                key[3]=name[4]/10;
                if(key[3]>9) key[3]=key[3]/10;
        } 
        printf("This key is :");
        for(int i=0;i<4;i++) 
        {
                printf("%d",key[i]);
        }
        printf("\n");
        system("pause");
        return 0;
} 



8.png


   CrakeMe : genocide1.zip (114.07 KB, 下载次数: 7)




如有错误请大佬指出,小生不胜感激!!

免费评分

参与人数 4威望 +1 吾爱币 +13 热心值 +4 收起 理由
林伟 + 1 + 1 热心回复!
Hmily + 1 + 10 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
杀猪用牛刀 + 1 + 1 我很赞同!
SnowRen + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| hjm666 发表于 2018-5-31 18:56
cotmx7 发表于 2018-5-31 18:46
大哥我想破解个软件  有偿啊  不行了我

可以发来看看哇,可以试试看啊,我也技术不是很好
↘。⒈木拖鞋 发表于 2018-5-31 19:46
cotmx7 发表于 2018-5-31 18:46
大哥我想破解个软件  有偿啊  不行了我

已举报,禁止发布求破解内容
cotmx7 发表于 2018-5-31 19:28
hjm666 发表于 2018-5-31 18:56
可以发来看看哇,可以试试看啊,我也技术不是很好

2196373 我QQ
cotmx7 发表于 2018-5-31 19:42
hjm666 发表于 2018-5-31 18:56
可以发来看看哇,可以试试看啊,我也技术不是很好

我加你也行啊
kgwei1 发表于 2018-5-31 21:51
禁止求破求QQ哦
lanyueliang 发表于 2018-6-1 11:26
感谢分享。
性感的醉人 发表于 2018-6-1 17:16

感谢分享。
168pojie 发表于 2018-6-1 18:24
谢谢分享。
harygary 发表于 2018-6-3 08:13
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 02:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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