niestcheer 发表于 2022-4-20 20:54

摸爬滚打着学习破解之路--第三章 CRACKME160之三 (续)

# 摸爬滚打着学习破解之路--第三章CRACKME160之三 (续)
## 前言
今天前面几章同时过审。可喜可贺。昨天实在是被NAG搞的有点头大。后面没精力继续干验证了。今天继续干CRACKME160之三的验证。
##正题
今天依然继续冲着3\160的目标前进。冲啊!

---
## CRACKME 编号 3 破解之路(续)
1. 今天就省略破解第一步直接进入破解第二步吧。看得不连贯的,论坛里搜一下前面的文章吧。

2. 破解第二步:明确破解目标,确定破解思路
    - 首先的目标,肯定还是先暴力破解,让程序直接验证成功。(这个方法的思路,前面的文章写过了,不赘述了。)
    - 然后如果暴力破解没问题的情况下,我们还要根据程序的要求,它让我们`FIND`,肯定是不希望我们暴力破解就结束这道题目的。
    - 怎么`FIND`,最简单的当然是直接查找字符串,看是否有疑似账号密码的位置。如果没有,那可能的情况就太多了,只能进了OD以后再看到底怎么回事了。
    - 好,开干!
3. 破解第三步:找到关键破解点,暴力开干
    - 首先查找字符串(我这边用的是用4C大法去除了NAG以后的程序)。下图是字符串搜索界面:
   
    - 省略的操作步骤有疑惑的去前面的帖子看吧,不反复啰嗦咯。从字符串界面,看了CRACKME之二的应该会发现,好像基本上一样。然后,把直接从字符串找到密码的路子堵上了。好吧,先不管,还是先去暴力破解。
    - 从字符串`You Get Wrong`跳转到程序位置,如下图:
   
    - 这里细心的朋友会发现,跟CRACKME之二的内容也是基本一样的。修改`key gen it now`这个字符串上面的一个JNZ判断,改为NOP。就暴力破解成功了。
    - 好吧,暴力破解跟CRACKME之二没有区别,今天的任务量不达标。那就`FIND`一下验证的账号和密码吧。
    - 前面已经说了,我们没有办法从字符串直接找到密码了。我们需要找到获取我们输入账号密码的CALL,然后来跟踪账号密码输入以后程序是怎么来比对的。
    - 好,开干,先下断点。这里我下的断点是
   
    - 让程序运行起来,然后程序断下了。
   
    - 到了这里我得反省一下了。我下的断点好像断下的位置不对。然后我试了好几个文本获取的函数,都没有断下来。然后我又做了好多断点,差点越跑越远的时候,突然反应过来,明明我从字符串已经定位到了用户的程序主空间,我为什么不倒回去找,我是真的傻。然后就找到了程序的入口位置。
   
    - 这里就是前面字符串的位置,一直往上转动鼠标滚轮就找到了。哎,前面我都在干什么啊。然后说真的,心里还是有点慌,先单步跟踪一下再说。
   
    - 到了这里 ,终于发现了我们输入的用户名。然后我各种百度,终于看懂了一段代码。我做了备注,截图如下:
   
    - 好吧,如果要这么一路下去,我感觉我要崩溃了,汇编基础太差了,每一句都要去百度,我的妈呀。它不是让我们FIND么,又没让我们计算,所以我大手一挥,不准备再看算法了,继续单步跟踪走下去,看看哪里会给我们准确的计算结果。按照它那我们用户名一顿操作的过程,可以预知,这个程序用户名没限制,应该是针对用户名的输入做了一堆的计算,然后给出密码。所以,继续找,加油!
   
    - 找到第一个疑似密码的位置,看EAX的结果,然后就用这个试了一下,不对。好吧,继续往下走。
   
    - 找到第二个疑似密码的位置,好吧,还是不对,继续往下走。
   
    - 找到第三个疑似密码的位置,继续不对,继续往下走。
   
    - 找到第四个疑似密码的位置,尝试,完美!!别问我为什么不好好跟算法,因为汇编底子真的差。可能再复制一点,不直接给出计算结果的程序,我得老实回去一条一条百度汇编了。谁叫这个程序让我可以偷懒呢。
    - 剩下的就是写注册机了。有专门的注册机软件,只要在程序执行到`00408501`的时候读取EAX的值,就是我们输入的用户名对应的密码了。
## 因为有了最终的结果,我本来以为回过头去看算法应该会简单的。然后我又浪费了1个小时,哈哈,内功不够就是不够。然后又在论坛里搜了下别人的解法。才知道,居然还涉及到浮点数计算。在下告辞!!!!!内功不够,继续修炼把。这个程序留了两个遗憾,NAG窗口自己的思路最终不知道能不能走通,验证算法无法还原。

------
## 我觉得我可能飘了,只想安心搞破解的,搞算法不是去搞逆向了么。在下告辞!!!

niestcheer 发表于 2022-4-20 21:13

hackerbob 发表于 2022-4-20 21:04
破解他不就是逆向吗

我原来也是这么认为的,但是画眉老师的视频让我对于破解和逆向有一些不同的看法。现在我理解的破解就像一道数学题,我只要能让我的最终结果跟程序要求的结果一样就行,不管这个过程中我是不是偷龙转凤,张冠李戴。而逆向,则是这道数学题,我要跟作者一模一样的做出来,能知道作者的每一个逻辑和证明。
总结就是:懂逆向的肯定懂破解,懂破解的应该向逆向去提升。暂时个人能力有限,所以先凭兴趣,玩明白破解再说。

niestcheer 发表于 2022-4-21 10:19

本帖最后由 niestcheer 于 2022-4-21 10:45 编辑

ygxtys 发表于 2022-4-21 06:43
入库簇文稿和y
大佬,你的这个回答触及了我的知识盲区。。需要学习什么内容能理解你的回答?{:1_907:}

hackerbob 发表于 2022-4-20 21:04

破解他不就是逆向吗

hackerbob 发表于 2022-4-20 21:45

niestcheer 发表于 2022-4-20 21:13
我原来也是这么认为的,但是画眉老师的视频让我对于破解和逆向有一些不同的看法。现在我理解的破解就像一 ...

奥。好像很有道理。。。。

haoer1080 发表于 2022-4-20 21:55

谢谢分享

9992979 发表于 2022-4-20 23:17

感谢分享

AIRTIM 发表于 2022-4-21 06:26

学习,感谢分享

xu741852 发表于 2022-4-21 10:02

继续催更,精彩极了。

steam2008 发表于 2022-4-21 10:36

继续努力,期待你能成为一代大侠
页: [1] 2 3
查看完整版本: 摸爬滚打着学习破解之路--第三章 CRACKME160之三 (续)