本人刚开始学APP逆向,最近在逆向一个APP,这个APP有一个本地方法使用的是动态注册,我使用IDA查看so文件的代码,发现根本看不懂,看网上的方法,将jni.h文件导入,也不行,连RegisterNatives函数也看不到,但是使用fridahook时,却能hook到。求指点迷津。

本人刚开始学APP逆向,最近在逆向一个APP,这个APP有一个本地方法使用的是动态注册,我使用IDA查看so文件的代码,发现根本看不懂,看网上的方法,将jni.h文件导入,也不行,连RegisterNatives函数也看不到,但是使用fridahook时,却能hook到。求指点迷津。

以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
根据您提供的信息和遇到的困难,您在使用IDA分析APP的so文件的JNI_OnLoad方法时找不到RegisterNatives函数,但使用FridaHook时能够成功hook到。这可能涉及到几个方面的问题,我将为您一一解答并提供解决方案。
解决方案:您可以尝试使用Ghidra进行反汇编,并查看是否能够找到RegisterNatives函数的相关信息。另外,还可以尝试手动调整IDA的视图设置或参数设置,以获取更好的反汇编结果。
解决方案:在IDA中手动关联符号和函数的方法包括使用IDA的符号表功能或直接在汇编代码中搜索相关函数名或特征序列来定位函数位置。此外,还可以尝试使用IDA的插件或脚本来辅助解析和关联符号。
解决方案:由于逆向工程的限制,可能无法通过静态分析(如使用IDA)找到所有函数和符号信息。在这种情况下,可以尝试结合动态分析和静态分析的方法,使用FridaHook等动态分析工具来获取更多的函数信息和调用关系。通过动态分析和静态分析的组合使用,可能能够更好地理解和逆向工程应用程序的so文件。
总结起来,针对您遇到的问题,可以尝试使用其他反汇编工具(如Ghidra)进行反汇编,手动关联符号和函数,并结合动态分析和静态分析的方法来解决逆向工程中的困难。希望这些解决方案能够帮助您找到RegisterNatives函数并更好地理解应用程序的so文件。