Android学习第八天---smali插桩

这是一个很常用的高效的手法 学习一下

何为插桩,引用一下wiki的解释:程序插桩,最早是由J.C. Huang 教授提出的,它是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针(又称为“探测仪”),通过探针的执行并抛出程序运行的特征数据,通过对这些数据的分析,可以获得程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。

这个的学习的话 根据这个学习的 阿里云安全

工具下载地址

先将工具下载下来然后找到creak1.apk我是在Windows下直接拷贝一份 然后将后缀改为.zip然后解压

用baksmali进行反编译

java -jar baksmali-2.0.3.jar creak1/classes.dex

将下载的MZLog类的MZLog.smali文件拷贝到com/mzheng目录下,这个文件有3个LOG函数,分别可以输出String的值,Object的值和Object数组的值。注意,如果原程序中没有com/mzheng这个目录,你需要自己用mkdir创建一下。拷贝完后,目录结构如下:

然后就需要打包了

反编译用法:

java -jar baksmali-2.1.3.jar -o c:\classout/ c:\classes.dex

把c:\classes.dex反编译为smali,输出到c:\classout目录
编译用法:

java -jar smali-2.1.3.jar c:\classout/ -o c:\classes.dex

把c:\classout目录下的smali文件编译为c:\classes.dex

签名用法

java -jar signapk.jar testkey.x509.pem testkey.pk8 ApkIDE_crackme1.apk crackme1.apk

但是我在做这个的时候提示未知错误 重做了几次还是这个错误 我直接用现有的软件吧 APK改之理

然后编译的apk还是这个错误 我把加载的apk不做修改打包没问题 再次做一遍的时候竟然成功了 一脸懵逼 不过总算是复现了这个过程 虽然一直处于懵逼的过程中。
小结:

你可能感兴趣的:(Android)