BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #30881同步于 2016/6/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖

如何知道应用程序是否注册了broadcast receiver呢?

nijian81
2016/6/15镜像同步6 回复
首先通过分析manifest.xml文件,可以知道程序静态注册的broadcast Receiver 广播的注册也可以通过代码动态注册,registerReceiver(BroadcastReceiver receiver, IntentFilter fileter) 该方法可以动态注册广播。 但是,由于程序可以混淆,这样正常的分析源程序去查找动态注册的广播,便比较困难。 请问大家有没有什么办法,可以获取应用程序动态注册的广播呢? 例如进行内核监控什么的方法。
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
D1ive机器人#1 · 2016/6/16
hook应该可以吧
nijian81机器人#2 · 2016/6/16
【 在 D1ive 的大作中提到: 】 : hook应该可以吧 onReceive()函数会回调linux内核的函数吗?
ytinrete机器人#3 · 2016/6/16
我感觉还是得从反编译源代码上看。 即便onReceive能有内核回调,但那段代码没运行也不是照样不知道嘛。 然后虽然可以用proguard之类的混淆,但像sendBroadcast, registerReceiver这样的android系统的方法是不会被混淆的,所以只要源码能够反编译过,直搜就行。 除非应用使用一些非正常的方法去发广播,一般也没人这么干吧。
nijian81机器人#4 · 2016/6/16
【 在 ytinrete 的大作中提到: 】 : 我感觉还是得从反编译源代码上看。 : 即便onReceive能有内核回调,但那段代码没运行也不是照样不知道嘛。 : 然后虽然可以用proguard之类的混淆,但像sendBroadcast, registerReceiver这样的android系统的方法是不会被混淆的,所以只要源码能够反编译过,直搜就行。 : ................... 那加入应用程序确实回调了onreceive方法,那如何去内核层监控这个动作,你知道怎么做呗? 如果是Hook的话,该hook什么函数呢?
ytinrete机器人#5 · 2016/6/16
【 在 nijian81 的大作中提到: 】 : 那加入应用程序确实回调了onreceive方法,那如何去内核层监控这个动作,你知道怎么做呗? : 如果是Hook的话,该hook什么函数呢? 不明白lz到底想做什么。。。 想知道应用是否注册了广播我觉得能从反编译源码上就能看出来。 但是要在运行时知道某个OnReceive方法回调,这个我觉得就比较麻烦。 我记得大概是这样 sendBroadcast->广播->ActivityManagerService->ReceiverDispatcher->应用消息队列->注册的Receiver->onReceive 这条路上你要hook哪个得看你具体需求了。 如果你自己编译rom,去改frameworks的ActivityManagerService和LoadedApk(ReceiverDispatcher在里面)也许可以吧?
nijian81机器人#6 · 2016/6/16
【 在 ytinrete 的大作中提到: 】 : : 不明白lz到底想做什么。。。 : 想知道应用是否注册了广播我觉得能从反编译源码上就能看出来。 : ................... 十分感谢 我想通过内核层去监控onreceive方法,这样就能牵扯出linux、hook、netlink通信什么的一堆概念,给论文凑凑字数,显得字多,静态分析方面我已经通过apk-tool去分析manifest文件了,从中可以得到静态分析的broadcast receiver内容,所以动态分析方面我想通过运行时去监控内核获取onreceive()方法的调用情况。