看雪论坛
发新帖
1

[原创]对360加固的一次分析(部分未分析)

lxcoder 2016-10-7 15:28 6816
7月的壳,最后的部分未完成,断断续续弄了一段时间了,期间也是得到了一些朋友的帮助。虽然没有完全解决问题,不过我个人认为还是有分享的价值,最近要为找工作作准备了,也不知道我这水平能不能找一份android逆向的工作。短期内没有时间去弄它了,所以就发上来了。

在弄这个之前,在网上看了很多相关的文章,结果没有一个是跟我这个相似的,都是mmap下断或dvmXXX下断之类的,或者几个F9什么的,老实说,我是逆向的新手,所以刚开始也试过这些函数下断,全部无效,至于几个F9,步过步入什么的,表示完全看不懂。后来也就只有硬头头皮一点一点的啃了,然后就被我啃成了四不像。
短期内我也没时间去弄它了,如有朋友弄出来了或知道的欢迎分享!即使只是个思路也好

第一次发技术贴,也不知道合不合规,如果不合适的话麻烦管理员知会一声。
上传的附件:
本主题帖已收到 0 次赞赏,累计¥0.00
最新回复 (24)
Zkeleven 2016-10-7 15:36
2
支持一下原创
Zkeleven 2016-10-7 15:45
3
楼主有没有样本啊
1
lxcoder 2016-10-7 16:10
4
样本已上传!
toToC 2016-10-7 19:17
5
楼主我这两天在写阿里加固的脱壳分析,可以加个好友一起搞啊
Lucaks 2016-10-7 21:29
6
支持
1
lxcoder 2016-10-7 23:03
7
弄了一次,发现有太多的不足了,做起来总是事倍功半,所以近期暂时不会弄这个了。
俗话说,真正的成长在于将自己的经验分享给大家,然后再从大家那获取新的突破,如此循环往复不断成长下去。所以欢迎到时候分享啊!(我感觉我好神棍,不知道这算不算忽悠呢。哈哈~)
1
lxcoder 2016-10-7 23:05
8
谢谢支持
toToC 2016-10-8 00:25
9
哈哈,我也是像楼主一样一点一点分析so,如何找到脱壳点,如何绕过反调试等等
jieniruyan 2016-10-8 09:14
10
第2个so没太分析啊
1
lxcoder 2016-10-8 18:49
11
嗯,要分析的话需要一些时间,所以暂时也就没去弄了,只是粗略看了一下。其它的判断以及解密都在第二个so里面,一些dvm的函数它是直接在模块列表中找libdvm.so以及libart.so,遍历模块找jar@classes.dex然后找dataoff+datasize的地方有段0x291的加密以qi开头的数据,appkey,sigcheck什么的,都保存着。
再后续的natives函数什么的就没看了,暂时看到的就这几个点了。不过虽然我没有分析,不过我的分析方法也在这文档里面了。属于比较笨的方法。
1
luciferkx 2016-10-12 17:20
12
可以用drizzleDumper
1
lxcoder 2016-10-12 21:41
13
这个工具听说过,但没用过,刚开始想的是至少能知道里面是有一些什么反调试,所以更加没有去往这方面想了。
坝坝虎 2016-10-13 15:19
14
楼主的这篇文章很有参考价值,过了反调试后,又前进了一步。不知道楼主是怎么把函数名给弄出来的?我一直弄不出反汇编时的函数名。
1
lxcoder 2016-10-14 04:19
15
没看懂,能举个例子吗?
坝坝虎 2016-10-14 09:07
16
libjiagu.so:ACC12390 ; ---------------------------------------------------------------------------
libjiagu.so:ACC12390 STMFD           SP!, {R4-R7,LR}
libjiagu.so:ACC12394 LDR             R4, =(unk_ACC18EB0 - 0xACC123A8)
libjiagu.so:ACC12398 SUB             SP, SP, #0x9C
libjiagu.so:ACC1239C MOV             R7, R0
libjiagu.so:ACC123A0 LDR             R4, [PC,R4] ; unk_ACC18EB0
libjiagu.so:ACC123A4 LDR             R3, [R4]
libjiagu.so:ACC123A8 MOV             R6, R1
libjiagu.so:ACC123AC MOV             R2, #0x94
libjiagu.so:ACC123B0 MOV             R1, #0
libjiagu.so:ACC123B4 MOV             R0, SP
libjiagu.so:ACC123B8 STR             R3, [SP,#0x94]
libjiagu.so:ACC123BC BL              memset_0
libjiagu.so:ACC123C0 LDR             R3, =0x6F732E2A
libjiagu.so:ACC123C4 MOV             R2, #0
libjiagu.so:ACC123C8 MOV             R0, SP
libjiagu.so:ACC123CC STR             R3, [SP,#0xC]
libjiagu.so:ACC123D0 STRB            R2, [SP,#0x10]
libjiagu.so:ACC123D4 STR             R7, [SP]
libjiagu.so:ACC123D8 STR             R6, [SP,#4]
libjiagu.so:ACC123DC BL              unk_ACC0EDF4           
libjiagu.so:ACC123E0 LDR             R3, =(dword_ACC55380 - 0xACC123F0)
libjiagu.so:ACC123E4 LDR             R1, =(aMakekey - 0xACC123F4)
libjiagu.so:ACC123E8 ADD             R3, PC, R3 ; dword_ACC55380
libjiagu.so:ACC123EC ADD             R1, PC, R1              ; "makekey"
libjiagu.so:ACC123F0 STR             R0, [R3]
libjiagu.so:ACC123F4 BL              unk_ACC0EE28         
libjiagu.so:ACC123F8 SUBS            R12, R0, #0
libjiagu.so:ACC123FC BEQ             loc_ACC12424
libjiagu.so:ACC12400 BIC             R0, R12, #0xFF0
libjiagu.so:ACC12404 BIC             R0, R0, #0xF
libjiagu.so:ACC12408 MOV             R1, #0x1000
libjiagu.so:ACC1240C MOV             R2, #3
libjiagu.so:ACC12410 MOV             R7, #0x7D
libjiagu.so:ACC12414 SVC             0
libjiagu.so:ACC12418 LDR             R3, =(unk_ACC18ECC - 0xACC12424)
libjiagu.so:ACC1241C LDR             R3, [PC,R3] ; unk_ACC18ECC
libjiagu.so:ACC12420 STR             R3, [R12]
libjiagu.so:ACC12424
libjiagu.so:ACC12424 loc_ACC12424                            ; CODE XREF: libjiagu.so:_Z10__fun_a_17PcjS_Rii+73Cj
libjiagu.so:ACC12424 LDR             R3, =(dword_ACC55380 - 0xACC12434)
libjiagu.so:ACC12428 LDR             R1, =(aJni_onload - 0xACC12438)
libjiagu.so:ACC1242C ADD             R3, PC, R3 ; dword_ACC55380
libjiagu.so:ACC12430 ADD             R1, PC, R1              ; "JNI_OnLoad"
libjiagu.so:ACC12434 LDR             R0, [R3]
libjiagu.so:ACC12438 BL              unk_ACC0EE28
libjiagu.so:ACC1243C LDR             R1, [SP,#0x94]
libjiagu.so:ACC12440 LDR             R3, =(dword_ACC5537C - 0xACC12450)
libjiagu.so:ACC12444 LDR             R2, [R4]
libjiagu.so:ACC12448 ADD             R3, PC, R3 ; dword_ACC5537C
libjiagu.so:ACC1244C CMP             R1, R2
libjiagu.so:ACC12450 STR             R0, [R3]
libjiagu.so:ACC12454 BNE             loc_ACC12460
libjiagu.so:ACC12458 ADD             SP, SP, #0x9C
libjiagu.so:ACC1245C LDMFD           SP!, {R4-R7,PC}
libjiagu.so:ACC12460 ; ---------------------------------------------------------------------------

比如 这里是我的 动态逆向的,最后在makekey 和 JNI_OnLoad 处,但我怎么没有显示loadAndInitSo 这个函数名呢?
1
lxcoder 2016-10-20 16:35
17
这个函数是我自己分析后命名的,不是本身的名称。
龙飞雪 2016-12-12 16:26
18
分析的不错啊,不过360的反调试还是比较常规,脱壳也不难,能用的工具也不少,赞
1
lxcoder 2016-12-18 19:00
19
嗯,是的,谢谢!我那时候也只是一时兴起就研究了下,比较基础,见笑了。
bluth 2017-3-12 12:14
20
楼主问一下 文档里(17页)你说干调反调试的地方弄个死循环 但是实际SO中你是怎么加上去的 loc_753779d0这一句的
1
lxcoder 2017-3-14 14:35
21
bluth 楼主问一下 文档里(17页)你说干调反调试的地方弄个死循环 但是实际SO中你是怎么加上去的 loc_753779d0这一句的
用的是ndk工具里的as.exe手动编译的arm汇编,然后在ida里面进行对应的修改就可以了。
1
奔跑的阿狸 2017-3-15 14:29
22
有什么办法能把stolen到so的代码还原到dex中?
1
lxcoder 2017-3-18 17:29
23
奔跑的阿狸 有什么办法能把stolen到so的代码还原到dex中?
其实我很菜的,这个我也没有亲自做过,所以没法回答你,抱歉了!
1
奔跑的阿狸 2017-3-21 15:28
24
客气啊
聖blue 2017-3-24 01:13
25
支持支!!!!!!!
返回



©2000-2017 看雪学院 | Based on Xiuno BBS | 知道创宇带宽支持 | 微信公众号:ikanxue
Time: 0.014, SQL: 10 / 京ICP备10040895号-17