首页 > 其他分享 >“外挂”——逆向软件的分析与破解

“外挂”——逆向软件的分析与破解

时间:2024-08-02 09:25:42浏览次数:9  
标签:逆向 外挂 程序 dll vip 播放列表 件夹 断点 破解

本文来源无问社区,更多实战内容,渗透思路可前往查看icon-default.png?t=N7T8http://www.wwlib.cn/index.php/artread/artid/11458.html#maodian1
前言:

“外挂”的制作离不开软件的分析破解,这平时做ctf中的逆向题是有⼀定的差别的。最直观的区别体现在两者的⼤⼩。⼀个逆向题⼀般只有⼀两兆⼤⼩,⽽⼀般的软件动辄就是⼗⼏或⼏⼗兆⼤⼩。这⽆疑增⼤了分析的困难度,这篇⽂章将就我最近做过的⼀些软件的破解进⾏总结。

⼀、软件分析思路:

这⾥以爱思助⼿为例,假设我们需要定位它的新建⾳乐播放列表功能。

1. 观察程序文件夹:

要对⼀个软件进⾏分析⾸先,需要⼤概了解⼀下整个程序的框架,可以查看⼀下它的⽂件夹

图片

通过程序的⽂件夹可以⼤致了解到程序的整体框架以及在运⾏时可能会调⽤到的动态链接库,这⼀点是⽐较重要的,因为程序很多时候并不是把所有的功能都放在主程序中⽽是将特定的功能集成在特定动态链接库⾥⾯,在观察⽂件夹内容时注意⼀下哪些是系统库,哪些可能是软件开发者⾃⼰编写的库。⽐如上图中的 avcodec-57.dll 就是FFmpeg的开源跨 平台⾳视频处理库的其中⼀个。

图片

通过观察这些库⽂件还可以了解到程序的⼀些图形化界⾯是⽤什么开发的⽐如这个程序就是⽤的QT来进⾏图形化界⾯的开发。

2. 运行程序:

⼤致了解了程序的框架之后,尝试运⾏⼀下该程序,了解⼀下需要分析的新建⾳乐播放列表模块:

图片

点击新建播放列表按钮,输⼊需要新建的⾳乐⽂件夹名,之后会弹出⼀个对话框,显⽰正在新建播放列表:

图片

从这⾥我们可以获得到的信息是在确认播放列表的名称后,程序就会弹出窗⼝,⽽弹出窗⼝就会调⽤Windows的API,之后在分析的时候可以考虑在函数CreateWindExW()上下断点。

3. 查壳:

⼤致了解了程序的运⾏流程之后基本的信息就收集的差不多了,最后再看⼀下程序是否有加壳,这⾥使⽤查壳⼯具查看程序的加壳情况和了解程序是32位还是64位:

图片

可以看到⽬标程序没有加壳,是32位程序。

4. 程序分析:

对程序的分析使⽤的⼯具主要是OD还有IDA这两把利剑,tips:分析程序之前最好把程序的地址随机化关了,⽅便OD和IDA对⽐分析。

⼤致理⼀下思路,⾸先⽬前还⽆法确定这个功能是在主程序中实现还是调⽤的dll来实现的,可以考虑先给新建窗⼝的API下断点,然后观察堆栈看是否能回溯到⽤户代码:

先将程序跑起来,把x32dbg附加上取,Ctrl+G在CreateWindExW()上⾯下断点

图片

然后按下新建⾳乐播放列表。查看x32dbg可以发现程序断下来了,观察它的堆栈

图片

发现程序的上层并没有主程序的代码,⼀直在QT⾥⾯绕。显然使⽤API下断点的办法不太⾏得通,这⾥可能时调⽤的dll来实现的程序功能,为了验证这个猜想使⽤ida以查找字符串的⽅式去定位与music或者media有关的函数:

图片

观察这些函数都有⼀个特点就是会有不少的QString的函数,这些函数的作⽤是绘制窗⼝,所以到这⾥基本可以判定主函数中并没有我们要找的新建⾳乐播放列表功能,到了这⼀步就要考虑对程序所引⽤的DLL进⾏分析,具体操作为打开x32dbg的内存布局窗⼝

图片

这⾥可以看到程序加载的动态链接库,排除掉⼀些系统库,可以尝试对⼀些可疑的DLL下内存访问断点:

图片

这⾥需要注意的是不要下错地⽅,是在代码段下断点。可以⼀次多下⼏个,看断在了那个dll中,这个实例程序最终断在了idm_media.dll中,查看该dll引⽤的函数:

图片

可以看到其中⼀个函数就是新建⾳乐播放列表模块。

⼆、软件破解示例:

以国外的⼀个变声器软件MagicMic进⾏为例,该程序的vip功能提供了很多类型的声线,这⾥尝试获得其vip权限:

1.前期信息收集:

还是⼀样,在开始分析程序之前做三个步骤:观察程序⽂件夹结构、运⾏了解情况、查壳。

1.程序文件夹结构:

图片

这⾥⽂件夹较多,不太好截图,⼤概总结⼀下,⽬录内包含qt库,和⼀些⾳频处理的dll。tips:分析时每个⽂件夹都可以查看⼀下⼤致了解程序框架。

2. 运⾏情况:

图片

上图是运⾏后程序的样⼦,每个图标右上⾓的钻⽯标识就是vip才能⽤的声⾳特效,尝试点击会弹出如下的窗⼝:

图片

3. 查壳:

64位,⽆壳

图片

2. 软件分析:

在运⾏时可以看到弹出的对话框中有⼀些“解锁VIP”等字符,使⽤x64dbg打开MagicMic,先进⼊MagicMic.exe模块,然后在反汇编窗⼝区域右击搜索当前模块的字符串

图片

接着等待字符串搜索完毕后,得到下图结果:

图片

发现搜索出来的结果不算太多,可以尝试先对上⾯⼀半的结果下断点,然后F9运⾏程 序,回到程序触发vip注册窗⼝看程序是否有断下来,通过这样的⼆分法不断缩⼩范围可以发现最后断在了字符串“Save(Non-vip)”处:

图片

分析这个部分的汇编代码,可以发现是否执⾏Save(Non-vip)的代码是根据地址:7FF7CEA07403 处的je判断

图片

这个je判断的下⾯就是Save(vip)的代码,这⾥直接将je改成jne:

图片

再试着运⾏⼀下程序,发现程序依然会弹出vip注册窗⼝,说明还得往上更,

图片

jne上⾯有⼀条call指令,双击更过去看⼀下:

图片

这部分的逻辑就很容易懂了,关键在选中的GetLisecseState函数,程序就是通过它来获取许可状态,函数返回值如果不为⼀则表⽰不是vip,动调之后可以看到当前没有vip时 eax的值为0:

图片

这⾥可以将cmp eax,1改为cmp eax,0,或者把下⾯的jne改成je,两个修改⽅式任选其⼀即可。将这个部分修改后再次运⾏观察是否成功破解:

图片

可以发现现在所有的⾳效就都可以下载使⽤了。最后Ctrl+P⽣成补丁:

图片

选择修补⽂件,保存打完补丁的程序到程序⽂件夹就可以正常使⽤了。

标签:逆向,外挂,程序,dll,vip,播放列表,件夹,断点,破解
From: https://blog.csdn.net/wuwenshequ/article/details/140840495

相关文章

  • Python爬虫 - js逆向之扣出某平台的_signature加密字段
    前言好久没有做逆向案例分析了,最近都在看同行朋友写好的案例,感觉学到很多,算是取长补短了不多bb,机缘巧合下,拿到个目标网站分析首先抓个包,就看到请求参数里带着这几个参数主要就是_signature了,其他的参数都不重要得想必你一看就知道啥意思了。行,开始分析_signature......
  • JS逆向 (简单)
    在该网站输入账户123和密码123F12抓包发生密码被加密成74ce2ba17b2c218246e778fb5e895c95,并且密码字段为pwd点击搜索搜索pwd,并且查看是哪里给他加密的发现此处有用到加密,但不是pwd是hiddenPwd,在这个周围看看发现他把hiddenPwd的值赋值给pwd查看里面password的值......
  • visio 2019 专业版 密钥脚本破解失败原因
    1.支持版本:Supportedproducts:-MicrosoftVisioStandard2019-MicrosoftVisioProfessionalPlus20192.新建记事本复制此代码,并将文件后缀改为.bat文件@echoofftitleActivateMicrosoftVisio2019&cls&echo===================================================......
  • 我应该如何将这个密码机转换成一个可以工作的网络密码破解器?
    我对一般代码尤其是Python非常陌生。我创建了下面的代码作为基本测试(归功于youtuberhttps://www.youtube.com/watch?v=sI5zo1ZElCc),并且想知道如何制作它以便我可以用它获取wifi密码?这是我尝试过的:importrandomimportpyautoguiimportplatformchars='ab......
  • 【3DOF关节式(RRR)机械臂设计与运动学】3DOF关节式(RRR)机械臂的设计及其正向与逆向运
      ......
  • 企知道 接口逆向:AES加密
    ......
  • js逆向之补环境-proxy
    目录【1】补环境介绍【2】proxy代理监控器【1】补环境介绍浏览器环境:是指JS代码在浏览器中的运行时环境,它包括V8自动构建的对象(即ECMAScript的内容,如Date、Array),浏览器(内置)传递给V8的操作DOM和BOM的对象(如document、navigator);Node环境:是基于V8引擎的Js运行时环境,它包括V8与......
  • APP逆向 day24unidbg上
    一.前言今天开始讲app逆向最后一个也是最重要的unidbg,这已经是从初级进阶到中级的了,我会讲unidbg,讲三节课,分为上中下来和大家讲(由简单到难逐步),这节课主要是和大家讲unidbg的介绍并且会结合之前讲的简单案例来让大家理解,如果过程中不太记得之前的位置定位,可以去看之前的课程,在......
  • 开个技术外挂|电池热失控致电车自燃爆炸?用仿真技术解决它!
    什么是电池热失控?电池的热失控(thermalrunaway),指的由各种诱因引发的链式反应现象,热失控散发出的大量热量和有害气体会引起电池着火和爆炸。电池热失控通常是从电芯内的SEI膜(SolidElectrolyteInterface是覆盖电极材料表面的膜,具有一定的导电性和锂离子交换性)分解开始,......
  • Python逆向总结(Python反编译)
    目录第一种:直接反编译型第二种:打包成exe的py文件第三种: 给pyc字节码(类汇编形式)第四种:加花的pyc内容参考第一种:直接反编译型除了直接获得题目内容的python文件外,出题人也可以稍微加工一点点,给出题目python文件所对应的pyc文件,即python的字节码。PYC文件的定义pyc......