IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

Android安全–加强版Smali Log注入

Coder 2015-09-04 21:35:34 累计浏览 3,783 次
本机暂存

有的时候我们需要注入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

那可能要先修改使用的寄存器数,然后添加打印:

1

这样注入是比较麻烦的,可以自己建一个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

就能打印出:

3

如果是int或者long类型的话,如下调用即可:

image获得Log输出:

4

当然你还可以定义自己的Log输出加入到crack.smali里面。

但是记得把crack.smali这个文件拷贝到目录下去。


同分类推荐文章

  1. 绿盟科技《APT组织研究年鉴》(2026 版)正式发布 (2026-06-16 20:21:10)
  2. 【已复现】Linux内核Fragnesia权限提升漏洞(CVE-2026-46300) (2026-06-15 10:53:58)
  3. 企业文档安全最佳实践(二):给文档上“身份证”——手动标密与智能自动标密 (2026-06-12 17:18:33)

查看更多 安全 文章 →

建议继续学习

  1. 情绪版(Mood board)操作流程的新思考 (累计阅读 41,753)
  2. android 开发入门 (累计阅读 19,529)
  3. Android 连接SSID隐藏网络以及 LEAP 认证的方法 (累计阅读 9,539)
  4. 让安卓手机通过代理翻墙的方法 (累计阅读 9,116)
  5. 手机产品设计方向 (累计阅读 7,954)
  6. 实时监控Android设备网络封包 (累计阅读 6,558)
  7. Eclipse开发Android应用程序入门:重装上阵 (累计阅读 6,461)
  8. 基于 PhoneGap 与 Java 开发的 Android 应用的性能对比 (累计阅读 6,411)
  9. Android用户界面设计:表格布局 (累计阅读 6,186)
  10. Windows下使用VMware安装Android (累计阅读 5,633)