打造自己的smali代码库

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37344790/article/details/78378429

最近苦于练习脱壳,奈何常常被打的晕头转向,想起立下每周都要写博客总结自己所学的flag,还是懒洋洋地来更新一篇,来点轻松的,关于打造自己的smali代码库,帮助我们进行Android java的层的辅助分析和爆力破解。我们在android killer里存起自己的代码。


首先看android killer 中 自带的三个板子,log / System.load / Toast

1 log

const-string v0, "you message"

invoke-static {v0}, Lcom/android/killer/Log;->LogStr(Ljava/lang/String;)V

这里直接调用了android killer中的引用包,经过了一层封装,这里log的TAG为“AndroidKiller-string”

如果想自己写log的话,那就

  const-string v1, "conghuachaodan"
  const-string v2,  "logcontent"
  invoke-static {v1,v2} ,Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

这里的string v1是我们的TAG,v2使我们要查看的内容。


2 System.load

const-string v0, "so name"

invoke-static {v0}, Ljava/lang/System;->loadLibrary(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

然后是查看函数调用关系

1 通过添加异常查看函数的调用关系

 new-instance v1, Ljava/lang/Exception;

 const-string v2, "Method Stack"

 invoke-direct {v1, v2}, Ljava/lang/Exception;-><init>(Ljava/lang/String;)V

 invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V


2 stackTrace

invoke-static {}, Ljava/lang/Thread;->dumpStack()V

3 Method Trace

invoke-static {}, Landroid/os/Debug;->startMethodTracing("MethodTraceDebug")V
invoke-static {}, Landroid/os/Debug;->stopMethodTracing("MethodTraceDebug")V

需添加权限文件存储,读取权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

然后是waitForDebugger

invoke-static{}, Landroid/os/Debug;->waitForDebugger()V


然后是Intent启动

1 显示

new-instance v0, Landroid/content/Intent;

invoke-direct {v0}, Landroid/content/Intent;-><init>()V

.local v0, "intent":Landroid/content/Intent;
iget-object v1, p0, Lcom/conghuachaodan/mysmalilibrary/MainActivity$2;->this$0:Lcom/conghuachaodan/mysmalilibrary/MainActivity;

const-class v2, Lcom/conghuachaodan/mysmalilibrary/Main2Activity;

invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->setClass(Landroid/content/Context;Ljava/lang/Class;)Landroid/content/Intent;

iget-object v1, p0, Lcom/conghuachaodan/mysmalilibrary/MainActivity$2;->this$0:Lcom/conghuachaodan/mysmalilibrary/MainActivity;

invoke-virtual {v1, v0}, Lcom/conghuachaodan/mysmalilibrary/MainActivity;->startActivity(Landroid/content/Intent;)V

2 隐式

new-instance v0, Landroid/content/Intent;

invoke-direct {v0}, Landroid/content/Intent;-><init>()V

.local v0, "intent":Landroid/content/Intent;
const-string v1, "Main2ActivityAction"

invoke-virtual {v0, v1}, Landroid/content/Intent;->setAction(Ljava/lang/String;)Landroid/content/Intent;

iget-object v1, p0, Lcom/conghuachaodan/mysmalilibrary/MainActivity$3;->this$0:Lcom/conghuachaodan/mysmalilibrary/MainActivity;

invoke-virtual {v1, v0}, Lcom/conghuachaodan/mysmalilibrary/MainActivity;->startActivity(Landroid/content/Intent;)V


持续更新中、、、
    






猜你喜欢

转载自blog.csdn.net/m0_37344790/article/details/78378429
今日推荐