2019年2月360加固逆向分析

vmp

vmp调用api的时,会跳出vm,所以可以不关注vm逻辑运算,直接追踪vm调用用了哪些api,从而分析壳,从jni_onload中一步步跟进在_Z10__fun_a_18Pcj中文件偏移0x0000FF00和0x00010060 处是vm函数调用,在此下断。

软中断

由于api有可能会被下断,所以可以采取软中断方式实现系统调用,arm下是svc,等ida解析完成so,搜索这条指令,会发现有open、mprotect还有个syscall。
在这里插入图片描述

反调试

tracerid

0x6850 打开/proc/self/status文件,获取tracerid,修改读取的内容,在读到tracerid时修改为0

时间检测

0x6C9C 时间差大于3,则退出
在这里插入图片描述

rtld_db_dlactivity

0x00024F4 rtld_db_dlactivity这个函数默认情况下为空函数,这里的值应该为0,而当有调试器时,这里会被改为断点指令,所以可以被用来做反调试。在函数sub_24F4中,libjiagu.so查找rtld_db_dlactivity函数的地址的,获取到rtld_db_dlactivity的地址,将其修改为nop指令0x46C0。

so动态加载

so从内存中加载,肯定需要mprotect赋予执行权限,之前已经分析过svc实现mprotect,所以在mprotect时找到代码段,从内存中dump出以下二进制文件如下。


对比正常的elf头
在这里插入图片描述
发现出现很多0x4f,尝试与0x4f异或,可以直接解出elf头,用010editor 解析出错,说明dump的尚不完整,于是在沿着内存dump下去,直至能够成功解析。

ida打开完整的so,没有报错。
在这里插入图片描述
jni动态注册,都在第二个so中,后面的动态加载dex文件基本上没什么区别。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值