首页
社区
课程
招聘
解决爱加密加固之后使用xposed hook的时候log打印不出来的问题
发表于: 2017-4-11 15:06 12914

解决爱加密加固之后使用xposed hook的时候log打印不出来的问题

2017-4-11 15:06
12914

最近在爱加密加固之后,用xposed去打印日志,开始用log.i一直打不出来,以为是插件有问题,后来才发现爱加密加固之后只有Log.e才能够打出日志。虽然Log.e打日志也可以,但是作为重度强迫症患者,一堆错误的日志看得很头疼

声明一下,我水平有限,不要骂我,谢谢

源码在https://github.com/smartdone/printlog

我试着用dlsym去调用Log在native层对应的方法android_util_Log_println_native,以及在其中调用的__android_log_buf_write方法直接去写日志,发现并不能够吧日志写出了,所以爱加密应该劫持了这些函数,并且在不是错误日志的时候都不把日志打出来

你可以跟踪log的源码,然后分析其原理,其实打印日志就是对/dev/log/下面的设备文件进行操作,在Log的d,i,v,w,e这些方法中都是写到/dev/log/main这个文件里面的。我们先简单分析一下源码

首先是java层的代码代码位置在frameworks\base\core\java\android\util\Log.java。我们可以发现,打印日志最终都是调用的这个native方法

我们看这个native方法实现的地方,在安卓源码的frameworks\base\core\jni\android_util_Log.cpp这个位置,在这个里面,发现就只是调用了__android_log_buf_write这个方法来打印日志,前面做了一些判断

接下来我们继续跟踪到__android_log_buf_write方法定义的位置,在安卓源码的system\core\liblog\logd_write.c中,这里在前面讲log的等级以及tag和log的消息装在一个结构体数组里面,然后调用了write_to_log打印日志

我们再看write_to_log这个方法,这是前面定义的一个函数指针,他的初始值是指向__write_to_log_init这个方法。这里面重点来了,他做了一下初始化,就是把日志这些设备文件打开,然后重新把write_to_log指针指向__write_to_log_kernel这个方法,也就是保证初始化完成之后,再使用这个函数指针调用函数的时候就不去做设备文件打开的操作了。

__write_to_log_kernel方法如下,在这里就是去调用了log_writev方法去写日志

好了,终于要分析完了,log_writev是个宏定义,其实就是writev方法,这个方法实现在system\core\liblog\uio.c中,这里就是最终写日志的地方了,其实就是用write方法,向日志设备文件里面写日志,然后就完成了。

既然爱加密将打印日志的函数给hook了,那么我们就只能够自己去实现一个打印日志的方法了,实现的方式比较简单,就是打开设备文件,将日志写进去,返回写入的长度就行了,native层的代码如下

写好动态库之后,在xposed插件中动态的加载起来,然后再使用自己实现的log接口去写。


[峰会]看雪.第八届安全开发者峰会10月23日上海龙之梦大酒店举办!

收藏
免费 1
支持
分享
打赏 + 1.00雪花
打赏次数 1 雪花 + 1.00
 
赞赏  CCkicker   +1.00 2017/05/08
最新回复 (7)
雪    币: 2
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
666,学习学习
2017-4-11 16:37
0
雪    币: 62
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
确实学到了
2017-4-13 07:09
0
雪    币: 37
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习了。
2017-4-14 16:25
0
雪    币: 144
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
666,确实6
2017-4-14 17:23
0
雪    币: 0
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
您太强了
2018-5-6 13:37
0
雪    币: 207
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
    还是大神厉害··如有需要··可以试试我们小蜜盾  为iOS/Android插件开发者提供专业极致的dylib/so在线加固服务,一键上传,免费加固,欢迎品鉴  www.xmprotect.com
2018-5-19 09:05
0
雪    币: 102
活跃值: (1930)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
mark
2019-8-13 01:27
0
游客
登录 | 注册 方可回帖
返回
//