Smali插桩打日志
一、smali目錄下新建crack.smali,內容如下:
.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, "crack_log_str"
? ? 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, "crack_log_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, "crack_log_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
二、使用方法(打印String):
invoke-static {v1}, Lcrack;->log1(Ljava/lang/String;)V
三、有時日志太多,要寫入文件分析:
.class public Lcrack2;
.super Ljava/lang/Object;
.source "crack2.java"
?
.method public static puts(Ljava/lang/String;)V
? ? .locals 7
?
? ? .prologue
? ? :try_start_0
?
? ? const-string v3, "/sdcard/crack/debug.log"
?
?
? ? new-instance v2, Ljava/io/FileOutputStream;
?
? ? const/4 v5, 0x1
?
? ? invoke-direct {v2, v3, v5}, Ljava/io/FileOutputStream;-><init>(Ljava/lang/String;Z)V
?
? ? .line 19
? ? new-instance v4, Ljava/io/OutputStreamWriter;
?
? ? const-string v5, "gb2312"
?
? ? invoke-direct {v4, v2, v5}, Ljava/io/OutputStreamWriter;-><init>(Ljava/io/OutputStream;Ljava/lang/String;)V
?
? ? .line 21
? ? invoke-virtual {v4, p0}, Ljava/io/OutputStreamWriter;->write(Ljava/lang/String;)V
?
? ? const-string v5, "\r\n"
?
? ? invoke-virtual {v4, v5}, Ljava/io/OutputStreamWriter;->write(Ljava/lang/String;)V
? ? .line 23
? ? invoke-virtual {v4}, Ljava/io/OutputStreamWriter;->flush()V
?
? ? .line 25
? ? invoke-virtual {v4}, Ljava/io/OutputStreamWriter;->close()V
?
? ? .line 27
? ? invoke-virtual {v2}, Ljava/io/FileOutputStream;->close()V
? ? :try_end_0
? ? .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
?
? ? .line 37
?
? ? :cond_0
? ? :goto_0
? ? return-void
?
? ? .line 30
? ? :catch_0
? ? move-exception v0
?
? ? .line 34
? ? const-string v5, "debug"
?
? ? const-string v6, "file write error"
?
? ? invoke-static {v5, v6}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
?
? ? goto :goto_0
.end method
?
#使用方法:invoke-static {vx}, Lcrack2;->puts(Ljava/lang/String;)V
轉載于:https://www.cnblogs.com/gm-201705/p/9864074.html
總結
以上是生活随笔為你收集整理的Smali插桩打日志的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [NOIP 2015]运输计划-[树上差
- 下一篇: js作用域链以及全局变量和局部变量