首页
社区
课程
招聘
[旧帖] [原创]一步一步带你玩破解 0.00雪花
发表于: 2013-10-8 14:49 2747

[旧帖] [原创]一步一步带你玩破解 0.00雪花

2013-10-8 14:49
2747
最近和论坛的小廷一起参加了西电的网络攻防比赛,我负责了Crack的部分,学到了很多。本人也是初学破解,小菜一枚。很喜欢破解,很享受其中分析的过程。下面分享一下我的经验,能力有限,难免有不对的地方,希望大家多多指正,共同进步~

下面分享的是crackme2。爆破,以及破解自校验。

首先是爆破,寻找关键点。
1、用PEID查看,nothing found,什么也没找到,不用着急,我们还有后续的判断措施;
2、用OD载入,f9,运行程序,发现正常显示了对话框,说明没有设置侦测OD等调试工具的措施。如果该程序设置了反调试函数,则OD无法正常运行程序的,会直接退出;
3、选择内存查看'M',或者按快捷键'alt+M',查看当前代码所在的区块。发现在代码区,没有加壳。如果程序加了壳的话,程序载入的时候,控制权会首先掌握在壳的手里,隐藏真正的入口位置。载入时当前代码就不在代码区了;

4、接着随意填入name,serial值,点击register ,出现消息框提示‘wrong’,什么都不输入,出现'not be empty',输入超过16个字符,出现‘less than 16 bytes’。将这些提示字符串都在参考字符串中搜索,发现都找不到。
现在这个方法不行了,我们再想其他的办法。既然有消息框,那么我们就直接寻找消息框的函数,MessageBox.
5、打开当前模块的名称,或者按下快捷键'ctrl+N',直接输入'MessageBox'。右击选中MessageBox,选择‘反汇编窗口中跟随’,然后在USER32 的领空先下好断点。

不能直接在输入函数窗口中下断点,输入函数窗口中显示的地址是pe输入表中函数字符串存放的地址。
6、ctrl+f2重新载入,f9运行,输入name和serial,程序断下了,ctrl+f9执行到返回。接着可以看到右边寄存器窗口中字符串'Wrong',还有上面有一个可疑的je跳转,发现上面的call eax就调用了Messagebox。这样,我们在上面的je下断点。

再次重新载入运行,输入name和serial,程序直接断下。我们直接将je 改为jmp,直接f9运行,爆破成功,出现恭喜消息框。

这样我们就实现了爆破。保存修改后。点击运行发现程序直接跳出。这就是文件自校验了。
文件的自校验手段有文件大小校验,时间校验等等。
这个程序的校验方法,我们依旧采取对比跟踪的思路,但是为了减小工作量,我们直接采用createfile函数下断点的方法进行破解。
createfile函数可以获得一个文件的句柄,从而获取文件的大小等操作。
1、载入破解的程序,ctrl+N打开输入函数列表。找到createfile。这里介绍另一种下断点的方法,右键选择查看“调用树”,里面罗列了所有调用了这个库函数的位置。在第一个位置下断点。
2、f9运行,程序断下,查看堆栈窗口的filename 是本文件的地址。说明在读自己。

3、od打开原始文件,同样在craetefile位置下断点。接着运行两个程序,进行比对,找到不同的地方。

4、发现在PostQuitMessage的地方出现了不同,修改上面的jnz为jmp强制跳转,自校验破解成功。

总结一下:
对于爆破,获取提示信息很重要,通过提示信息查找字符串是一种方法,当这种方法行不通的时候,就打开输入函数列表,查找相关函数下断点。如MessageBox,GetWindowTeXt等,
GetWindowTeXt会获取控件的字符串。一般程序获取输入的用户名密码等等,都会用到这个函数,本程序也可以使用这个方法来找到关键点,朋友们可以试试,只是绕的弯要多一点。不过对于初学的我们,多多的把玩一个程序,多种方法都尝试下,是很有帮助的~

对于破解自校验,比较有效但是花费时间的方法就是OD跟踪对比源文件与破解的文件,寻找不同。为了减小工作量,可以用
createfile来锁定位置。

破解原件下载地址:欢迎大家把玩,以及提出其他好玩的方法来破解~吼吼

http://pan.baidu.com/s/11MPpj

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (50)
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢楼主分享!学习学习!
2013-10-9 09:11
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
开卷有益,顶下!
2013-10-9 09:48
0
雪    币: 171
活跃值: (489)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
支持,我后悔没在学校接触这些啊
2013-10-9 09:54
0
雪    币: 205
活跃值: (274)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
话说楼主是西电的?
2013-10-9 10:09
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
求crackme1 的思路,经过什么处理看不出来。。
2013-10-9 15:45
0
雪    币: 42
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼主喜欢玩破解,我喜欢看热闹,http://rghost.net/49293516,这个不知道有没有兴趣玩玩?
2013-10-9 15:57
0
雪    币: 38
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
二当家a奉献,值得学习  谢谢
2013-10-9 19:48
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
学习啦,要是自己做还有待练习,先了解下
2013-10-9 20:38
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
学习学习,顺便看看我的头像上传成功没
2013-10-10 18:03
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
表述的非常好,希望多交流
2013-10-10 19:17
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习了。楼主辛苦了。
2013-10-11 07:53
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
为什么 nmap 使用一次之后 再次使用它的target模块就不能用了啊
2013-10-11 09:24
0
雪    币: 108
活跃值: (44)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
14
我之前也在做。。
2013-10-11 10:02
0
雪    币: 1634
活跃值: (480)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
楼主你的连接不对吧,希望那个小软件上传上来。很需要,如果设置了反调试函数,楼主该怎么解决。希望给个思路。谢谢了
2013-10-13 12:24
0
雪    币: 103
活跃值: (126)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
16
不需要看啊 直接run后字符串参考什么的就行了 而且生成的密码,序列号都是明文的 如:name: fanf 密码在内存中就会显示20010 同样序列号就会显示出来5348……
2013-10-13 15:35
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
看了看,不错
2013-10-13 15:48
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
好东西,不错啊
2013-10-14 00:09
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
mark一下!顺便学习!
2013-10-14 11:04
0
雪    币: 215
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
20
mark一下
2013-10-14 12:23
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
不错。。。。。。。
2013-10-14 12:46
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
开卷有益,顶下!
2013-10-14 21:31
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
思路很清晰,学习了,感谢楼主
2013-10-15 00:36
0
雪    币: 14
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
"然后在USER32 的领空先下好断点。
不能直接在输入函数窗口中下断点,输入函数窗口中显示的地址是pe输入表中函数字符串存放的地址。"

指的在哪里下断点,断点选择什么?新手问问,希望指点
2013-10-15 08:12
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
学习了 谢谢大神分享
2013-10-15 09:50
0
游客
登录 | 注册 方可回帖
返回
//