分析版本是 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 課程。