首页
社区
课程
招聘
[原创]如何判断破解软件是否带有后门
发表于: 2024-9-3 20:51 2098

[原创]如何判断破解软件是否带有后门

2024-9-3 20:51
2098

起因是我想装一个破解版的source insight 4,我想确保下载的软件没有包含病毒。
一开始我搜到一个github项目:
https://github.com/achilsh/source_insight_4
这个安装包是合法签名,版本是4.0.86.0,破解程序的版本是 4.0.84.0

图片描述
这种情况需要小心,正常来说你安装包和破解后的应该版本一样才是,而且该作者很贴心的把破解后的sourceinsight4.exe签名删除了,因为如果不删除签名,修改内容会导致签名不合法,很多杀毒软件会报毒,emmm,这个我不敢用了。
我又找了另一个破解版,这次版本是一致的,原版和破解版都是4.0.126.0

https://www.52pojie.cn/thread-1770613-1-1.html

图片描述

图片描述

作者说把exe替换进去然后导入他提供的lic文件即可完成破解。这个版本一样,大小也一样,exe本身应该没有加料。但是我们还是想看看他修改了哪些地方。用fc看看修改了多少,发现改了17个字节
fc /B .\sourceinsight4_crack.exe.1 .\sourceinsight4_origin.exe.1
图片描述
目测不仅修改了代码部分,其他地方也有改动,有点奇怪。
接下来用010 editor的compare功能看看具体改了啥,010 editor得安装EXE模板,这样就能看到字节对应PE结构中的哪个属性。
图片描述
图片描述

010打开两个exe
图片描述
点击下面红色的difference,就会在二进制窗口中导航到修改字节处:
图片描述
鼠标移动到40上,提示是DllCharacteristics不一样
图片描述
右键点击差异的字节处,跳到模板变量
图片描述
原来是破解版把随机基址关掉了
图片描述
再看第二处修改,29B5 修改了两个字节
图片描述
图片描述
用cff explorer计算一下rva去ida pro 看 0x400000+0x35b5
图片描述
发现居然指令一样,字节码不同:
图片描述
这个有点烧脑了,一个是以前不知道同一个指令可以有两种字节码表示形式,第二个疑惑点就是为啥破解者要改这个?
再来看第三处修改,24E12
图片描述
图片描述
这里是把正版的cmp改成了mov,这是爆破的一部分,原版的逻辑是状态码等于200成功,就联网搞点事情,破解版是把状态改成200成功,然后不判断直接联网。
图片描述
下一处修改
00044928: 89 8B
00044929: F0 C6
同样是相同指令,不同字节码的情况
图片描述
图片描述
下一处修改
001154B2: 90 3B
001154B3: 90 11
001154B4: 90 75
001154B5: 90 39
这里是把正版的cmp nop掉了,正常的破解逻辑
图片描述
下一处
00116683: C8 D0
00116684: 00 01
把 mov eax, 1D0h 改成了
mov eax, 0C8h
图片描述
这是把校验函数强行返回200成功了
图片描述
下一处
00116D80: 31 F7
00116D81: C0 D8
00116D82: 90 1B
00116D83: 90 C0
这里是修改了一个函数,强行让它返回0
图片描述

图片描述
最后一处差异
00117D05: 75 74
把jz改成了jnz
经过上面的分析,基本可以确定exe本身没有藏后门,最后打开lic看看,这个文件是明文的,虽然ActId,Signature是一长串密文,理论上无法排除这坨东西能通过某种方式转成shellcode被source insight执行,也许si设计了某种机制,这两托东西可以被执行,而破解者发现了这个后门,将他替换成自己的payload... 哈哈,这是不可能的,对吧?
图片描述
所以经过鉴定,这是一个没有后门的破解软件,可以放心食用。

除了这种笨办法,其实也可以考虑用bindiff这类插件。
https://github.com/joxeankoret/diaphora
这里我用 diaphora
插件装好之后,ida pro打开正版程序,生成一个数据库,这一步大概要5分钟
图片描述

然后ida pro大概破解版,选择刚才生成的数据库进行比对
图片描述

比对完成后,弹出这个窗口
图片描述
我们发现8475个函数,只有1个识别出来有差异
图片描述
图片描述
所以diaphora插件其实不会列出每一个字节的不同,diaphora在这种基于同一个二进制文件做patch的场景可能有点大材小用了。他比较适合对同一个软件的不同版本进行比对。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 4
支持
分享
最新回复 (9)
雪    币: 3745
活跃值: (3338)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
楼主说的软件是最理想的破解情况了
exe大小一致基本90%排除后门可能,另外10%就只能对比看有没有shellcode
也不是每个软件都是改rsa或做一些jmp nop就能破解,大多都要写hook和dll注入,里面埋一个后门根本无解
2024-9-3 21:21
2
雪    币: 1203
活跃值: (1869)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我一般也是放虚拟机patch,然后和原版程序进行对比,但是不会对比这么细致
只要大小一致,看了改动的字节没有太大问题就认为ok了
对于爆破的程序来说还行,现在很多都是基于dll劫持做内存hook之类的patch,这种就不好说了
2024-9-4 08:34
2
雪    币: 4677
活跃值: (3580)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
很细致的分析
2024-9-4 11:26
0
雪    币: 772
活跃值: (637)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
直接看联网地址,区别IP的关联性?
2024-9-4 14:21
0
雪    币: 8805
活跃值: (5296)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
谁能说说,指令一样,字节码不一样?
2024-9-4 14:48
0
雪    币: 3249
活跃值: (5484)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
哥们搞得不错,写的通俗易懂,给你点赞!
2024-9-5 10:54
1
雪    币: 311
活跃值: (996)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
学习了
2024-9-19 14:19
0
雪    币: 3934
活跃值: (3778)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
就当有后门就行了 自己资料机器反正不联网 联网机器废了无所谓
2024-9-19 14:27
0
雪    币: 854
活跃值: (211)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
太细了,这种是最稳妥的方法,一处一处比较分析,以前都只会从软件行为的角度分析,没有从二进制的角度想过问题,感谢思路分享
2024-9-20 10:59
0
游客
登录 | 注册 方可回帖
返回
//