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

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

2024-9-3 20:51
2411

起因是我想装一个破解版的source insight 4,我想确保下载的软件没有包含病毒。
一开始我搜到一个github项目:
dcfK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6S2j5$3S2A6L8s2y4Z5i4K6u0r3M7$3!0#2M7X3y4W2i4K6g2X3K9h3&6K6K9h3N6Z5N6q4)9#2k6U0b7`.
这个安装包是合法签名,版本是4.0.86.0,破解程序的版本是 4.0.84.0

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

4d1K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3f1#2x3Y4m8G2K9X3W2W2i4K6u0W2j5$3&6Q4x3V1k6@1K9s2u0W2j5h3c8Q4x3X3b7I4y4K6M7H3y4U0p5K6i4K6u0V1x3g2)9J5k6o6q4Q4x3X3g2Z5N6r3#2D9

图片描述

图片描述

作者说把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这类插件。
deeK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6B7L8%4S2W2j5h3&6C8L8%4u0W2N6q4)9J5c8X3c8A6j5i4m8Z5L8%4u0S2
这里我用 diaphora
插件装好之后,ida pro打开正版程序,生成一个数据库,这一步大概要5分钟
图片描述

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

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


[招生]系统0day安全-IOT设备漏洞挖掘(第6期)!

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