1.找到JNI_OnLoad函數(shù)
圖片.png
圖片.png
2.識別成函數(shù)
按p
圖片.png
圖片.png
再按F5
圖片.png
圖片.png
注:很多時候直接按F5就能直接識別出函數(shù)
3.改參數(shù)
在Cpp文件中一個完整JNI_OnLoad函數(shù)是這樣的
圖片.png
只需要把關(guān)鍵地方的函數(shù)還原就行
1.改JNI_OnLoa函數(shù)的參數(shù)
圖片.png
改成
圖片.png
按xx.cpp中的JNI_OnLoad函數(shù)模型來改
圖片.png
2.改GetEnv函數(shù)
參照原函數(shù)來改
圖片.png
第一個參數(shù)是vm畜隶,在cpp代碼里是默認(rèn)參數(shù)不顯示
第二個參數(shù)是 JNIEnv 類型
第三個參數(shù)是 JNI 版本趣席,這個不用改
在IDA里是這樣顯示
圖片.png
先獲取類型
圖片.png
圖片.png
改二個參數(shù)類型
圖片.png
圖片.png
改完后
圖片.png
這里把v62賦值v5, 接收的v5類型也改成JNIEnv *
識別成功后,FindClass和RegisterNatives函數(shù)也出來了
圖片.png
3.改FindClass
圖片.png
4.改RegisterNatives
圖片.png
這個參數(shù)
圖片.png
就是java方法與C的函數(shù)對應(yīng)表
圖片.png
4.找到動態(tài)注冊表
點擊 g_methods 函數(shù)所在的地址盈罐,也就是上一步在IDA里識別到的第三個參數(shù) off_A9094
圖片.png
動態(tài)注冊表就在這里
圖片.png
從上到下依次是 函數(shù)名孔轴,函數(shù)參數(shù)和返回值類型穴肘,函數(shù)所在內(nèi)存地址
圖片.png
點擊函數(shù)地址
圖片.png
進(jìn)入到對應(yīng)的函數(shù)
圖片.png
點F5識別成函數(shù)
圖片.png