吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11706|回复: 40
收起左侧

[原创] 初练160个CrakeMe程序之001

  [复制链接]
海天一色001 发表于 2017-4-10 13:44
本帖最后由 海天一色001 于 2017-4-11 17:55 编辑

160CrakeMe程序之001
4/7/2017 1:55:10 PM
CrakeMe第一个程序,是纯英文的。我先试着用在论坛中学习到的方法,在程序的三个窗口加了三张背景图片,把能汉化的全汉化了。这也花了我不少时间,也是在不停出错、更改中不断地加深了对Od和其他软件的理解。
汉化完之后其中还有一些问题,如原程序中有快捷键的地方,我没敢动英文,并且英文翻译过来也不一定准确,汉化不是很成功。但只是自己的一个练习,本应该是没什么问题的。
实际的破解中出现了新的问题:原程序中有一个注册码是英文的,我汉化后程序无法注册成功。将注册码改回英语试一试,改后正确,可能是程序不支持中文吧。后来又发现支持中文,只是因为字符串长度改错了,所以程序不支持了。
程序第一个界面弹出信息框,先不管它,把主程序先爆破了再说。因为在OD中进行的汉化,所以对跳转的地方很熟了,直接将其nop或者jnzjz)改掉!!!!
程序中有两个子程序 ,一个是要求输入用户/注册码,另一个只输入注册码,所以有两处需要更改,一处是0042F4D5(注册码),另一处是0042FB03(用户/注册码),将jnz X001Acid_.0042F4F1jnz X001Acid_.0042FB1F这两句改为nop或者用jz换掉jnz。但用了jz后会出现正确的注册码反而不能注册的问题,这也作为下一步一个学习内容,看看如何改才能不管正误都jz成功。
爆破成功。
再研究一下如何不改跳转。因为已经重载了很多次,对程序也比较了解了,直接来到下图这里,这个call的作用是比较注册码,结果存入Z标志位,那么我进入call,改一下试试: 1.JPG

第二次,F7进入call004039FC)后,观察到多处跳转到00403A9A地址后是出栈命令,而后retn返回,
2.JPG




3.JPG
将关键跳转上面的比较cmp eax,edx改为cmp eax,eax后(爆破),程序出错,界面中按键上的字全都没有了,如果不管继续点注册按钮,则会出现如下图:
4.JPG

OD载入,在出错的地址下断,如图,此处的eax0,地址ds:[eax]也只能是ds:[00000000]=??? ,程序无法找到数值,也就无法赋值,故出错。
5.JPG
将比较语句改回去后,程序恢复正常,说明此次尝试不改跳转只改判断语句不行。还是小白,搞不明白啊。先放一放,标记一下,到网上找找类似的情况学习后再进行下一步修改。另外,这个call004039FC)只是判断注册码的地方,没有计算注册码的功能,所以在这里面全是调用寄存器的值,改了这个call里面的东西没什么用。 6.JPG


找注册算法:在这个call上面应该有注册算法,分析后从段首下断点,F8单步跟踪试一试:
7.JPG

8.JPG



0041AA58处的call应该是取用户名和用户名的长度,将长度给eax,用户名所在的地址给另一个寄存器:!!!!!!!!!!!本call返回的结果是注册码中间的4位数字,怎么计算的还没看明白,以后再研究吧!
在有用户名和注册码的子程序中:用户名的长度不能为空,否则报错!!!!!!!!
9.JPG

用户名的长度小于4个字符,也会报错!!!!!!!!!
10.JPG

在只有注册号的子程序中,注册号可以为空。
11.JPG

追注册码时发现,本子程序将真码固定为“hello Dude!”,在计算注册码时只是调用了常量hello加空格加Dude!这三个字符串组成了注册码。


4/9/2017 3:52:39 PM
爆破成功了,但是出现的前面的弹出Nag没杀掉!!!!注册算法没找出来!!!!
结合吾爱破解的官方教程中学到的方法,将messagebox函数及它的参数全部nop掉,看上去成功了,其实是错误的,将程序其他调用到messagebox之处全部干掉了,以后不管是正确还是错误的提示都出不来了!!!!!
12.JPG

如上图,messagebox的参数有4个,将上面的4push全部nop,错了!!!!
(上面紫红色部分是nop掉的部分)
所以要修改的话,只能找到第一个弹窗的调用来源,将其nop掉或者说干脆转入程序第二个选择界面才行。
重新载入程序,单步运行,经过多次重新载入,下断,NAG的出现经过了四次call,在第三次调用上做文章吧(第四次是程序中其他部分都要调用的call,不能修改)。
13.JPG

看到此call上一句是mov eax,?????,下一句是xor eax,eax,猜测此call出来后只有eax的值有用,其他参数不能改变。所以单步跟入第三个call
18.JPG

第一句是 push 0,下面是赋值给弹出信息框的参数字符串,最后调用弹出窗口的call,最后再返回第三个call的下一句,也就是xor eax,eax。对比了一下,在Nag弹出后的eax=1,所以在这个调用里就直接第一句mov eax,1,第二句返回retn!!!!试一下看看。
19.JPG

运行成功了!!!赶紧保存吧。

16.JPG

这个提示又让我心惊肉跳,咬牙点“是”,另存一个,马上运行一下,好在过去了,没白费功夫。
那么第三层调用call修改成功,第二层、第一层是不是也能修改一下?试!
重新载入,又折腾了好久,还是没成功,先这样吧,下回继续改。

补充:由于网友“xuanqing 发表于 2017-4-11 09:21
爆破也是有技术含量的

在哪里爆要分析出来才行的意见,
我将爆破的过程补充如下:使用中文搜索引擎,找到错误提示信息框的提示文本,英文版是“Try,中文是再试一次,这里有两个,(见下图)分别对应只有注册码的子程序和有用户名/注册码的子程序。双击其中一个“再试一次”:(我点击的是下方那个)
chnascii.png
进入CPU界面,程序就在这一句上了。向上查找跳转语句,向上两行就是一个jmp(无条件跳转),跳过注册失败,但是没有跳过,说明在这一句执行前有别的跳转跳过了它。
2.png


3.png
Jmp语句的下一句,是“0042FB1F  |> \6A 00            push 0x0”,可以看出此处跳过了jmp,使程序走向了注册失败。
4.png
所以向上找到此处的来源:沿着红线直接来到了地址0042FB03处,也可以用下图的方法,在信息窗口中右键点击“跳转来自”这一句话,选择“转到jmp来自0042FB03”,  同样能够来到jnz跳转语句处。
5.png
将jnz X001Acid_.0042FB1F命令用nop填充掉;

6.png
然后返回到中文搜索引擎窗口,找到另一个“再试一次”的文本,同样的方法来到0042F4D5地址处,将这一句的jnz X001Acid_.0042F4F1语句nop掉;最后保存程序,运行一下,成功了。

免费评分

参与人数 10吾爱币 +16 热心值 +10 收起 理由
DrCatcher + 1 + 1 用心讨论,共获提升!
powerpp + 1 用心讨论,共获提升!
Adieus阿斗 + 1 + 1 谢谢@Thanks!
菜小刀 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Hmily + 8 + 1 用心讨论,共获提升!
丶风存 + 1 + 1 用心讨论,共获提升!
白笙 + 1 + 1 用心讨论,共获提升!
夜晚太亮了 + 1 + 1 用心讨论,共获提升!
qmopl + 1 + 1 已答复!
skerry + 1 + 1 我很赞同!

查看全部评分

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

 楼主| 海天一色001 发表于 2017-4-12 08:52
灰太狼大王 发表于 2017-4-10 18:21
我找到注册码了,运行程序的弹窗想去掉,结果全不弹了,不知道哪里不对

程序的弹窗有五个,一个是进入主程序之前的NAG(不知道中文该说什么),两个注册成功,两个注册失败,都调用的messagebox函数,如果你在最后一层也就是直接调用函数时跳过或者nop掉,所有的调用都调不到了,肯定是不仅NAG被杀,注册成功或失败的弹出消息框也没了。
我在上面也谈到了,比如杀NAG时,最好是在第一层调用时(也就是说不影响其他地方的调用)改,第二层、第三层call处可能都有来自其他地方的调用,修改后可能导致其他程序段失败。
 楼主| 海天一色001 发表于 2017-5-3 08:26
Adieus阿斗 发表于 2017-4-28 19:13
楼主,调用子程序出现access violation错误的话应该怎么解决呢?

你好!这个问题我也不知道该怎么解决。
我的理解是这样的:出现这种错误,一是作者原程序未考虑到,未进行错误处理,如用户名为空,程序中要调用用户名时一些函数不接受空或0(如除法中的除数不能为0),而作者因各种原因未处理这个错误,导致系统出错;另一种就是我在修改时改变了程序的流程,或者是错误的修改了数据,同样导致了系统不能正常运行。以我目前初学者的水平,现在真的是无法解决这个问题。
如果你有什么好的办法,希望能告诉我一下!!
 楼主| 海天一色001 发表于 2017-4-10 14:01
自己回复一下,为了上图累得够呛,从word文档中复制到编辑框中一看只有文字了!只好将图片一张张地粘贴到画图中保存,上传,再找到对应的位置加上,一不小心还加错了!
由此对论坛中上传教程的大神们更加佩服了,真的感谢论坛里的所有无私奉献的大神们!
laomacao 发表于 2017-4-10 17:45
加油!加油!
yldets 发表于 2017-4-10 17:52
加油,好久没来了
★邪梦 发表于 2017-4-10 18:04
支持楼主,谢谢分享,
ooqqzxc 发表于 2017-4-10 18:20
楼主加油
灰太狼大王 发表于 2017-4-10 18:21
我找到注册码了,运行程序的弹窗想去掉,结果全不弹了,不知道哪里不对
烟雨南 发表于 2017-4-10 18:47
感谢楼主分享经验
Hymn 发表于 2017-4-10 19:06
哇塞,之前学过一段时间,后来因为考试耽搁了,,然后就没继续,现在连之前学的那点东西都要忘了。时间真的是挤出来的
鸡蛋好吃不 发表于 2017-4-10 20:09
加油 同楼主一样学习
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-4-19 08:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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