吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4762|回复: 19
收起左侧

[原创] 记录一个简单程序的破解

[复制链接]
逗逗苍穹 发表于 2022-1-28 14:28


最近有在吾爱破解的论坛上看见这样一个帖子。上面有个exe文件。一看到这,一下子就激起了我的兴趣。就想这破解了来试试。也来练练手。没破解前:


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

1.将程序放入x64dbg


2.然后呢,根据按照流程来的话,应该是搜索字符串。


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


很幸运,一次就断住了。3.按住F8一步一步走


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


和我的猜想一样,果然有个分支。那就在jne那里打一个断点。再来运行程序。看看他会走那一边。


发现他是走入了这个左边的call5.进入call 00422EA6看看当我进入了这个call 00422EA6的时候。发现他还是有个分支


那按照老样子,打一个断点。


发现他走向的右边。这两个分支的前面一个call都是一样的。都是call 00422CF9这个地址。主要就后面两个call。一个是00422E00,一个是422F12。那继续走一下看看。


当程序走到call 00422E00的时候。弹窗就出来了。那样我们进00422E00这个地址看看。


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


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


寻找call 00422E84。因为前面的push ebp和mov结果有点多


只有两条结果。到下一条地址去看看去


到了这个地址。让我们把这个call 00422E00换成call 00429631看看行不行。会不会破解成功?


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

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


其中要格外注意一些call。当走到call krnln.10060D10时发现了可疑的数据


ECX的值变了,变成了E21。这个21不正是加密后的数字吗。那么我们进入这个call看看。
继续一步一步走,到了这样一条语句。


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


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


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


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


可以看到,我们解密出来的秘钥是十进制的16也就是16进制的10。现在我们拿着秘钥去加密一下‘1’看看,得到的结果看看是不是21.


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


可以看到,我们得到的密码是www.baidu.com。这里我们试一下。看看是否是正确密码。


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

免费评分

参与人数 8威望 +1 吾爱币 +25 热心值 +7 收起 理由
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
xiaoyue7788 + 1 + 1 热心回复!
抱书人人 + 1 + 1 谢谢@Thanks!
Zhaofeiyan + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
alanyelan + 1 用心讨论,共获提升!
ZHHua + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
17798 + 1 我很赞同!
我是来日狗的 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

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

Hmily 发表于 2022-2-10 18:08
给你编辑了下图片,换了下行,看起来输入一些,下次可以把图片上传论坛本地贴图,会好一些也防止图床失效。
WoShiXXX 发表于 2022-1-29 16:41
17798 发表于 2022-1-29 17:03
就需要这种教程  论坛的教程太老了  没有声
nbxym 发表于 2022-1-29 16:27
这还简单呀,我感觉对于我来说,已经是很难了
头像被屏蔽
wxf2589 发表于 2022-1-30 05:19
提示: 作者被禁止或删除 内容自动屏蔽
破凤凰 发表于 2022-1-30 06:30
老师很利害,
ZHHua 发表于 2022-1-30 12:16
这种pj过程贴对新人是最好的,一步一步来学,积累经验
jdqx 发表于 2022-1-30 15:30
感谢分享
alanyelan 发表于 2022-1-30 16:04
不错。写的很详细。谢谢分享。
了覅君 发表于 2022-1-30 16:38

支持支持支持
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-25 14:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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