首页
社区
课程
招聘
查找jni_onload地址的方法
发表于: 2016-4-14 16:28 3671

查找jni_onload地址的方法

2016-4-14 16:28
3671
最近在研究某数字公司的壳,通过调试发现它实际的开始的位置在Jni_OnLoad,但是把so文件拉进ida中是无法察看的,怎么查找Jni_Onload是第一个问题。我使用的方法是:自己编写so加载,在自己的jni_onload下断点,从当前函数返回,会发现进入了libdvm.so中,上一条指令就是对Jni_OnLoad的调用,上一条指令在我的电脑中是:

红色的r8就是Jni_OnLoad的地址,进去就是Jni_OnLoad
自己写了idapython的脚本:
from idaapi import *  
from idc import *

so_base = 0x4176c000   # the base address of libdvm.so

class DumpHook(DBG_Hooks):

    def dbg_bpt(self,tid,ea):
        return 1

#hook call jni_onload

AddBpt(so_base+0x511d0)

print "set hook ok...\n"

debug = DumpHook()

debug.hook()

下面是我的轻博客,有兴趣可以关注一下,希望多交流,找到志同道合的朋友。
http://fccload.lofter.com/

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 34
活跃值: (50)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
怎么不附带idapython脚本源码来看看?
2016-4-15 11:00
0
雪    币: 124
活跃值: (469)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
上面是框架,具体还是自己写吧,反正原理有也不难。
2016-4-15 11:20
0
雪    币: 571
活跃值: (4395)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
其实libdvm.so里就有字符串的提示,数字的反调试就2招,只需要几个关键函数就可以过掉,反调试的方法已经有人在博客里写过了,其他梆梆的脱壳解决方案。
2016-4-15 13:07
0
游客
登录 | 注册 方可回帖
返回
//