注入代码需要注意寄存器个数。1.插入log信息
const-string v2,"SN"
invoke-static {v2,v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I2.弹出消息框
new AlertDialog.Builder(self).setTitle("普通对话框").setMessage("你好,Android!").show();
new-instance v1,Landroid/app/AlertDialog$Builder;
invoke-direct {v1,p0}, Landroid/app/AlertDialog$Builder;-><init>(Landroid/content/Context;)Vconst-string v2,"\u666e\u901a\u5bf9\u8bdd\u6846"
invoke-virtual {v1,v2}, Landroid/app/AlertDialog$Builder;->setTitle(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;

const-string v2,"\u4f60\u597d\uff0cAndroid!"
invoke-virtual {v1,v2},Landroid/app/AlertDialog$Builder;->setMessage(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;
invoke-virtual {v1},Landroid/app/AlertDialog$Builder;->create()Landroid/app/AlertDialog;
move-result-object v2invoke-virtual {v2},Landroid/app/AlertDialog;->show()V将上述smali代码插入MainActivity.smali中的create函数的return-void语句前面3.卡住程序运行方法一:try{Thread.sleep(60*1000);
}

catch(InterruptedException e){e.printStackTrace();}.line 69const-wide/32  v1,0xeff0:try_start_0#v1=(LongLo);v2=(LongHi);invoke-static {v1,v2},Ljava/lang/Thread;->Sleep(J)V:try_end_0.catch Ljava/lang/InterruptedException; {:try_start_0 .. try_end_0} :catch_0.line 87:goto_0#v0=(Conflicted);#此后面是try后的内容return-void.line 70:catch_0#v0=(Uninit);move-exception v0.line 72.local v0, e:Ljava/lang/InterruptedException;#v0=(Reference);invoke-virtual {v0}, Ljava/lang/InterruptedException;->printStackTrace()Vgoto :goto_0方法二:
android.os.SystemClock.sleep(60*1000);const-wide/32 v0, 0xea60
invoke-static {v0, v1}, Landroid/os/SystemClock;->sleep(J)V4.栈跟踪(调用关系)
#new Exception("print trace").printStackTrace();new-instance v0,Ljava/lang/Exception;
const-string v1,"print trace"
invoke-direct {v0,v1}, Ljava/lang/Exception;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V栈跟踪信息记录了程序从启动到printStackTrace()被执行期间所有被调用过的方法。从下往上查看栈跟踪信息,
找到第一条以com.android.stackTrace开头的信息。栈跟踪信息是WARN级别,而且Tag名称被系统命令为System.err. 命令行:adb logcat -s System.err:V *:W5.Method Profiling(调用关系)
#android.os.Debug.startMethodTracing("123");  "123"为文件名
#a();
#android.os.Debug.stopMethodTracing();Android-Manifest.xml添加SD卡写入权限
<user-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />#android.os.Debug.startMethodTracing("123");
const-string v0, "123"
invoke-static {v0}, Landroid/os/Debug;->startMethodTracing(Ljava/lang/String;) V#android.os.Debug.stopMethodTracing();
invoke-static {}, Landroid/os/Debug;->stopMethodTracing() VSD卡的根目录生成123.trace
分析命令:
adb pull /mnt/sdcard/123.trace
traceview 123.trace5.添加BroadcastReceiver.# static fields.field private intentFilter:Landroid/content/IntentFilter;.field private reciver:Lcom/example/mytest/MyReciver;method protected onCreate(Landroid/os/Bundle;)Vnew-instance v0, Landroid/content/IntentFilter;invoke-direct {v0}, Landroid/content/IntentFilter;-><init>()Viput-object v0, p0, Lcom/test/SearchActivity;->intentFilter:Landroid/content/IntentFilter;iget-object v0, p0, Lcom/test/SearchActivity;->intentFilter:Landroid/content/IntentFilter;const-string v1, "android.intent.action.search"invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)Vnew-instance v0, Lcom/example/mytest/MyReciver;invoke-direct {v0, p0}, Lcom/example/mytest/MyReciver;-><init>(Landroid/app/Activity;)Viput-object v0, p0,Lcom/test/SearchActivity;->reciver:Lcom/example/mytest/MyReciver;iget-object v0, p0, Lcom/test/SearchActivity;->reciver:Lcom/example/mytest/MyReciver;iget-object v1, p0, Lcom/test/SearchActivity;->intentFilter:Landroid/content/IntentFilter;invoke-virtual {p0, v0, v1}, Lcom/test/SearchActivity;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;..method public onDestroy()Viget-object v0, p0, Lcom/test/SearchActivity;->reciver:Lcom/example/mytest/MyReciver;invoke-virtual {p0, v0}, Lcom/test/SearchActivity;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V

6.等待调试器附加

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

7.加载so

const-string/jumbo v0, "native-lib"

invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V

转载于:https://www.cnblogs.com/fply/p/8301088.html

smali注入常用代码相关推荐

  1. 常用android的smali注入代码,android smali代码注入 实战一

    有同学在通服里面干活,最近一直忙着4g基站搭建的干活,测试设备(android)测量移动网络数据,没有自动保存记录的功能,只能手动记录各种测试参数,不知道测试软件供应商是怎样想的,竟然不提供的这样的功 ...

  2. 5 款阿里常用代码检测工具,免费用!

    作者 | 喻阳 面临问题 在日常研发过程中,我们通常面临的代码资产问题主要分为两大类:代码质量问题和代码安全漏洞. 1.代码质量问题 代码质量其实是一个老生常谈的话题,但问题是大家都知道它很重要,却又 ...

  3. android 环境配置和安装, Android系统包说明,基本控件,常用代码,ADB 命令行,APK文件确解,小技艺,...

    一.             环境配置和安装(Android2.2) 参考文章:这里 1.1     JDK 1.2     SDK 下载地址:http://dl.google.com/android ...

  4. 【SpringBoot】 SpringBoot项目常用代码配置

    [SpringBoot] SpringBoot项目常用代码配置 1. MyBatis Plus 1.1 分页插件 MP的分页插件几乎每个项目都拥有,基本代码配置如下: @Configuration p ...

  5. mysql注入报错函数_MySQL注入常用函数

    注入的分类 仁者见仁,智者见智. 基于从服务器接收到的响应 ▲基于错误的 SQL 注入 ▲联合查询的类型 ▲堆查询注射 ▲SQL 盲注 •基于布尔 SQL 盲注 •基于时间的 SQL 盲注 •基于报错 ...

  6. pytorch常用代码

    20211228 https://mp.weixin.qq.com/s/4breleAhCh6_9tvMK3WDaw 常用代码段 本文代码基于 PyTorch 1.x 版本,需要用到以下包: impo ...

  7. 一、PyTorch Cookbook(常用代码合集)

    PyTorch Cookbook(常用代码合集) 原文链接:https://mp.weixin.qq.com/s/7at6y2NcYaxGGN8syxlccA 谢谢作者的付出.

  8. GitHub上7000+ Star的Python常用代码合集

    作者 | 二胖并不胖 来源 | 大数据前沿(ID:bigdataqianyan) 今天二胖给大家介绍一个由一个国外小哥用好几年时间维护的Python代码合集.简单来说就是,这个程序员小哥在几年前开始保 ...

  9. 收藏!PyTorch常用代码段合集

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Jack Stark,来源:极市平台 来源丨https://zhu ...

最新文章

  1. 2022斯坦福AI指数报告出炉!中国霸榜AI顶会,但引用量最低
  2. win7 php mysql扩展名_Win7 iis php mysql 开发环境配置(详细)
  3. 【深度学习】ResNet——CNN经典网络模型详解(pytorch实现)
  4. flask第一章:项目环境搭建
  5. (王道408考研操作系统)第五章输入/输出(I/O)管理-第一节2:I/O控制器
  6. c#.net实体类序列化方法  为什么要序列化
  7. logStash收集日志并存储到Elasticsearch
  8. Android/ios手机销售榜信息
  9. 重读《JavaScript DOM编程艺术》(第一版)
  10. 入门级XML学习(三)
  11. html获取xml的数据,xml格式获取值
  12. ESP32-CAM 摄像头学习
  13. 阿里云虚拟主机备案期间网站调试
  14. Universal Source_free Domain Adaption论文阅读笔记
  15. 转载:ultraiso制作超过4G的系统U盘启动盘教程
  16. Zynga发布魔法三消手游《Harry Potter: Puzzles Spells》
  17. 1205 Lock wait timeout exceeded; try restarting transaction处理
  18. 广州外贸童装批发市场
  19. 怎样修改计算机用户文件名,win10修改用用户文件夹名字怎么操作_win10更改用户文件夹名称方法...
  20. Maya: 菜单Create Subdiv Primitives Sphere

热门文章

  1. java过滤html相关标签
  2. oracle内与外连接,Oracle (内连接)与(外连接)区别
  3. pythongetattribute_Python __getattribute__ vs __getattr__ 浅谈
  4. vue项目 构建 打包 发布 三部曲
  5. 主从复制面试之作用和原理
  6. python可以用来写导航吗_在python中使用selenium进行导航
  7. Python 语言程序设计(4-1)分支循环语句
  8. 非法使用java_java中的非法远程方法
  9. KNN(五)--层次Kmean
  10. 用python提取图片主要颜色_用Python提取图片主要颜色