吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 8071|回复: 46

[原创逆向图文] 160个CrackerMe之34

  [复制链接]
BattleHeart 发表于 2015-6-7 22:23 | 显示全部楼层 |阅读模式

本帖最后由 BattleHeart 于 2015-6-7 22:35 编辑

160个CrackerMe之34

一、开篇
看了这么多大牛的教程,我也来一个简单的教程,仅供大家学习,交流如果有不对的地方请大家指教。这次分析的是160个CrackerMe的第34个程序,首先我们先打开程序观察一下程序运行状况,以及有什么特征。

1

1
并没有让你输入注册信息的,比如注册码等地方,File菜单下面就有一个exit退出,Help里面就是一个About菜单。也就是单纯的靠输入注册码是根本就找不到突破口,好那么这样我们就将程序载入进去看一下。

2

2
载入程序后,我们就可以清晰的看到一个方法名称叫CreateFileA创建文件。我们可以联想到一个问题就是这个程序是一个从文件读取秘钥的,好的,这样我们就找到了一个可以突破的口。接下来我们就要看一下这个文件名字和路径到底是什么。单步跟踪下。

3

3
我们可以看到堆栈中出现
       0012FFA8  004020D7  |FileName ="CRACKME3.KEY"

    也就是这个FileName叫做CRACKME3.KEY,这是我们就能想到这个文件创建在程序的根目录下面,文件名字叫CRACKME3.KEY。这是我们不用着急去创建这个文件我们单步跟踪下。

4

4
    这就说明不存在该文件。这是下面的jmp直接跳到了读取文件以及对文件内容的判断的方法。

5

5
    这里面的40103C这里的Call是调用显示窗体上面的文字内容,这里显示的是CrackMe v3.0  -  
       Uncrcaked

    这个就是图一上面的标题。接下来我们就来创建一个KEY文件,看一下运行情况。单步走一下我们可以清晰的看到跳过验证文件是否存在的地方。

6

6
    这时候我们就往下拉就可以看到文件读取的方法,ReadFile函数。我们在文件KEY中输入了123456789这是还是但不运行,看一下读取的数据。

7

7
    在这里有一个比较Cmp 18也就是说这个注册码是由18个组成的。如果不等于18 就会跳转到上面40103C未注册的位置。这时候我们就将Key文件里面的123456789变到123456789123456789这样就是18个组成,接下来我们就继续从新单步走一下试一下,这时候就发现这个jnz就没有跳转到上面未注册的地方。这是就会进入到注册码验证的地方如下图所示:

8

8
    这是地址402008位置存放的是字符串,我们在数据中查看一下。

9

9
    继续跟踪我们先来跟踪下最后的注册码到底是多少。

10

10
    我们看到将402008压入到堆栈中,这时候我们就应该想到这个Call有些可疑,有可能是对注册码进行加密验证的地方,这时候我们F7跟进去看一下。果然是注册码加密的过程,整个加密的过程很简单。

    下面是算法分析的过程。
  1. 00401311  /[        DISCUZ_CODE_3        ]nbsp; 33C9          xor ecx,ecx                                      ;  清空ecx
  2. 00401313  |.  33C0          xor eax,eax                                      ;  清空eax
  3. 00401315  |.  8B7424 04     mov esi,dword ptr ss:[esp+0x4]                   ;  将123456789123456789给了esi
  4. 00401319  |.  B3 41         mov bl,0x41                                      ;  将0x41给了寄存器bl
  5. 0040131B  |>  8A06          /mov al,byte ptr ds:[esi]                        ;  一位一位的取出秘钥的内容
  6. 0040131D  |.  32C3          |xor al,bl                                       ;  异或每一个秘钥其中一个字节与bl
  7. 0040131F  |.  8806          |mov byte ptr ds:[esi],al                        ;  把上次内容放回到秘钥中
  8. 00401321  |.  46            |inc esi                                         ;  增加数组位数
  9. 00401322  |.  FEC3          |inc bl                                          ;  从0x41每次循环增加1
  10. 00401324  |.  0105 F9204000 |add dword ptr ds:[0x4020F9],eax                 ;  首先从0开始加最近一次xor后的内容相加。
  11. 0040132A  |.  3C 00         |cmp al,0x0                                      ;  判断al是不是为0
  12. 0040132C  |.  74 07         |je short Cruehead.00401335                      ;  如果等0就跳走
  13. 0040132E  |.  FEC1          |inc cl                                          ;  增加cl,计数器,代表有多少个参与了计算
  14. 00401330  |.  80FB 4F       |cmp bl,0x4F                                     ;  判断是不是等于4F,4f-41=E,说名只有14个参与计算
  15. 00401333  |.^ 75 E6         \jnz short Cruehead.0040131B
  16. 00401335  |>  890D 49214000 mov dword ptr ds:[0x402149],ecx                  ;  这里应该是14=E
  17. 0040133B  \.  C3            retn
复制代码

11

11
     这是我们看到了4020F9的内容是657,这时候们来继续跟踪下,

     跳出来之后看下这段代码
  1. 00401079  |.  8135 F9204000>xor dword ptr ds:[0x4020F9],0x12345678           ;  这里是将加完的值异或12345678
  2. 00401083  |.  83C4 04       add esp,0x4
  3. 00401086  |.  68 08204000   push Cruehead.00402008
  4. 0040108B  |.  E8 AC020000   call Cruehead.0040133C                           ;  这里是获取14-18的秘钥内容
  5. 00401090  |.  83C4 04       add esp,0x4
  6. 00401093  |.  3B05 F9204000 cmp eax,dword ptr ds:[0x4020F9]                  ;  计算出来的值与后四位进行比较
  7. 00401099      0F94C0        sete al                                          ;  如果相等就为1不相等为0
  8. 0040109C  |.  50            push eax
  9. 0040109D  |.  84C0          test al,al
  10. 0040109F  |.^ 74 96         je short Cruehead.00401037                       ;  跳转到未注册位置
  11. 004010A1  |.  68 0E214000   push Cruehead.0040210E                           ;  CrackMe v3.0
  12. 004010A6  |.  E8 9B020000   call Cruehead.00401346                           ;  这里是已注册的Title
复制代码
      先先对累加后的值进行与0x1234578异或之后再与秘钥中的后四位进行比较,相等就通过,否则就失败。

12

12
     这是后我们看到eax=39383736对应ascii码就是6789,计算后的值是1234502F,这时候我们可以用UE改一下两个字节的值,

13

13
改成这样之后直接运行程序我们就可以看到这个。啊哈,成功了。

14

14
    变成了已注册。这时候我们就开始动手写注册机。C#写的一个简单的容易理解的。
  1. class Program
  2.     {
  3.         /// <summary>
  4.         /// 代码这样写纯属为了更好地理解,这里代码比较简陋仅供提供思路
  5.         /// </summary>
  6.         /// <param name="args"></param>
  7.         static void Main(string[] args)
  8.         {
  9.             Console.WriteLine("请输入14个数字");
  10.             string RegKey = Console.ReadLine();
  11.             int key = 0x41;             //这里对应汇编代码中的 mov bl,0x41
  12.             int key1 = 0x12345678;      //这里对应汇编代码中的 xor dword ptr ds:[0x4020F9],0x12345678     
  13.             int AddSorurce = 0;
  14.             for (int i = 0; i < RegKey.Length; i++)//核心算法位置
  15.             {
  16.                 AddSorurce += key ^ RegKey[i];
  17.                 key++;
  18.             }
  19.             AddSorurce = AddSorurce ^ key1;     //xor dword ptr ds:[0x4020F9],0x12345678   
  20.             Console.WriteLine("{0}", AddSorurce); //注意这里出来的是10进制的要转变成16进制就好了。

  21.             Console.ReadLine();
  22.         }
  23.     }
复制代码
     运行结果:

15

15
好吧,分析到此吧,此前还有一个简单教程,不是很难,没放出来稍后会放出来,16029cosh程序。
注明:分析过程由本人分析,如有雷同纯属巧合,喜欢的给加点分吧~~




评分

参与人数 53威望 +1 HB +90 THX +39 收起 理由
longge188 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
scarl + 2 + 1
sjtkxy + 2 + 1
花盗睡鼠 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
24567 + 1
Soul1999 + 1
冷亦飞 + 1
luo271338515 + 1
小菜虫 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
zyyujq + 1
武清一点点 + 1
jaunic + 1
消逝的过去 + 2 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
mengzhisuoliu1 + 1
mengzhisuoliu + 1
hnymsh + 1
lies + 1
大狮子 + 1 [快捷评语]--吃水不忘打井人,给个评分懂感恩!
hotD + 1 + 1
未走完的路 + 1 吃水不忘打井人,给个评分懂感恩!
zgsdzylj + 1 吃水不忘打井人,给个评分懂感恩!
M.y + 10 + 1 评分=感恩!简单却充满爱!感谢您的作品!
王树全 + 1 谢谢侬啦
p382422376 + 1 + 1 评分=感恩!简单却充满爱!感谢您的作品!
帝皇 + 1 + 1 虽然我现在看不懂,但感觉还是好东西,果断+HB+感谢!
passer + 6 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!
西瓜先森° + 2 + 1 评分=感恩!简单却充满爱!感谢您的作品!
577969310 + 1 + 1 附件形式上传教程,为后来学习者保证了资源稳定性,额外+10HB,感谢!
heke + 1 + 1 评分=感恩!简单却充满爱!感谢您的作品!
Flowerinjury + 1 评分=感恩!简单却充满爱!感谢您的作品!
jvc2015 + 1 + 1 评分=感恩!简单却充满爱!感谢您的作品!
yilk123 + 1 + 1 评分=感恩!简单却充满爱!感谢您的作品!
Petrel + 1 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!
zjsyjbb + 1 + 1 评分=感恩!简单却充满爱!感谢您的作品!
YYYYYe + 1 + 1 评分=感恩!简单却充满爱!感谢您的作品!
小柯师傅 + 1 + 1 我有礼貌,我评分。谁没礼貌大家都看着呢!
tony2526 + 2 + 1 评分=感恩!简单却充满爱!感谢您的作品!
虚竹 + 5 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!
yxkj + 1 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!
am873 + 2 + 1 好人有好报!你的热心我永远不忘!谢谢!
Antistina + 1 + 1 本站任何内容出于学习研究的目的,禁止用于商业或非法途径,否则后果自负!
zijingyao + 5 + 1 评分=感恩!简单却充满爱!感谢您的作品!
moont + 1 + 1 恩,不错,虽然看不懂
wdujs600 + 1 + 1 评分=感恩!简单却充满爱!感谢您的作品!
我爱张海强 + 1 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!
有何不可 + 2 + 1 评分=感恩!简单却充满爱!感谢您的作品!
jiepo + 1 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!
duanbin109 + 1 + 1 好人有好报!你的热心我永远不忘!谢谢!
Bei_eec + 2 + 1 好人有好报!你的热心我永远不忘!谢谢!
Shark恒 + 1 真的很详细,小丁的破文写的就是漂亮!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
FraMeQ 发表于 2015-6-7 22:32 | 显示全部楼层

其实早晨我也准备发一个160个Crack,后来想了下算了,毕竟前面的有很多人分析了,都比较了
支持楼主原创
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| BattleHeart 发表于 2015-6-7 22:34 | 显示全部楼层

FraMeQ 发表于 2015-6-7 22:32
其实早晨我也准备发一个160个Crack,后来想了下算了,毕竟前面的有很多人分析了,都比较了
支持楼主原创

一起加油。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
LYQingYe 发表于 2015-6-7 22:46 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
厚道 发表于 2015-6-7 23:12 | 显示全部楼层

一起加油。                    
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
易玄机 发表于 2015-6-7 23:23 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
dazong 发表于 2015-6-7 23:47 | 显示全部楼层

把我做的cm  也弄这样的教程分析呗
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
kangda666 发表于 2015-6-8 00:14 | 显示全部楼层

感谢楼主的教程
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Shark恒 发表于 2015-6-8 00:22 | 显示全部楼层

真的很详细,小丁的破文写的就是漂亮!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
jiepo 发表于 2015-6-8 09:03 | 显示全部楼层

谢谢,认真学习下!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

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