日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Smali插桩打日志

發(fā)布時間:2025/7/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Smali插桩打日志 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、smali目錄下新建crack.smali,內(nèi)容如下:

.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

轉(zhuǎn)載于:https://www.cnblogs.com/gm-201705/p/9864074.html

總結(jié)

以上是生活随笔為你收集整理的Smali插桩打日志的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。