首页
社区
课程
招聘
[原创]某加固详细分析总结,另附该加固脱壳机
发表于: 2019-7-25 17:09 17256

[原创]某加固详细分析总结,另附该加固脱壳机

2019-7-25 17:09
17256

       自己稍微了解一点加固,当然只是皮毛而已。前不久发了一篇脱壳的帖子(只能脱早期的壳,本身也只是发着玩玩)为了看看现在加固技术的演进和锻炼一下自己的逆向能力,遂选择了一个业界算知名度比较高的加固产品。

       本人没有装逼之意,知道我大中华牛人数量之多可以多过我的遍身毛发,也仅是对自己的一个总结,文章必会有错误和疏漏之处,还请大佬们高抬贵手。我接受任何发自肺腑的建议。

       本人目前时间还算充裕,但时间毕竟珍贵,遂我仅仅分析加固流程中dex如何解密,如何加载到内存中,后续关于dex的其他流程、以及保护app的相关流程我并没有分析。

       我这里会用最简洁的文字稍作描述(具体详细流程,请到github上下载)。

加固特征:libdexHelper、classes0.jar

如何加固:classes0.jar是一个经过加密的zip压缩包,压缩包里面包含被拆分的dex(注意dex是完整的,没有进行dex code 抽取),dex的数量可能大于1,加密算法是rc4(稍有改变)+ 异或或者直接异或,选择加密方式是由加密算法第一个代表偏移的参数决定的。

如何加载:系统hook了libc很多函数(open、read、pread64、mmap等)和libart函数(OpenDexFilesFromOat、DexFileVerifier::Verify等),反射调用Helper类的install方法会触发系统调用OpenDexFilesFromOat函数,如果传入参数dex_location匹配.cache/classes.jar直接调用bool DexFile::Open(const char* filename, const char* location, std::string* error_msg,

std::vector<const DexFile*>* dex_files)加载dex。加载过程中会进入到hook后libc的函数

如mmap、read在这里进行解密解压,最终调用下面这个函数完成加载:

static const DexFile* DexFile::OpenMemory(const byte* base,

                     size_t size,

                     const std::string& location,

                     uint32_t location_checksum,


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

最后于 2019-7-26 22:13 被angelToms编辑 ,原因:
收藏
免费 5
支持
分享
打赏 + 2.00雪花
打赏次数 2 雪花 + 2.00
 
赞赏  supperlitt   +1.00 2020/06/05
赞赏  lhsg   +1.00 2019/07/27 求大佬帮忙解密:链接:https://pan.baidu.com/s/1o79IX4qpcCCPUfee3A6HcA 提取码:83gr
最新回复 (17)
雪    币: 42
活跃值: (286)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
楼主牛逼
2019-7-25 17:28
0
雪    币: 1696
活跃值: (2297)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没人说下爱加密怎么脱壳或者hook吗
2019-7-26 00:43
0
雪    币: 27
活跃值: (196)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
卧槽。这个牛逼,直接把解密算法搞出来了。。
2019-7-26 12:06
0
雪    币: 6266
活跃值: (1276)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
大佬,可否把apk也发一下?
2019-7-26 14:55
0
雪    币: 3040
活跃值: (1150)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
6
xmhwws 大佬,可否把apk也发一下?[em_84]
这个不方便给出, 你可以先下载一个试试, 我的样本也是前不久随意下载的, 我github上有详细的调试过程,如果你想试试,你可以对照调试过程一点一点来。
对了还有解密程序和脱壳机,你可以直接跑试试。
最后于 2019-7-26 19:38 被angelToms编辑 ,原因:
2019-7-26 16:49
0
雪    币: 98
活跃值: (364)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
7
666
2019-7-26 18:27
0
雪    币: 1110
活跃值: (281)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
学习了
2019-10-25 19:58
0
雪    币: 100
活跃值: (625)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
详细的分析呢?
2019-10-26 14:21
0
雪    币: 3040
活跃值: (1150)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
10
nbrblich 详细的分析呢?
详细分析在我指出的github上,请自己下载
2019-10-27 11:32
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
运行decrypt_classes0jar()解密,报错,decrypt.cpp必须要在linux环境运行吗?windows可能编译
2019-11-1 19:48
0
雪    币: 12502
活跃值: (3053)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
佩服。这才是真的脱壳。em……不懂android,一直搞pc的脱壳。希望楼主能加个联系方式,一起学习进步。
2019-11-4 07:30
0
雪    币: 3040
活跃值: (1150)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
13
小小白求关爱 运行decrypt_classes0jar()解密,报错,decrypt.cpp必须要在linux环境运行吗?windows可能编译
代码中有注释,在linux下跑把, window我也跑过,会出问题,如果你windows系统安装了cygwin,可以修改原程序,跑应该也没问题。
2019-11-7 09:48
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
angelToms 代码中有注释,在linux下跑把, window我也跑过,会出问题,如果你windows系统安装了cygwin,可以修改原程序,跑应该也没问题。
在linux下跑了一下,解密生成的文件损坏,是我的样本有问题吗?求指点
2019-11-17 11:43
0
雪    币: 5235
活跃值: (3260)
能力值: ( LV10,RANK:175 )
在线值:
发帖
回帖
粉丝
15
楼主是大佬,把流程都搞清楚了,这不但需要技术,还得有耐心,膜拜大佬
2020-2-27 17:45
0
雪    币: 888
活跃值: (2365)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
16
目测是梆梆?
2020-2-28 10:38
0
雪    币: 221
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
为什么我的不能运行,脱壳脚本,目前最新运行脚本直接程序打开闪退。
2020-6-30 10:32
0
雪    币: 162
活跃值: (762)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
牛!确实可以解密成功。
2020-9-7 20:52
0
游客
登录 | 注册 方可回帖
返回
//