吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 47932|回复: 446

[原创逆向图文] DXF诛仙FZ【一款可可通杀无法解决的FZ】

  [复制链接]
天朝的梅花 发表于 2018-5-16 22:42 | 显示全部楼层 |阅读模式

本帖最后由 天朝的梅花 于 2018-5-21 03:27 编辑

俗话说的好授人以鱼不如授人以渔


可可通杀软件给了你一条做熟的鱼

而假设有一天一条生鱼摆在你面前,没人给你做鱼了,你不能说生吃了它吧?


游客,如果您要查看本帖隐藏内容请回复

8.png


然后返回到汇编窗口在堆栈的第一行右键


9.png


10.png


果不其然找到了传说中的标志位:1F

想办法做掉它喽{:5_121:}


在1F的位置右键找到修改然后改0


11.png


然后双击去除断点运行一哈


12.png


13.png


我 Ri 什么鬼? 关机睡觉  


既然有详细问题信息点开看下吧


14.png


程序里找一下吧


模块基址+异常偏移 = 00400000 + 00009dcd = 00409dcd


首先ALT+E找到程序的主模块双击进去

或者Ctrl+G 输入00401000 回车


然后再次Ctrl+G输入刚才我们算出的异常代码地址 回车


15.png


原来是个INT3暗桩

断首retn

没办法因为程序已经死了 刚才我们的分析必须重复上述所有步骤在它异常之前提前到达它的异常点

否则程序就死了无论怎么分析也没办法了。


ok重复刚才的步骤以后

在修改判断位1F之后不能直接运行了,因为知道结果会碰到暗桩导致程序假死


那么在修改判断位1F以后怎么办,这里因为VM要释放源汇编代码

所以需要时机


时机就是在调用系统函数:CreateWindowExA 的时候

【这个函数是用来创建一个具有扩展风格的层叠式窗口、弹出式窗口或子窗口

也就是说在它弹出程序主窗口之前我们使它停止下来

然后找到刚才的异常地方把其retn掉


我们可以用在快捷命令窗口下:bp CreateWindowExA 这个命令让其断下


或者用工具API常用段点里找到这个断点


17.png


好了我们运行两次第一次在:LocalAlloc 这个函数断下

我们修改标志位1F以后继续下断:bp CreateWindowExA

然后在运行一次就断在了程序窗口弹出之前

我们Ctrl+G输入之前找到的错误地址【别忘了先回到程序领空也是就ALT+E然后找到主程序双击】


好了今天继续更新
因为昨天发现这个东西并没有那么简单,而且它竟在我发完教程以后更新了
我估摸着也许作者正在偷偷的偷窥我的教程?
那我只能说一声抱歉了啊哈哈哈

这玩意是个双重验证也就是说
外层的验证只不过是一层壳
而如果PJ了验证那层壳以后
壳就会放出真正的FZ

而真真的FZ里还有一层验证
我们之前所有的分析都是建立在验证壳上
不管怎样想办法让验证释放真真的FZ才是我们的目的
废话不多继续教程
上次说了我们得提前到达int3暗桩的断首retn
才能阻止程序奔溃

今天最新版更新以后我发现
没有虚拟机检测了
那么就更加方便我们了,不过他竟然把字符串给我混淆掉了
妈的蛋,还好我们之前有存根
先讲如果过int3断点吧
我们载入最新版
地址自己去下载:http://dnf-nb-zhuxian.cccpan.com/
密码:6666

不懂这个断点含义的同学可以看上文

然后直接运行【因为没有虚拟机检测所以可以直接跑起来】

等程序抛出异常【这是一个暗桩,应该是作者自己写的一个检测OD的功能暗桩】

1.png

好的我们重新记下异常偏移地点

然后套用公式:基地址+异常偏移 = 错误汇编代码段
基地址:00400000 + 异常偏移:0000d918 = 错误代码段:0040d918
这里的基地址用AIT+E 然后查看当前我们调试程序的名称【也就是内部诛仙.vmp.exe】
切记双击来到程序领空【系统领空是找不到异常点的,因为异常点被作者写在程序中而不是调用系统函数来抛出异常】

【此时的程序依旧处于假死状态不过这并不妨碍我们查看代码段】
然后输入刚才我们找到的异常地址:Ctrl+G 输入:0040d918 【记得回车】
2.png

可以看到异常点了,这里我们直接从断首开始复制二进制【也就是这里异常点的特征码方便等下异常之前找到它】
3.png

好了我们重载一下程序然后重新下断点用快捷命令行:bp CreateWindowExA 【记得敲回车】
之所以下这个断点是因为现在如果直接到程序领空里看代码是没有任何代码的【因为此时VMP壳还没有释放源代码】
这个断点作用就是在VMP释放代码以后程序运行之前断下来【时机刚刚好不多也不少】

程序断下来以后我们AIT+E 或者直接Ctrl+G输入00401000【回车来到程序领空】
然后我们直接 Ctrl+B 二进制码快捷查找命令粘贴刚才复制的二进制码也就是俗称的特征码

4.png

5.png

直接来到了断首我们直接按F2下断点然后运行跑起来看一下

结果又抛出了一个相同的异常
而且还是刚才的位置
那是怎么回事
仔细一看原来是因为我们用二进制特征码找到的地方不是刚才抛出异常的地点
看来这个暗桩并不存在为一个啊,可能有3、4、5、6个
那我们该怎么办呢?
没关系我们就继续用特征码找 直接CTRL+L 来到下一个特征码位置【直到提示找不到下一个】
每找到一个就下个断点
然后我们看看找到几个
最后找到两个
好的那我们重新载入程序

继续更新教程
最近作者对防逆向一块很是上心,我发现他最新的版本启动了可可高级验证模块
所谓高级就是FZ验证开始验证你的合法性
换句话说作者的验证后台开始起作用了
它会判断你的账户和密码是否为正版用户
如果正版点击登录提示成功
如果你的账户和密码没有存在于它的后台
他就返回一个错误参数给你
但是这个参数返回后
你点击登录以后没有是没有任何效果的
有人可能好奇高级和普通有什么区别
【高级只返回一个参数】
【普通返回多个参数】
高级参数:即为无效果参数所谓无效果就是不会触发任何暗桩和提示【间接的增加了逆向的难度】
普通参数:每一个返回值都可能处发一种提示或者一种暗桩
而我们可以根据触发的暗桩或提示顺藤摸瓜【方便我们逆向】
好了 话不多说
我现在来彻底分析一下这个FZ的验证思路
首先:如果通过外层的可可验证,验证外壳会释放两种文件
1.第一种:真真的FZ程序 2.第二种:第一层通过的标志

标志文件的作用:作者说是用来防封的
而通过本人实践发现
真真的FZ在启动之前会寻找标志文件如果没有发现即不会启动
那么现在我们的逆向分析思路就变得很清晰了
1.首先要通过可可的外壳验证让其释放真真的FZ程序和标志文件
2.启动真真的FZ然后让其成功
可是我发现作者最近不光启动了高级模块而且还加强的VM的力度
把登录关键CALL里的代码V的一塌糊涂根本没法分析
而且即使现在你如何努力最后发现登录按钮就像失效了一样再也不会有任何效果
这里就要用到一个巧妙的方法,因为旧版验证可以释放验证程序而且程序本身VM力度很弱
所以我们只需要找到一个旧版本的验证然后将其逆向让它释放标志文件
然后在下载一个新版FZ  然后 用PE提取工具提取藏在程序内的新版FZ
最后即可达到逆向目的

好了正式开始新的教程
首先下载一份它之前的版本
我在这里已经帮大家提供了下载地址
地址:https://www.lanzouw.com/i12cm0h
这是它2.0的版本

我们下载下来然后用OD加载
这里我给大家推荐一款OD过检测插件
是大牛最近才更新的玩意这东西很好用
ScyllaHide
下载地址:https://www.lanzouw.com/i126ywf
下载好后按照下图配置
1.png

然后进入plugins文件夹中

2.png

将这些东西拖进OD的plugins文件夹中

然后再启动OD

3.png

根据不同的壳选择不同的对策
VMP壳就选择VMP
4.png

好了然后将2.0FZ载入OD
这次只用修改标志位
暗桩不会再被触发因为过检测插件过了暗桩检测
还是按照之前的方法下LocalAlloc 断点
然后修改标志位为0
双击去除断点
运行
不会的往上看

这次很顺利的进入了FZ登录界面
5.png

老办法用字符串搜索或者用易语言按钮事件
按钮事件代码:FF 55 FC 5F 5E
切记做这一切的时候一定要在程序领空
6.png

然后Ctrl + B 输入按钮事件特征码
7.png

双击下断
因为作者启用了可可高级模块
所以即使这里我们通过字符串
ENO、返回错误、黄金会员点数不足、扣点成功、err 等等一系列的关键字
修改后点击登录还是没有任何提示和功能
但是通过之前的我的分析
发现它的按钮CALL进入后
无非就是上述所有字符串代码验证全部跑一遍之后
最后进入一个关键CALL
这个CALL也就是在网络验证成功之后
释放FZ源程序和标志文件的CALL
这个CALL也在登录按钮CALL里
有兴趣的朋友可以自己分析一下
上述所有字符串改完之后还有一个网络回调CALL
那里用
MOV eax,1
retn
赋值之后
最终会调用到我说的这个关键CALL里
不过在作者启用高级函数之后
之前所有的错误字符串都不会再报错
只能用笨办法下按钮断点之后F8单步一步一步跟踪才能到达最后的关键CALL
这里我就不在叙述
有兴趣的朋友自己试验吧
这里我直接告诉大家怎么找到这个CALL
用关键词搜索
8.png

关键词:请选择地下城与勇士目录
新的版本因为登录CALL所有代码已经被VM干净
不会再有任何字符串可以搜索
所以现在只有用老版本开刀了
找到之后双击进入
9.png

这个CALL也就是在所有验证和暗桩都被通过了以后程序最终必需要运行的CALL
他会释放源程序和标志文件
我们记下段首地址
段首地址:004117B0
我们现在要做的很简单点击登录
代码断在按钮事件CALL
然后我们F7跟进
替换验证CALL段首为程序终级功能CALL段首
做到移花接木
10.png


程序断下
11.png

F7跟进然后F7单步【因为易语言的按钮事件提供的只是一个接口】
换句话说也就是易语言按钮事件本身是一个功能CALL
而这个CALL的功能就是当用户按下按钮后
易语言按钮功能CALL调用作者想让程序执行运行的功能CALL里运行起来
也就是俗话CALL中CALL 【CALL到想要CALL的CALL里】【调用到想要调用的代码段里】
所以第一个CALL 只是一个 调用 CALL
它调用了验证流程CALL
我们F7到验证流程CALL的段首
改变原来它要折行的验证流程
变成最后要释放程序的流程CALL
12.png

我们在段首按空格键
然后输入汇编代码:JMP 004117B0 回车
然后直接F9让程序跑起来
13.png
啊哦程序被我们完爆了,恭喜通关
我们选择DNF目录之后他就会释放标志文件
源FZ也会被释放但是我们现在不需要老版本的
我们这里直接去他的网盘下载最新版本的FZ
http://dnf-nb-zhuxian.cccpan.com/
密码:6666

下载好后 用PF工具提取里面的EXE文件
即可提取到最新的FZ
因为FZ里自带垃圾安装所以我直接为大家做好了压缩包链接
FZ最新版本:https://www.lanzouw.com/i12cx7a
PE文件提取工具:
https://www.lanzouw.com/i11atzg
PE提取工具用法【打开FZ选择进程】
如下图所示
先打开FZ然后打开PE工具FZ会弹出虚拟机检测提示我们无视
找到FZ的进程然后第一个进程双击点击提取
14.png

15.png

16.png

可以看到文件夹里多出了三个其中两个DLL
一个真真正的FZ程序
我们现在双击真正的FZ程序不会有任何反应
我们直接尔到OD中看看

17.png

看来真正的FZ也带了壳,懒得查壳了
直接手动找一下OEP吧
用的是ESP定律

首先F8单步
然后观察寄存器中ESP和EIP的变化
两者同时变动以后【也就是同时变红以后下硬件断点】

很幸运当F8单步第二步就发现ESP和EIP同时变红
鼠标点击寄存器中的ESP的值右键按照下图

18.png

然后直接F9跑一下
程序断在了一个很大的跳转上
熟悉ESP定律的都知道
百分之80单步F8一下就是OEP【程序入口点】
我们单步F8一下

19.png

来到了一片乌漆嘛黑的地方
删除分析即可恢复源代码
发现还是和刚才程序载入入口的代码一样
那我们再一次用ESP定律
再一次F8单步
ESP和EIP又一次同时变红
我们继续在ESP处下硬件断点
F9跑起来
程序断在了一个JMP上面我们F8到JMP在F8一步就到了程序的入口点
20.png

看得多了也就懂OEP【程序真正的入口点长得什么样了】
21.png

然后我们删除所有硬件断点
22.png

F9运行的话会退出【因为之前跑过一次程序】
所以我们提前下一个退出断点
23.png
24.png

下好断点F9跑起来
程序退出了
我们看堆栈
堆栈的第一行就是程序中调用退出功能CALL的回调段首
堆栈就像一个瓶子它的作用是存一些需要处理的数据
数据被调用以后会被装进瓶子内
用完以后会被扔出去
也就是哪来的回哪去
电脑想要知道它从哪里来就得顺藤摸瓜
这里的藤就是踪迹
我们直接在堆栈窗口的第一行回车键敲一下
就回到了它进来的下一行
发现他不过是一个退出功能CALL
我们直接段首RETN
25.png

上一个【retn返回参】下面第一行就是下一段代码的段首这是规则
我们直接将其retn
但是程序此时已经死了
所以只好复制二进制特征码我们得在他死之前
提前来到它死去的那个地方
盗梦空间都看过吧?
小李子演的.就是在梦里制造一个梦
【也可以用陈奕迅的歌词来解释:梦里梦见醒不来梦】
其实看完以后挺感动的
因为小李子所有的梦都围绕着一个梦展开
那个梦就是他妻子没死之前的梦
他之所以在梦里做梦只是因为他想活在他想活在的那个梦里

烧脑又拗口的语言
但是好好用脑细胞分析通了也许你也会感动到
好了我们重载程序相当于创造一个梦境这个梦境是在程序还没有死之前
但是我们其实知道它会死
所以我们要做的就是不能让他死
推荐大家看一部小短片:解夏的MV【做的相当的棒】
看完你不会明白什么{:5_188:}
但是当你开始假设MV里的救了女孩的那个男人是当初预见女孩的男孩长大以后穿梭时空回来
拯救女孩防止她爱上当初的那个自己的那个人你就会明白点什么了{:5_188:}
26.png
我们选中这段促使程序假死的代码
右键选择二进制 —— 二进制复制
然后重复之前的寻找OEP的步骤【因为没到达OEP之前程序壳不会释源放代码】
到达OEP之后Ctrl+B 搜索特征码
找到以后RETN掉
然后运行
27.png

28.png

好了程序总算复活了

29.png

然后呢?
然后我们随便打开一个文件
可以新建一个记事本
在记事本页面选中输入A然后按HOME
我们不能用DNF程序做演示了
因为DNF程序自带驱动保护无法任何形式的调试
如果用打开DNF程序后按HOME键以后OD就会奔溃我们也就是失去了调试的机会
所以只能勉强用记事本做例子演示了
当按完HOME 键以后最小化记事本
打开FZ发现FZ没有任何提示了
这就证明FZ加载记事本成功了
然后我们在FZ界面按F1
30.png

然后我们顺腾摸瓜
搜索字符串
关键字:黄金
然后双击进入代码段
然后我们在断尾下断
31.png

我们回到FZ继续按F1
程序断下我们F8单步
看看它返回到哪
究竟被谁调用了
32.png

返回到这并没有用因为没有跳转可以跳过这个调用【我们要跳过错误提示所以要寻找能跳过它的判断】
我们继续F8单步
发现来到了系统领空我们直接:AIT+F9让它回到程序领空
我们从系统领空出来后直接来到了程序中调用它的地方
我们发现有在调用他的地方的上面有一个判断可以跳过错误提示
我们双击下断点然后改成:JMP
33.png

34.png
改完以后我们F9让程序重新运行起来
在JMP处下断点
按F1键程序重新断下来
断在了JMP上我们F8单步
F8到下一个CALL上我们回车进入看看
只有一句JMP【我们回车跟上去看看】
里面只有一个CALL我们在回车跟进去看看
一直跟到这里我们发现
35.png

发现是一个易语言提供的调用DLL的功能CALL
我们不用管
按小键盘上的负号键也就是减号键 -
回到我们之前进入之前的地方
然后继续F8
好了今天就分析到这了

7.png
11.png
16.png

评分

参与人数 43威望 +1 HB +87 THX +28 收起 理由
xiaoxixpj + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
轻音 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
sjtkxy + 1 + 1
冷亦飞 + 1
消逝的过去 + 2
yexing + 1
极速菜 + 1
temp + 1 + 1
霁幽 + 1
kkk1l + 1
徐闯 + 1
小菜虫 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
我是好人 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
三月十六 + 1
lies + 1
z295596981 + 1
11721601 + 1 + 1
单只蝴蝶 + 1 + 1 [快捷评语]--吃水不忘打井人,给个评分懂感恩!
JasonKow + 1 + 1 [快捷评语]--你将受到所有人的崇拜!
EV9 + 1 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
baofasuanren1 + 1 + 1 [快捷评语] - 评分=感恩!简单却充满爱!感谢您的作品!
dddd + 2 + 1 [快捷评语] - 2018,狗年发发发,狗年旺旺旺!
大大怪 + 1 + 1 [快捷评语] - 2018,狗年发发发,狗年旺旺旺!
hysmy17 + 2 + 1 论坛的秩序需要大家共同监督与维护,感谢!
他们都叫我杂总 + 1 + 1 很久没看见这么像样的教程了
落雨 + 1 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
ltt201314 + 1 [快捷评语] - 2018,狗年发发发,狗年旺旺旺!
萌萌猫 + 3 + 1 [快捷评语] - 2018,狗年发发发,狗年旺旺旺!
fruitg + 1 [快捷评语] - 评分=感恩!简单却充满爱!感谢您的作品!
Anonymous. + 1 + 1 [快捷评语] - 评分=感恩!简单却充满爱!感谢您的作品!
勇闯天涯 + 1 + 1 [快捷评语] - 评分=感恩!简单却充满爱!感谢您的作品!
菜鸟的小白7 + 1 + 1 真的很细心 谢谢你
小柒 + 2 + 1 [快捷评语] - 评分=感恩!简单却充满爱!感谢您的作品!
风动鸣 + 3 + 1 连我都看得懂 做得很细致 很不错!!!
售野生奥特曼 + 5 + 1 [快捷评语] - 2018,狗年发发发,狗年旺旺旺!
xiaoheo111444 + 1 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
轮回v + 6 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
853090587 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
30659653 + 2 + 1 学到真知识了。
s56408656 + 1 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
yuchungu + 1 + 1 很给力,涨知识咯
Shark恒 + 1 + 30 + 1 [快捷评语] - 评分=感恩!简单却充满爱!感谢您的作品!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Shark恒 发表于 2018-5-17 12:02 | 显示全部楼层

挺好,很详细,未完待续,网络可以在这里继续编辑,不必重新发布新帖。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
tz7292459 发表于 2018-5-17 22:25 | 显示全部楼层

谢谢楼主呦
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
小久久 发表于 2018-5-17 22:31 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Piblind 发表于 2018-5-17 22:34 | 显示全部楼层

感谢分享!!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
1475086396 发表于 2018-5-17 22:57 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
523751267 发表于 2018-5-18 08:06 | 显示全部楼层

谢谢楼主分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
18322295710 发表于 2018-5-18 08:58 | 显示全部楼层

谢谢楼主呦
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
a532944062 发表于 2018-5-18 09:35 | 显示全部楼层

大佬找的就是你
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
30659653 发表于 2018-5-18 10:04 | 显示全部楼层

感谢楼主分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

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