首页
社区
课程
招聘
[原创]爆破[天天日记本2.1.1]
发表于: 2005-7-18 19:20 4288

[原创]爆破[天天日记本2.1.1]

2005-7-18 19:20
4288
说明:看雪论坛里面已经有了一篇分析[天天日记本2.1.1]注册算法的文章,作者是我烦死机代码,本文是对原文的一点补充,因为作者没有给出注册机,而根据汇编代码来写出注册机,对我来说,就像我四年后的高考一样,还十分遥远,所以就有了这篇文章。不过其实还有一种破解方法,那就是写一篇介绍这个软件的文章,告诉作者你的文章在什么杂志上面发表,然后作者查明之后就会给你注册码,还可以赚稿费,很爽的哦!

破解工具:OllyDbg, DeDe, C32Asm, 计算器
爆破思路:
在原文中,作者说到软件脱壳之后就无法正常使用,很明显是在某个地方做了文件校验,甚至有可能涉及到 CRC|RSA|DES 之类乱七八糟的,既然可以顺利脱壳,那么只要用DeDe找到验证的代码,再改一下,就可以顺利地进行爆破。

爆破过程:
从原文知道程序加了Aspack 2.12的壳,所以打开 OllyDbg,用OllyScript打开脱Aspack的脚本进行脱壳(注意:如果是利用其他方法进行脱壳,可能以下所讲的地址会有所不同,但不影响爆破)。
打开DeDe4,找有Save字样的过程,因为脱壳之后无法保存,那这里面肯定有问题。很快可以找到一个过程FileSaveExecute,双击打开这个过程,可以看到以下代码:
* Reference to: Forms.TApplication.GetExeName(TApplication):AnsiString;
|
00560884   E8EB33F4FF             call    004A3C74 //得到程序的文件名
00560889   8B45F0                 mov     eax, [ebp-$10]

* Reference to: InGlobal.FileSizeByName(AnsiString):Int64;
|
0056088C   E87FB8F9FF        call    004FC110 //得到程序的大小
00560891   83FA00            cmp     edx, +$00 //这个好像是大小不大于0跳
00560894   7505              jnz     0056089B
00560896   3D00F61E00        cmp     eax, $000A1200 //A1200是脱壳之前的文件大小
0056089B   0F85A0010000      jnz     00560A41 //不相等跳
看来我的推断没有错,而且是使用了最简单的办法,对比文件大小。在资源管理器里面可以看到脱壳之前的文件大小是659968字节,用计算器转换成十六进制就是A1200,而脱壳之后的文件大小是2029056字节,十六进制为1EF600。
本来我想用Aspack把脱壳之后的文件重新压回去,但是这样还是差十几KB的大小,所以我打开OllyDbg,点击右键,搜索->所有命令,输入 cmp eax, 0A1200 (注意DeDe反汇编出来的数据表示形式是Delphi的语法,注意别弄错了),结果显示找到四个,其中一个就是FileSaveExecute过程里面的,其余三个分别是FileNewExecute、FileDelExecute、TreeViewChange过程里面的,记下找到的这几个地址,打开C32Asm,(没有的可以用Hedit、Hex Workshop等编辑器代替)文件->打开十六进制文件,打开脱壳之后的文件,按Ctrl+W切换到汇编模式,按Ctrl+G,输入刚才记下的几个地址,分别将这几处的代码 cmp eax,A1200改为 cmp eax, 1EF600 //(这个数值是脱壳之后的文件大小,可能有变动),然后再按Ctrl+G跳转到0055D854,把 JE 0055D969 修改为 JMP 0055D969,保存,爆破成功。

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
2
...四年后的高考一样,还十分遥远...

小弟弟 支持一下!
2005-7-18 20:17
0
雪    币: 1263
活跃值: (607)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
真希望高手能发表一篇文章。来让我等菜鸟学学。
偶最想要的是:《简易日记本1.9》解密教文
2005-7-18 22:16
0
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
4
最初由 dfui 发布
真希望高手能发表一篇文章。来让我等菜鸟学学。
偶最想要的是:《简易日记本1.9》解密教文


重启验证,注册算法强度一般:

0063D509     8B45 D8             mov eax,dword ptr ss:[ebp-28]
0063D50C     8B55 D4             mov edx,dword ptr ss:[ebp-2C]
0063D50F <>  E8 0C7BDCFF         call bdiary_e.00405020                   ; ->System.@LStrCmp;
0063D514     74 17               je short bdiary_e.0063D52D               ; 爆破1
0063D516     8B45 D0             mov eax,dword ptr ss:[ebp-30]
0063D519     8B55 CC             mov edx,dword ptr ss:[ebp-34]
0063D51C <>  E8 FF7ADCFF         call bdiary_e.00405020                   ; ->System.@LStrCmp;
0063D521     74 0A               je short bdiary_e.0063D52D               ; 爆破2
0063D523     A1 B8C16800         mov eax,dword ptr ds:[68C1B8]
0063D528     C600 01             mov byte ptr ds:[eax],1                  ; 置注册成功标志
0063D52B     EB 08               jmp short bdiary_e.0063D535

2005-7-18 23:24
0
雪    币: 1263
活跃值: (607)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
太感谢了。因为它好用。所以研究了几天并没有什么结果。可能汇编功底差吧。积极学习中。
为什么手工脱壳后。用W32DASM无法反汇编呢。能不能写个详细的算法教程呢。
感谢中
2005-7-19 10:05
0
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
6
最初由 dfui 发布
太感谢了。因为它好用。所以研究了几天并没有什么结果。可能汇编功底差吧。积极学习中。
为什么手工脱壳后。用W32DASM无法反汇编呢。能不能写个详细的算法教程呢。
感谢中


简易日记本1.9注册算法初步分析
2005-7-19 11:48
0
游客
登录 | 注册 方可回帖
返回
//