Android安全–加强版Smali Log注入
有的时候我们需要注入smali调用Log输出,打印字符串的值。
比如说:
如果我们要打印下面v1的值。
new-instance v1, Ljava/lang/String;
const-string v7, “this is my string”
invoke-direct {v1, v7}, Ljava/lang/String;-><init>(Ljava/lang/String;)V
那可能要先修改使用的寄存器数,然后添加打印:
![]()
这样注入是比较麻烦的,可以自己建一个crack.smali文件,并定义自己的Log信息输出函数,如下:
| 
 1 
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62  | 
 .class public Lcrack; 
.super Ljava/lang/Object; .source "crack.java" .method public static log1(Ljava/lang/String;)V #打印出info 1字符串 .locals 1 .prologue const-string v0, "info 1" invoke-static {v0, p0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I return-void .end method .method public static log2(Ljava/lang/String;)V #打印出info 2字符串 .locals 1 .prologue const-string v0, "info 2" invoke-static {v0, p0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I return-void .end method .method public static log3(Ljava/lang/String;)V #打印出info 3字符串 .locals 1 .prologue const-string v0, "info 3" invoke-static {v0, p0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I return-void .end method .method public static I(I)V #打印出int型值 .locals 2 .prologue const-string v0, "info_int" invoke-static {p0}, Ljava/lang/String;->valueOf(I)Ljava/lang/String; move-result-object v1 invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I return-void .end method .method public static J(J)V #打印出long类型的值 .locals 2 .prologue const-string v0, "info_long" invoke-static {p0, p1}, Ljava/lang/String;->valueOf(J)Ljava/lang/String; move-result-object v1 invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I return-void .end method  | 
这个时候就只需要添加一行代码就行了:
invoke-static {v1}, Lcrack;->log1(Ljava/lang/String;)V
就能打印出:
![]()
如果是int或者long类型的话,如下调用即可:
获得Log输出:
![]()
当然你还可以定义自己的Log输出加入到crack.smali里面。
但是记得把crack.smali这个文件拷贝到目录下去。
Android安全–加强版Smali Log注入的更多相关文章
- android smali代码注入  实战一
		
有同学在通服里面干活,最近一直忙着4g基站搭建的干活,测试设备(android)测量移动网络数据,没有自动保存记录的功能,只能手动记录各种测试参数,不知道测试软件供应商是怎样想的,竟然不提供的这样的功 ...
 - apk反编译(4)Smali代码注入
		
转自 : http://blog.sina.com.cn/s/blog_5674d18801019i89.html 应用场景 Smali代码注入只能应对函数级别的移植,对于类级别的移植是无能为力的.具 ...
 - [Android]使用Dagger 2依赖注入 - DI介绍(翻译)
		
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5092083.html 使用Dagger 2依赖注入 - DI介 ...
 - [Android]使用Dagger 2依赖注入 - API(翻译)
		
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5092525.html 使用Dagger 2依赖注入 - API ...
 - [Android]使用Dagger 2依赖注入 - 自定义Scope(翻译)
		
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5095426.html 使用Dagger 2依赖注入 - 自定义 ...
 - [Android]使用Dagger 2依赖注入 - 图表创建的性能(翻译)
		
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5098943.html 使用Dagger 2依赖注入 - 图表创 ...
 - Android逆向之smali
		
Android逆向之smali 头信息 smail文件前三行 .class <访问权限> [关键修饰字] <类名>; .super <父类名>; .source & ...
 - web 安全相关(一):Log注入(转)
		
在网上有很多关于安全的文章,但是 OWASP 开发指导 涵 盖了几乎所有关于Web站点安全的东西.(注:OWASP(开放Web应用安全项目- Open Web Application Security ...
 - 1473. [Ioi2000]Post加强版 n log^2 n做法
		
1473. [Ioi2000]Post加强版 n log^2 n做法 题面 有n个城市从负方向向正方向按照1至n标号,\(d[i]\)表示城市i离原点的距离并且\(d[1] = 0\),对于\(i \ ...
 
随机推荐
- mysql 5.6.43免安装版安装教程
			
1.第一步,下载 Mysql官方网站:http://www.mysql.com/,数据库下载地址:http://www.mysql.com/downloads/.个人比较喜欢用免安装版,使用起来方便 ...
 - vue单页面应用刷新网页后vuex的state数据丢失的解决方案
			
1. 产生原因其实很简单,因为store里的数据是保存在运行内存中的,当页面刷新时,页面会重新加载vue实例,store里面的数据就会被重新赋值. 2. 解决思路一种是state里的数据全部是通过请求 ...
 - 2018申请淘宝客AppKey
			
1.www.alimama.com 申请账号进入后2.进入我的联盟,按下面的步骤 完成以后等待网站审核. 3.审核完成后 按以下的图,申请进入开放平台或得appkey 4.最后就可以进入开放平台申请看 ...
 - Python3.x在linux下print中文问题
			
由于python3内部以Unicode实现,在默认非utf-8的Linux上print中文会报错UnicodeEncodeError. 由于系统默认非unicode,python3又以unicode实 ...
 - Java设计模式之单例模式,笔记完整到不敢想象
			
单例模式: 作用 保证一个类只有一个实例,并且提供一个访问该实例的全局访问入口 单例模式的常用 1.Windows的任务管理器2.Windows的回收站,也是一个单例应用3.项目中的读取配置文件的对象 ...
 - 美图App的移动端DNS优化实践:HTTPS请求耗时减小近半
			
本文引用了颜向群发表于高可用架构公众号上的文章<聊聊HTTPS环境DNS优化:美图App请求耗时节约近半案例>的部分内容,感谢原作者. 1.引言 移动互联网时代,APP 厂商之间的竞争非常 ...
 - HttpSession的API
			
//获取Session对象request.getSession()request.getSession(boolean create)//获取SessionIdgetId()//获取当前session ...
 - [Swift]LeetCode22. 括号生成 | Generate Parentheses
			
Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes ...
 - 1. VIM 系列 - 简单入门,拾起兴趣
			
目录 1. 认识模式 1.1 正常模式 1.2 插入模式 1.3 命令模式 1.4 可视模式 2. 常用快捷键 1. 认识模式 vim 一共有四种模: 1. 正常模式 2. 插入模式 3. 命令模式 ...
 - javascript 使用小技巧总结
			
按位取反 ~a 即:返回 -(a+1),会去掉小数点. let a = 3.14; let b = ~a; //b = -(3.14+1) 取整 为-4: let c = ~b; //c = -(-4 ...