初步分析安卓版按键精灵

分析版本是 v2.6 与 v3.1 之间的某一版本。(单个dex)

com.cyjh.mobileanjian 福建创意嘉和软件有限公司

com.cyjh.gundam(游戏蜂窝 - 手机游戏辅助软件) 上海戴思软件技术有限公司

cyjh 就是"创意嘉和",也就是说游戏蜂窝使用了按键精灵的技术,或者说是同一路公司。

 

全文纯属不严谨分析,请一笑而过。

libmqm.so 并不是 IBM的那个WebSphere MQ,但也是用作ipc的MQ。也是底层所有功能的入口点。(不能下定论,因为没有ibm的mqm库分析,可肯定的是cyjh将一些非mqm的功能也编译进这个库,根据分析而知这个库内的函数很像ibm的mq,包括有MQLanguage,依赖protobuf。估计被inject的进程会被安放一个客户端,进行mq通讯)。

libtinyCnn.so Convolutional Neural Network卷积网络神经,github上有两个项目,cnnForAndroid依赖opencv,tiny-dnn可选依赖opencl。这就是为什么按键精灵要hook FlingerServer。(是否hook到FlingerServer不清楚,可以肯定的是截屏就是为了识别)。

libsc15,17,19,21.so libscVirtDisplay19,21.so 明眼人都知道这就是screencap相关,也就是与surfaceflinger服务相关,框架从15-21一直在变化,21后一直沿用到现在。上面的libtinyCnn.so足以看出screencap的目的,就是为了识屏。

eflinject 有main入口,上面有log信息,可以帮助分析,而github上有类似的项目linux-inject,还有看雪早几年也就相关代码的贴。inject的套路可以从其它项目的代码。大体就是ptrace附加到进程,构建调用栈做坏事。这里它专门通过被附加进程的link映像找dlxxxx函数。加载另一底层库libsubstrate.so去提供hook的方法。

 

java层有两个主要模块, com.cyjh.elfin 以及 com.cyjh.mqm。主要的函数都经过了混淆,换句话说就是混淆的部分就是分析的目标。

 

分析目的只是想借用一下它的 inject和hook,没想到还有一个cnn,看来不去了解一下 ?nn 相关也不行了,前一段时间某程序员网站一直在卖 deep study 课程。

posted on 2018-03-12 18:19  bbqz007  阅读(3102)  评论(0编辑  收藏  举报