【新提醒】Log工具类(含食用说明和演练)
本帖最后由 ꯭清꯭羽꯭ღ 于 2019-6-27 17:57 编辑
在这里,丢一个自制的Log工具类,用于逆向分析和调试,特点:
◎可以输出任何格式的对象(String Object等等)
◎显示输出所在类名和行号(行号就是smali对应的.line,如果smali中没有.line,则显示-1)
◎内置Z D I S J ...修饰符的转换
◎简单易用
食用说明:
首先,打开你要调试的dex工程,没有就新建一个
将smali文件放到工程的classes目录里面
◎初始化,两个方式,喜欢哪个就用哪个
调用代码
invoke-static {p0}, Lmutil/Log;->init(Landroid/content/Context;)V
复制代码
有的小白不知道加在哪个类名,好吧,教你找
如图,找到相对于的类名,然后在工程打开即可,如果最上面的<Application没有name这样的标签,那么找下面那个主入口就可以了
◎输出,有三种输出方式,按需所用
<1>Toast方式,这个大家都熟悉吧,不知道Toast是什么的话就建议别玩Android了
,自行去百度
调用代码
invoke-static {v0}, Lmutil/Log;->toast(Ljava/lang/Object;)V
复制代码
<2>Copy(复制)方式,说白了就是将信息复制到粘贴板
调用代码
invoke-static {v0}, Lmutil/Log;->copy(Ljava/lang/Object;)V
复制代码
使用方式同上
<3>out,以文件的方式输出,默认保存在/sdcard/包名.log〈不支持自定义,没必要,强迫症可以自己改〉
使用方式同Toast
调用代码
invoke-static {v0}, Lmutil/Log;->out(Ljava/lang/Object;)V
复制代码
好了,三种输出方式介绍完毕
下面说一些注意事项
◎文件输出的方式,必须要有读写手机储存的权限,如果没有的话,请将以下代码复制到AndroidManifest.xml里面
<!-- 修改或删除您的USB存储设备中的内容 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 读取您的USB存储设备中的内容 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
复制代码
◎如果遇到Z I D 这样的修饰符,则必须转换再输出,eg:
invoke-static {v0}, Lmutil/Log;->Z2O(Z)Ljava/lang/Object;
move-result-object v0
invoke-static {v0}, Lmutil/Log;->out(Ljava/lang/Object;)V
复制代码
invoke-static {v0}, Lmutil/Log;->I2O(I)Ljava/lang/Object;
move-result-object v0
invoke-static {v0}, Lmutil/Log;->out(Ljava/lang/Object;)V
复制代码
◎D 和 J 要两个寄存器,比如
invoke-static {v0, v1}, Lmutil/Log;->J2O(J)Ljava/lang/Object;
move-result-object v0
复制代码
◎切记,必须初始化
最后附上文件和所有调用代码
点击下载[6.27-13:28打包]
调用代码
invoke-static {p0}, Lmutil/Log;->init(Landroid/content/Context;)V
invoke-static {v0}, Lmutil/Log;->toast(Ljava/lang/Object;)V
invoke-static {v0}, Lmutil/Log;->copy(Ljava/lang/Object;)V
invoke-static {v0}, Lmutil/Log;->out(Ljava/lang/Object;)V
复制代码
invoke-static {v0, v1}, Lmutil/Log;->D2O(D)Ljava/lang/Object;
move-result-object v0
复制代码
invoke-static {v0}, Lmutil/Log;->F2O(F)Ljava/lang/Object;
move-result-object v0
复制代码
invoke-static {v0}, Lmutil/Log;->S2O(S)Ljava/lang/Object;
move-result-object v0