打造smali代码库辅助分析
在分析Android应用程序的时候,我们往往会插入代码重打包apk来辅助我们分析的工作
一个比较取巧的方法就是先用java写好代码以及相关的调用之后, 然后直接扣出代码
然后可以制作成各种代码模版,放在Android Killer中使用(代码模版管理器)
Android Killer 自带3种代码模版
1. LoadLibrary
const-string v0, "so name"
invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V
2. logcat
const-string v0, "you message"
invoke-static {v0}, Lcom/android/killer/Log;->LogStr(Ljava/lang/String;)V
这个模版实质上会在代码中插入一个包
![](https://i-blog.csdnimg.cn/blog_migrate/2cfc9c92fe5a2d2ddfcc179c2c166ba0.png)
针对于不同的数据类型给定了很多打印日志方法
所以我们在写这样的代码的时候 最好也编译一个静态类,这样调用起来方便一些
3. toast
const-string v0, "you message"
const/4 v1, 0x1
invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
move-result-object v0
invoke-virtual {v0}, Landroid/widget/Toast;->show()V
个人感觉用插入toast不如插入log, 同样也可以做成一个静态类,像log那样包含在一个包里面
4. dumpStack
invoke-static {}, Ljava/lang/Thread;->dumpStack()V
5. traceview
traceview用于性能分析
invoke-static {}, Landroid/os/Debug;->startMethodTracing()V
invoke-static {}, Landroid/os/Debug;->stopMethodTracing()V
同时需要声明权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
我们自己打造一个smali代码库,有需要的时候就像里面添加代码
github地址:
当然是先在java里面写好了,调用一下,取出来,省时又省力,在编码的时候最好是写成静态函数,同时只给一个参数
然后就把代码模版拷贝到android killer中,愉快的开始玩耍了