某PDF编辑器逆向记录

查看 161|回复 11
作者:woflant   
前言
本次逆向仅供学习交流,无任何其他意图,如有侵权请联系删除
0x0 所需工具
查壳:die
调试:xdbg
0x1 查壳 & 运行
查壳
直接上die查壳,应该是没有加壳(一般这种软件都不会加壳,会拖慢运行速度,影响用户体验),而且用到了QT库


查壳.jpg (110.54 KB, 下载次数: 0)
下载附件
2024-3-26 10:36 上传

没加壳直接运行先看看,加了壳可能就没有这篇帖子了:)
运行


运行图片.jpg (31.53 KB, 下载次数: 1)
下载附件
2024-3-26 10:37 上传

无需多言,逆向目标就是开通会员了
0x2 调试 & 分析
传统字符串搜索大法
先搜索字符串,过滤包含“vip”的字符,有几个可疑点,下断点,如下图


字符串搜索.jpg (419.35 KB, 下载次数: 1)
下载附件
2024-3-26 10:37 上传

这里为甚么要过滤“vip”字符?
像这种软件,常见过滤字符有“pro”、“regist”、“vip”等等,当然有些软件没有相关字符串,一般是在相关提示处回溯堆栈
下完断点直接运行碰碰运气,程序直接结束,应该是有反调试
简单反调试
常规反调试函数有:IsDebuggerPresent、CheckRemoteDebuggerPresent,下断重新运行
断在IsDebuggerPresent处


IsDebuggerPresent断点.jpg (394.73 KB, 下载次数: 0)
下载附件
2024-3-26 10:36 上传

同时观察右下角堆栈,调用方是不是程序段,简单过掉,返回值的eax改为0x0
继续运行,还是断在IsDebuggerPresent处,调用方是系统dll,略过
断点分析-1
然后会在“isvip”字符处断n次


isvip断点.jpg (439.57 KB, 下载次数: 2)
下载附件
2024-3-26 10:36 上传

观察上下汇编段,没有可疑大跳转,且QT库函数都是字符串处理,此处应该不是关键点,先暂时取消该断点
断点分析-2
继续运行,这次断在“isVipUser”字符处


isvipuser断点.jpg (464.15 KB, 下载次数: 1)
下载附件
2024-3-26 10:36 上传

上下观察,发现调用“QVariant(bool)”(bool型变量)、“QObject::setProperty(char const *, class QVariant const &)”(设置属性)等QT库函数,附近还出现“isVipUser”字符,这个地方很可疑
重点分析 & 尝试修改
在call段首下断,重新运行到段首,细细分析


isVipUser属性设置分析.jpg (448.67 KB, 下载次数: 0)
下载附件
2024-3-26 10:36 上传

一顿分析,此处非常可疑,从上图分析可知,关键点在于0x35FB93处的[ebx+0x74],该处初始值为0x0,先更改为0x1,运行看看是否达到效果


逆向成果展示.jpg (29.48 KB, 下载次数: 1)
下载附件
2024-3-26 10:36 上传

到位,逆向结束
结语
这个软件难度不大,虽然也捣鼓了两天:)
无壳、字符串搜索、反调试、汇编代码分析(ida伪代码也能分析,此贴位提及)等,很适合交流学习
还有具体补丁也不详细说明了,分析点后面跳转处可实现补丁
[/md]

断点, 下载次数

byh3025   


无敌小儿 发表于 2024-3-26 12:52
已经修改为MOV BYTE PTR [EBX+0x74], 1 不管用,可能是修改的不对

提供一个思路,向下看有一个cmp BYTE PTR [EBX+0x74], 0,然后你改成MOV BYTE PTR [EBX+0x74], 1就行了
z87239385   


简单反调试

可以安装 ScyllaHide 自动处理常见的调试器检测哦。

还有具体补丁也不详细说明了,分析点后面跳转处可实现补丁

只修改跳转可能不够完美(例如程序其它地方可能也在检测这个值),如果能找到赋值的地方强制修改,可能会更通用一些。
W315557227   

支持一下
saccsf   

看着有难度 支持下
onlyougao   

跟大佬学习一下思路
TheWeiJun   

学习一下
bujimo3   

学习了,真不错啊。
Moinul   

跟大佬学习一下思路
woflant
OP
  

你是怎么通过exe看到源码的??+
您需要登录后才可以回帖 登录 | 立即注册

返回顶部