摸爬滚打着学习破解之路--第四章 CRACKME160之四 (续)
本帖最后由 niestcheer 于 2022-4-22 22:24 编辑# 摸爬滚打着学习破解之路--第四章CRACKME160之四 (续)
## 前言
昨天给大家提了下直播圈的两个男人,要你钱的和要你命的。我一直以为要你钱的男人会让人上头,谁能想到要你命的男人也可以让人上头。今天早早在家运动服都换好了,仔细一看才发现,别人星期五不直播。好吧。那就安心学习!
##正题
今天本来想着直接搞第五个程序的。突然想了想,还是尝试着看看这个函数的不同解法吧,如果太复杂,就当给大家做了个错误示范。哈哈
---
## CRACKME 编号 4 破解之路 (续)
**1. 我们直接跳过第一步,进入破解第二步:明确破解目标,确定破解思路**
- 今天的目标是尝试着跟一下算法
- 至于怎么跟,我先给大家上一张昨天的老图
- 昨天我们在恭喜恭喜上面还发现了两个字符串,大概率是密码的算法要用到的地方。
- 所以我们的思路就是程序从哪里调用了它开始跟进,看看中间都经历了哪些变化,走到了恭喜恭喜哪里。
- 好,暂时就这样开干吧
**2. 破解第三步:动手**
- 首先告诉大家我做的第一步是进入了OD的文件夹,然后把UDD文件夹下的东西都删了。为了不被昨天的调试影响,我需要从零开始,免得中途被打断思路。
- 程序进OD,搜索字符串,转到“黑头”这个位置,如下图:
- 这里我打开一个文本文件,先不管有用没用,把`00457C18`等于“黑头Sun Bird”记录下来。还有下面一行的`00457C30`等于“dseloffc-012-OK”也记录下来。然后在这个函数头下断,也就是`00457BD0`的位置。然后让程序跑起来。
- 程序直接断下了,啥事还没干呢- -,这时候断下肯定没用吧。继续运行。界面出来了。随便输入用户名和密码试试。
- 嘿,我去,什么反应也没有。正常来说这里肯定得执行到吧?现在有两个可能,要么后面根本不执行这里,要么就在下面某个CALL里面一直循环着。
- 这就又点难办了。说明此路不通。那怎么办,我觉得找到字符串存储在内存中的位置,看看哪里调用它或者拿它去做运算了
- 在内存中查找字符串“dseloffc-012-OK”,出来如下图界面。
- 第一个位置就是我们查找的字符串的位置,细心的朋友应该看到了我圈出来的位置,"黑头Sun Bird"+"15"+"dseloffc-012-OK"+"用户名"。大概率就是密码了。试了一下,果然是。偶买噶。。。那其实就是说怎么算出15来?我的第一个想法是,多试几个用户名,直接找规律猜密码。然后发现这个内存位置的字符串一直不变。尴尬了。然后我程序重新载入OD重新找到这个内存地址,好吧,存储字符串的内存地址变了。思路至此而断。后面又瞎整了好久。。哈哈,这条路也走不通了。
---
- 感觉到了深深的挫败感。重新来,刚开始不是在函数头下断,运行的时候直接断下来了么。不直接点运行了,跟下去看看再说吧,哎!一个多小时过去了,我回来了,然后也结束了。搞不定。中间本来还做了好多注释的,既然路不对,就不放出来了。哎
---
## 今天感觉有点在灌水,没有什么成果,所以转一个版块发布吧。哎。这个程序到底该从哪里开始下断,为什么从那里开始下断,不知道有没有大大能给个思路。回头我再来死磕。事实证明我不适合去追码。
---
## 最后略有点不甘心的,又想了下。我又发现自己好傻,我明明昨天都找到了判断的位置,改了代码。那应该就是算法的位置才对。所以又回头去找了下。还真找到了关键位置,也尝试的跟了我下,发现又是拿用户名长度做了下计算,然后中间有个40应该是注册码的整体长度,然后也是整个循环比对的次数。具体每个函数中怎么比对,我觉得我还是先放弃了吧。感觉还是不适合我。附上关键位置的截图!
可以试试Ida的伪c辅助分析,
此外楼主已经找到位置了,
可以继续分析分析,无非就是40次比较么
CM的意义就是恶心人,不要被困难吓到,
正是因为困难,突破了才会有更大的成就感、自豪感和满足感 涛之雨 发表于 2022-4-23 13:33
可以试试Ida的伪c辅助分析,
此外楼主已经找到位置了,
可以继续分析分析,无非就是40次比较么
IDA的使用这个是我的短板,OD看了好多教程,算是基本熟练了。IDA现在还是个纯小白,看来得去学习下IDA的使用了。感谢大佬的指点。
页:
[1]