zoukankan      html  css  js  c++  java
  • 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, " "

        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

  • 相关阅读:
    Windows服务的安装及配合定时器编写简单的程序
    关于VS2019使用Git时遇到的Bug
    记一次工作中的小BUG
    .Net WebApi接口Swagger集成简单使用
    kettle 创建数据库资源库
    C# 语法 i++;++i;i--;--i
    MSDN
    Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布
    Jenkins持续集成(上)-Windows下安装Jenkins
    自动发布-asp.net自动发布、IIS站点自动发布(集成SLB、配置管理、Jenkins)
  • 原文地址:https://www.cnblogs.com/gm-201705/p/9864074.html
Copyright © 2011-2022 走看看