美文网首页
IDA静态调试还原JNI_OnLoad函数

IDA静态调试还原JNI_OnLoad函数

作者: 人活一世 | 来源:发表于2020-07-11 18:10 被阅读0次

    1.找到JNI_OnLoad函数

    图片.png
    图片.png

    2.识别成函数

    按p


    图片.png
    图片.png

    再按F5


    图片.png
    图片.png
    注:很多时候直接按F5就能直接识别出函数

    3.改参数

    在Cpp文件中一个完整JNI_OnLoad函数是这样的


    图片.png

    只需要把关键地方的函数还原就行

    1.改JNI_OnLoa函数的参数

    图片.png

    改成


    图片.png

    按xx.cpp中的JNI_OnLoad函数模型来改


    图片.png

    2.改GetEnv函数

    参照原函数来改


    图片.png

    第一个参数是vm,在cpp代码里是默认参数不显示
    第二个参数是 JNIEnv 类型
    第三个参数是 JNI 版本,这个不用改
    在IDA里是这样显示


    图片.png
    先获取类型
    图片.png
    图片.png

    改二个参数类型


    图片.png
    图片.png
    改完后
    图片.png
    这里把v62赋值v5, 接收的v5类型也改成JNIEnv *
    识别成功后,FindClass和RegisterNatives函数也出来了
    图片.png

    3.改FindClass

    图片.png

    4.改RegisterNatives

    图片.png

    这个参数


    图片.png

    就是java方法与C的函数对应表


    图片.png

    4.找到动态注册表

    点击 g_methods 函数所在的地址,也就是上一步在IDA里识别到的第三个参数 off_A9094


    图片.png

    动态注册表就在这里


    图片.png
    从上到下依次是 函数名,函数参数和返回值类型,函数所在内存地址
    图片.png

    点击函数地址


    图片.png
    进入到对应的函数
    图片.png
    点F5识别成函数
    图片.png

    相关文章

      网友评论

          本文标题:IDA静态调试还原JNI_OnLoad函数

          本文链接:https://www.haomeiwen.com/subject/edvicktx.html