【新提醒】Log工具类(含食用说明和演练)

本帖最后由 ꯭清꯭羽꯭ღ 于 2019-6-27 17:57 编辑

在这里,丢一个自制的Log工具类,用于逆向分析和调试,特点:
◎可以输出任何格式的对象(String Object等等)
◎显示输出所在类名和行号(行号就是smali对应的.line,如果smali中没有.line,则显示-1)
◎内置Z D I S J ...修饰符的转换
◎简单易用

现在就教你们是怎样得来的@gfce @情非得已c

食用说明:
首先,打开你要调试的dex工程,没有就新建一个

将smali文件放到工程的classes目录里面

◎初始化,两个方式,喜欢哪个就用哪个
调用代码

  1. invoke-static {p0}, Lmutil/Log;->init(Landroid/content/Context;)V

复制代码

有的小白不知道加在哪个类名,好吧,教你找

如图,找到相对于的类名,然后在工程打开即可,如果最上面的<Application没有name这样的标签,那么找下面那个主入口就可以了

◎输出,有三种输出方式,按需所用
<1>Toast方式,这个大家都熟悉吧,不知道Toast是什么的话就建议别玩Android了

,自行去百度

调用代码

  1. invoke-static {v0}, Lmutil/Log;->toast(Ljava/lang/Object;)V

复制代码

<2>Copy(复制)方式,说白了就是将信息复制到粘贴板
调用代码

  1. invoke-static {v0}, Lmutil/Log;->copy(Ljava/lang/Object;)V

复制代码

使用方式同上

<3>out,以文件的方式输出,默认保存在/sdcard/包名.log〈不支持自定义,没必要,强迫症可以自己改〉
使用方式同Toast
调用代码

  1. invoke-static {v0}, Lmutil/Log;->out(Ljava/lang/Object;)V

复制代码

好了,三种输出方式介绍完毕
下面说一些注意事项
◎文件输出的方式,必须要有读写手机储存的权限,如果没有的话,请将以下代码复制到AndroidManifest.xml里面

  1. <!-- 修改或删除您的USB存储设备中的内容 -->

  2. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

  3. <!-- 读取您的USB存储设备中的内容 -->

  4. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

复制代码

◎如果遇到Z I D 这样的修饰符,则必须转换再输出,eg:

  1. invoke-static {v0}, Lmutil/Log;->Z2O(Z)Ljava/lang/Object;

  2. move-result-object v0

  3. invoke-static {v0}, Lmutil/Log;->out(Ljava/lang/Object;)V

复制代码

  1. invoke-static {v0}, Lmutil/Log;->I2O(I)Ljava/lang/Object;

  2. move-result-object v0

  3. invoke-static {v0}, Lmutil/Log;->out(Ljava/lang/Object;)V

复制代码

◎D 和 J 要两个寄存器,比如

  1. invoke-static {v0, v1}, Lmutil/Log;->J2O(J)Ljava/lang/Object;

  2. move-result-object v0

复制代码

◎切记,必须初始化

最后附上文件和所有调用代码
点击下载[6.27-13:28打包]

调用代码

  1. invoke-static {p0}, Lmutil/Log;->init(Landroid/content/Context;)V

  2. invoke-static {v0}, Lmutil/Log;->toast(Ljava/lang/Object;)V

  3. invoke-static {v0}, Lmutil/Log;->copy(Ljava/lang/Object;)V

  4. invoke-static {v0}, Lmutil/Log;->out(Ljava/lang/Object;)V

复制代码

  1. invoke-static {v0, v1}, Lmutil/Log;->D2O(D)Ljava/lang/Object;

  2. move-result-object v0

复制代码

  1. invoke-static {v0}, Lmutil/Log;->F2O(F)Ljava/lang/Object;

  2. move-result-object v0

复制代码

  1. invoke-static {v0}, Lmutil/Log;->S2O(S)Ljava/lang/Object;

  2. move-result-object v0

(0)

相关推荐