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

转:https://bbs.pediy.com/thread-226428.htm

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 出来即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值