|
查看: 15|回复: 0
|
[相关教程]
安卓NDK开发到逆向:编译一个带native加密的so然后自己破自己
[复制链接]
|

UID2
贡献9 点
钻石7 个
C币993 个
|

学逆向最好的方式就是自己写一个加密逻辑编译成so然后自己破。这篇走一遍完整流程。
先写一个简单的native加密函数。用Android Studio建个NDK项目,CMakeLists里配好,在native-lib.cpp里写个函数,输入字符串做异或加密再返回。编译出来的so叫libnative-lib.so,扔到jadx里看Java层会看到native方法声明。
逆向工具上jadx看Java层找到System.loadLibrary和native方法声明,知道函数名叫Java_com_example_Native_encrypt。然后拿IDA Pro或者Ghidra打开so,在Exports里搜Java_com_example_Native_encrypt,直接能看到反编译结果。
因为你写的异或逻辑很简单,IDA反编译出来基本就是源码了。这时候可以加点难度:在C层做字符串混淆,把密钥拆成几段用的时候拼,再加个反调试ptrace自己附加自己的逻辑。重新编译再逆一遍,难度就不一样了。
最后一步用Frida动态hook。写个脚本hook encrypt函数的入参和返回值,这样不用看死代码也能知道加密算法干了什么。整个过程走下来你对NDK开发到逆向的完整链条就有概念了。自己破自己写的代码是最快的入门方式。 |
温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、网络世界也请遵守我国的法律法规!一旦发现违法行为,将立即封存相关信息并报警处理!
|
|
|
|
|
|
|
|
温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、网络世界也请遵守我国的法律法规!一旦发现违法行为,将立即封存相关信息并报警处理!