首页
社区
课程
招聘
[分享][原创]legu 2.10.7.1 脱壳简明过程
发表于: 2018-4-29 22:59 5084

[分享][原创]legu 2.10.7.1 脱壳简明过程

2018-4-29 22:59
5084
1.  直接定位在 linker 的 dlsym 中设断点,看:

Message("load so: [%s|%s]\n", get_string(get_reg_value("R0")),get_string(get_reg_value("R1")));

if ( get_string(get_reg_value("R0")) == "libshell.so" && get_string(get_reg_value("R1")) == "JNI_OnLoad") 
此时so文件已经初步解密,并且 JNI_OnLoad  是可用的

trace 到 :

debug136:F387B994 LDR             R1, =(aComTencentStub_0 - 0xF387B99E)

debug136:F387B996 LDR             R2, =(dword_F3896004 - 0xF387B9A0)

debug136:F387B998 PUSH            {R4,LR}

debug136:F387B99A ADD             R1, PC                  ; "com/tencent/StubShell/TxAppEntry"

debug136:F387B99C ADD             R2, PC                  ; dword_F3896004

debug136:F387B99E MOVS            R3, #5

debug136:F387B9A0 BL              sub_F387B950

debug136:F387B9A4 SUBS            R4, R0, #0

debug136:F387B9A6 BNE             loc_F387B9B8

debug136:F387B9A8 LDR             R1, =(aSecshell - 0xF387B9B2)

debug136:F387B9AA LDR             R2, =(aRegisternative - 0xF387B9B4)

debug136:F387B9AC MOVS            R0, #3

debug136:F387B9AE ADD             R1, PC                  ; "SecShell"

debug136:F387B9B0 ADD             R2, PC                  ; "registerNatives Fail"

debug136:F387B9B2 BL              android_log

debug136:F387B9B6 B               loc_F387B9BA


dword_F3896004  是一个method结构体,里面第一个是 native load 方法 设置断点


2. 调用 native load 的时候, 对 libart.so  OpenMemory 进行拦截, 其中的参数 r1, r2 分别的解密后 dex 的地址和大小, dump 出来即可



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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 7
活跃值: (268)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这。。。    legu就没点其他的防护了吗?
最后于 2018-5-2 12:29 被bluth编辑 ,原因:
2018-5-2 12:29
0
雪    币: 0
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
只是为了给  那些要脱壳的直接了当的过程。。    之前也看了各种  so  加载过程,  elf  格式  重定位啥,  arm  eabi  调用规范啥的        最后很简单    就是这几个地方拦截下就行了     
最后提示一个坑,  so  里面会动态改代码,断点提前下了    会被冲掉
2018-5-3 15:59
0
游客
登录 | 注册 方可回帖
返回