能力值:
( LV5,RANK:60 )
|
-
-
2 楼
动手做例子吧。自己做小攻和小防,这样学习会比较快,而且有成就感。
下面由浅入深,我用了1年,你来试试:
1:可以先做个普通的appDemo1,然后用工具反编译出源码。目的:熟悉反编译工具。
2:将appDemo1代码混淆成appDemo2,然后用工具反编译出源码。目的:认识到代码混淆也是可以反编译的,只是源码阅读起来费劲。
3:将appDemo2核心代码利用jni技术写入.so成appDemo3,然后用工具反编译到.so,用IDA静态调试,尝试能根据接口复原并改写appDemo。目的:熟悉jni编程,熟悉IDA静态调试。
4:将appDemo3加壳<会用到动态加载dex>,密钥写入.so成appDemo4,然后尝试利用步骤3的方法分析.so文件,拿到密钥进行解壳。目的:加壳解壳。
5:尝试将appDemo4变为S/C模式成appDemo5,核心代码放入服务器,通过网络传输密钥和密文的数字证书,客户端程序实时解密,尝试将解密后的明文不存硬盘,直接进内存后解密。目的:掌握网络通信,RSA算法,内存动态加载。
6:将appDemo5用爱加密和棒棒固加密成appDemo6,认真学习它们的加密原理,然后尝试用IDA等工具动态调试dump到dex明文文件,最后还原appDemo。目的:了解动态调试技术。
7: 。。。不敢写了
如何用IDA,如何加壳,如何代码混淆。这些请百度,请搜看雪,应有尽有
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
好专业,太感谢了!
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
该学不少东西了!
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
非常感谢前辈的耐心/用心回答,获益匪浅
|
|
|