逗逗苍穹 发表于 2022-1-28 14:28

记录一个简单程序的破解

https://pic2.zhimg.com/80/v2-6cb15cc416d5790ba25ec56635bf2add_1440w.jpg

最近有在吾爱破解的论坛上看见这样一个帖子。上面有个exe文件。一看到这,一下子就激起了我的兴趣。就想这破解了来试试。也来练练手。没破解前:
https://pic2.zhimg.com/80/v2-5d56f25a67b5fcd8040207ab47472061_1440w.jpg

在不知道密码的情况下,我们随便输入一个信息会显示搞错了啦。这样子我们就进不去了。开始破解一.使用爆破法来破解

1.将程序放入x64dbg
https://pic2.zhimg.com/80/v2-439570884376316c55e0e2e477746845_1440w.jpg

2.然后呢,根据按照流程来的话,应该是搜索字符串。
https://pic3.zhimg.com/80/v2-2ffe60bfd02f8a55f209c3c54b4b1b06_1440w.jpg

搜索完了字符串,想在里面找到"搞错了"的字符串。但是没有找到。但是还是找到了密码这样的敏感词汇。那么我就进入密码的那行。打上一行断点。然后运行程序。
https://pic2.zhimg.com/80/v2-b63551a399e148da714b02354520ba35_1440w.jpg

很幸运,一次就断住了。3.按住F8一步一步走
https://pic1.zhimg.com/80/v2-89133b5076f9d995ce70e2ab91a2471c_1440w.jpg

走到这个call 422D0A就会弹出弹窗告诉搞错了。那就说明这个call说不定有问题。4.进入call 422D0A查看这种程序一般都会有一个分支,一边是正确,一边是错误。进入这个call后,就按住G来查看流程图
https://pic3.zhimg.com/80/v2-1d284194f73a6f09e1a578e43acd43ee_1440w.jpg

和我的猜想一样,果然有个分支。那就在jne那里打一个断点。再来运行程序。看看他会走那一边。
https://pic1.zhimg.com/80/v2-351692ec17fce2fa9e95233dd93020d8_1440w.jpg

发现他是走入了这个左边的call5.进入call 00422EA6看看当我进入了这个call 00422EA6的时候。发现他还是有个分支
https://pic4.zhimg.com/80/v2-62f9be601fbbb8bdf71d8ddd54007697_1440w.jpg

那按照老样子,打一个断点。
https://pic3.zhimg.com/80/v2-a854807ae7ad7c27239f402effeaa8fa_1440w.jpg

发现他走向的右边。这两个分支的前面一个call都是一样的。都是call 00422CF9这个地址。主要就后面两个call。一个是00422E00,一个是422F12。那继续走一下看看。
https://pic3.zhimg.com/80/v2-761262ab896a9ee0dc99310d12c132fe_1440w.jpg

当程序走到call 00422E00的时候。弹窗就出来了。那样我们进00422E00这个地址看看。
https://pic3.zhimg.com/80/v2-b87afb7eef73dc09684965ea8995bfaa_1440w.jpg

发现这个函数并没有分支。就一条路。那么这个就可能是弹出搞错了的弹窗。那这样的话,我们是不是只要将前面的call 00422E00换成call 00422CF9就行了呢?我们进入00422CF9看看,是不是也是一条路径,没有分支
https://pic1.zhimg.com/80/v2-a0e3d6102f06cfc69e553405e2767604_1440w.jpg

发现有好几条分支。其中动不动就让你返回00422E00这个错误的地址。我们要躲过这些陷阱。还得在这个call继续分析。但是我想这个call 00422E00就是弹出一个弹窗的作用。这个正确的密码出来。还是弹出一个弹窗。其中处理显示的字符不同。其他都相同。那么找一下和call 00422E00一样的call。试一下看看行不行6.找call按住ctrl加F寻找(当然,你也可以一步一步继续找,找到一个最后一个分支,与00422E00不同的
https://pic3.zhimg.com/80/v2-740ac1864c43e489a3ef93ab92e57892_1440w.jpg

寻找call 00422E84。因为前面的push ebp和mov结果有点多
https://pic1.zhimg.com/80/v2-c63151acf7abc36a557b3da4730d0664_1440w.jpg

只有两条结果。到下一条地址去看看去
https://pic4.zhimg.com/80/v2-93e48977a7bff1323760336197db9f7b_1440w.jpg

到了这个地址。让我们把这个call 00422E00换成call 00429631看看行不行。会不会破解成功?
https://pic4.zhimg.com/80/v2-098371c2ef7b210a088f083641aa1063_1440w.jpg

看来是修改成功了。整个过程就如上了。

二.分析算法
首先我们进入加密的call。这个之前是已经找到了。我们单步一步一步走。要看旁边的寄存器窗口。看看是否有可疑的数字。看看我们输入进入的数字是如何变化的。
https://i.bmp.ovh/imgs/2022/01/4e154d0ecaf87fd3.png

其中要格外注意一些call。当走到call krnln.10060D10时发现了可疑的数据
https://i.bmp.ovh/imgs/2022/01/e544c9f04a141f0a.png

ECX的值变了,变成了E21。这个21不正是加密后的数字吗。那么我们进入这个call看看。
继续一步一步走,到了这样一条语句。
https://i.bmp.ovh/imgs/2022/01/c6b8d5739c32c884.png

发现是个异或加密。经过这行语句。我输出的1,变成了E21。但是我不知道。dword ptr ds:里面是个啥值。没有关系。异或可以还原。我们只要拿E21和31异或一次就可以知道dword ptr ds:的值。后面发现dword ptr ds:是E10。得到E21这个和我们的21还是有点差距。我们继续走。看看他是如何去掉E的。但是走到后面,越走越复杂。我那薄弱的汇编基础已经不能容忍我走下去了。
那该咋办?让我们反过来想想。前面有个E10。那肯定是有传E10的语句。我们找找看,说不定有突破。
https://i.bmp.ovh/imgs/2022/01/fed960c46166deb6.png

确实也让我找到了。是push了一个E10。为了确定这个是不是我们要的那个E10。我们改改看。改成8看看。也就是对16进制的8异或,和开始的E10不一样。那加密结果应该不一样。果真,加密结果变了。由开始的21变成了39。而这个39正是‘1’和8的异或。那么现在我们是不是有理由怀疑。这个加密就是异或加密呢?这个可能就是异或了一个E10然后只取最后两位。这里我们实验一下。将push E10改成EE0。我们输出一个特殊字符‘’。这个字符对应的ascii是1,和EE0异或之后就可以获得ee1.然后我们看看。这个加密后的结果是啥。
https://i.bmp.ovh/imgs/2022/01/49adebb54fd02ec1.png

这里我用的是AA0和来试的。效果一样。发现异或生成的AA1只取了A1。也就是说这个加密方法是用E10加密。然后取后面两位。其实就是异或了一个16进制的10。当然我们也可以对此进行验证。
这里我们来试试。首先我们随便输入几个数字和字符。来获取加密后的数字进行对比。
https://i.bmp.ovh/imgs/2022/01/9f46bba3e3b9db3a.png

之前说到67355A333是后面加上的,也就是前面的20是‘0’加密后的结果。21是‘1’加密的结果。3E是‘.’加密后的结果。这里我着重选了个.来说明3E。是因为说明这些数字都是16进制的,不是十进制的。那个输入的'0'也不是数字0而是字符0,也就是对应的数字是48。不然容易弄混。后面解秘钥的时候就容易出错。
原字符和加密后的数字都获取了。现在我们只要在异或一次就可以获得秘钥。
https://i.bmp.ovh/imgs/2022/01/48e44e44d3c23571.png

可以看到,我们解密出来的秘钥是十进制的16也就是16进制的10。现在我们拿着秘钥去加密一下‘1’看看,得到的结果看看是不是21.
https://i.bmp.ovh/imgs/2022/01/4371cd2deeaf78ac.png

记住要输出的是16进制才可以得到21。看来加密方式是没有啥问题的。那么我们现在就还原一下原密码
开始我们得到加密后的密码是6767673E72717974653E737F7D,我们两个数代表一个字符。但都是16进制的哦。
https://i.bmp.ovh/imgs/2022/01/de332433a163aaaf.png

可以看到,我们得到的密码是www.baidu.com。这里我们试一下。看看是否是正确密码。
https://i.bmp.ovh/imgs/2022/01/c9d0308818355389.png

可以看到,我们这里成功进入。至此。程序破解完成。

Hmily 发表于 2022-2-10 18:08

给你编辑了下图片,换了下行,看起来输入一些,下次可以把图片上传论坛本地贴图,会好一些也防止图床失效。

WoShiXXX 发表于 2022-1-29 16:41

恭喜楼主成功申请加入论坛!{:301_997:}

17798 发表于 2022-1-29 17:03

就需要这种教程论坛的教程太老了没有声{:301_999:}

nbxym 发表于 2022-1-29 16:27

这还简单呀,我感觉对于我来说,已经是很难了

wxf2589 发表于 2022-1-30 05:19

破凤凰 发表于 2022-1-30 06:30

老师很利害,{:1_927:}

ZHHua 发表于 2022-1-30 12:16

这种pj过程贴对新人是最好的,一步一步来学,积累经验

13613105079 发表于 2022-1-30 15:30

感谢分享

alanyelan 发表于 2022-1-30 16:04

不错。写的很详细。谢谢分享。

了覅君 发表于 2022-1-30 16:38


支持支持支持
页: [1] 2
查看完整版本: 记录一个简单程序的破解