首页
社区
课程
招聘
[原创]百度加固逆向分析
发表于: 2017-3-28 17:42 27395

[原创]百度加固逆向分析

2017-3-28 17:42
27395
收藏
免费 1
支持
分享
打赏 + 1.00雪花
打赏次数 1 雪花 + 1.00
 
赞赏  CCkicker   +1.00 2017/05/08
最新回复 (57)
雪    币: 11
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
26
帅气十足
2017-3-29 14:30
0
雪    币: 6818
活跃值: (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
支持下
2017-3-30 01:13
0
雪    币: 4687
活跃值: (253)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
mark soloader不错
2017-3-30 09:29
0
雪    币: 43
活跃值: (170)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
膜拜大神
2017-3-30 10:35
0
雪    币: 35
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30

请问loader 程序是c++写的? 怎样运行? 是编译成apk吗?

2017-3-30 19:07
0
雪    币: 2907
活跃值: (1301)
能力值: ( LV12,RANK:215 )
在线值:
发帖
回帖
粉丝
31
vurtneye 请问loader 程序是c++写的? 怎样运行? 是编译成apk吗?
ndk编译 shell下运行
2017-3-30 19:36
0
雪    币: 8
活跃值: (505)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
用此方法加载了一个类似的so, dlsym JNI_OnLoad返回了地址,但是从R0的地址jump到被加载so的领域,按C不起作用,好像还是加密状态,不知道怎么回事啊?难道JNI_OnLoad还能做偏移的手脚吗?
2017-3-30 22:17
0
雪    币: 2907
活跃值: (1301)
能力值: ( LV12,RANK:215 )
在线值:
发帖
回帖
粉丝
33
pansalily 用此方法加载了一个类似的so, dlsym JNI_OnLoad返回了地址,但是从R0的地址jump到被加载so的领域,按C不起作用,好像还是加密状态,不知道怎么回事啊?难道JNI_OnLoad还能做 ...
thumb模式返回的地址其实是JNI_Onload+1
2017-3-31 03:57
0
雪    币: 8
活跃值: (505)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
scxc thumb模式返回的地址其实是JNI_Onload+1
试了thumb模式也不行,在被调试so的JNI_Onload下断点,F9跳过去可以看到代码,但是还是读不懂的玩意
2017-3-31 10:58
0
雪    币: 2907
活跃值: (1301)
能力值: ( LV12,RANK:215 )
在线值:
发帖
回帖
粉丝
35
pansalily 试了thumb模式也不行,在被调试so的JNI_Onload下断点,F9跳过去可以看到代码,但是还是读不懂的玩意
你在后面调用JNI_ONload地方F7跟进去看看吧
2017-3-31 11:24
0
雪    币: 17
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
loader的想法真赞
2017-4-10 10:00
0
雪    币: 133
活跃值: (233)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
感谢,  loader  降低了门槛,方便在  pc  端调戏了
2017-4-11 08:42
0
雪    币: 207
活跃值: (58)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
很佩服楼主的代码编写思想!
2017-4-11 09:41
0
雪    币: 163
活跃值: (1623)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
39

有两个疑问:

1.loader来过反调试

init_array的反调试手段有


android_server

gdbserver

gdb

TracePid:

/proc/self/task/%s/status

isDebuggerConnected


通过loader来直接调用JNI_OnLoader,在采用IDA附加dump出解密的SO.此过程的tracepid会被检测出来。

cat /proc/19514/status

Name: XXXX

State: t (tracing stop)

Tgid: 19514

Pid: 19514

PPid: 14595

TracerPid: 18901


root@hwH30:/ # ps | grep 18901

ps | grep 18901

root      18901 18790 11148  9404  ffffffff 402105c8 S ./data/local/tmp/android_server


过反调试需要其他步骤吗?


经过实际测试,在void* si=dlopen("/data/local/tmp/libbaiduprotect.so",RTLD_LAZY);语句执行出现异常



2.这时候我们将so从内存中dump出来。将原来的so头部和section修复回去。代码的解密已经完成。

能否写的更详细基础些:)

2017-4-12 10:47
0
雪    币: 2907
活跃值: (1301)
能力值: ( LV12,RANK:215 )
在线值:
发帖
回帖
粉丝
40
学编程 有两个疑问:1.loader来过反调试init_array的反调试手段有android_servergdbservergdbTracePid:/proc/s ...
1、可以在dlopen之后添加getchar,再使用ida附加可以绕过tracepid检测。我的手机修改了内核源码TracePID检测。
2、写这篇文章只是把自己的loader思路跟大家分享。
2017-4-12 17:30
0
雪    币: 163
活跃值: (1623)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
41
scxc 1、可以在dlopen之后添加getchar,再使用ida附加可以绕过tracepid检测。我的手机修改了内核源码TracePID检测。 2、写这篇文章只是把自己的loader思路跟大家分享。
明白哈,这只是其中的一个知识点。
2017-4-12 20:57
0
雪    币: 2335
活跃值: (1319)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
42
很想知道是怎么修复section的,楼主文章很赞!
2017-4-12 23:15
0
雪    币: 2907
活跃值: (1301)
能力值: ( LV12,RANK:215 )
在线值:
发帖
回帖
粉丝
43
FraMeQ 很想知道是怎么修复section的,楼主文章很赞!
修复elfheader和section  是比对原so和dump的so    ,将原so的header和section写回到dump出来的so中。   
2017-4-13 13:01
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
楼主QQ多少?
2017-4-17 18:34
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
45
我QQ:3235002166,希望一起研究
2017-4-17 18:34
0
雪    币: 4522
活跃值: (2146)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
46
Mark很不错的想法
2017-4-28 19:00
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
47
PanzerT 自己写loader 这想法不错[em_63]
真好!正需要呢
2017-5-11 10:26
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
48
可以加个q吗方便交流,510968680
2017-6-25 00:12
0
雪    币: 53
活跃值: (106)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
楼主遇到过upx变种加固过的so吗,过了反调试代码也解密了,但是无法这样dump  so下来。
2017-7-7 11:18
0
雪    币: 2907
活跃值: (1301)
能力值: ( LV12,RANK:215 )
在线值:
发帖
回帖
粉丝
50
Zkeleven 楼主遇到过upx变种加固过的so吗,过了反调试代码也解密了,但是无法这样dump so下来。
Android  upx的论坛有脱壳教程的
2017-7-7 11:26
0
游客
登录 | 注册 方可回帖
返回
//