根据特征找RegisterNative函数,找到动态注册函数

  • 为什么要找RegisterNative函数?
    因为根据RegisterNative函数,可以找到动态注册的函数地址,就方便看so中的函数了。

  • 怎么找RegisterNative函数?
    JNI_Onload 函数中

  • 特征
    特征需要简单强调下:
    860 (0x35C)
    (*(v1 + 860))()
    LDR.W [R12, #0x35C]

  • 具体简单方便方法
    简述:所有的JNI函数的指针在一个大表格中,RegisterNative函数位于860(0x35C)这个位置,正常反汇编后形如(*(v1 + 860))(),然后我们会转换v1env结构体指针,即可得到正确结果。
    但我们现在得不到正确的反汇编代码,所以老老实实看汇编的特征。

    1. 在IDA中搜索立即数,ALT+I热键,如图操作。


      ALT+I.png
    2. 点ok ,出 ALT+I 结果


      ALT+I 结果.png
    3. Ctrl+F 搜索0x35C(这种信息一般十六进制显示)


      Ctrl+F.png
    4. 找到
      样本中的so,搜索结果就很明确了,在JNI_Onload函数中,点击进去

      找到.png

      特征明确,off_7588C即为我们需要的methods列表

      双击进去:


      methods列表.png

    达到目的

参考:

IDA F5堆栈不平衡的处理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容