首页 > 代码库 > 打造smali代码库辅助分析

打造smali代码库辅助分析

打造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

这个模版实质上会在代码中插入一个包
技术分享
针对于不同的数据类型给定了很多打印日志方法
所以我们在写这样的代码的时候 最好也编译一个静态类,这样调用起来方便一些

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用于性能分析
http://www.cnblogs.com/bingghost/p/5823864.html

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地址:
https://github.com/bingghost/SmaliLibrary

当然是先在java里面写好了,调用一下,取出来,省时又省力,在编码的时候最好是写成静态函数,同时只给一个参数

然后就把代码模版拷贝到android killer中,愉快的开始玩耍了






来自为知笔记(Wiz)


打造smali代码库辅助分析