最近准备从x86上转移到linux上, 于是乎弄了个手游来玩, 正巧朋友推荐了一个修改软件,类似于八门神器、CE,用于搜索修改游戏数据,于是抱着好奇的心理初步研究了下该软件的原理: 研究了下软件, 搜索,修改,暂停游戏,实现BT都有,比较齐全,猜测应该核心功能是基于SO上实现的。 打开AndroidKiller.exe,拖进APK,很顺利的反编译完成 在目录结构并没有发现so相关的东西, 搜索LoadLibrary也一无所获,看下进程信息 我擦,竟然没有进程信息。。。纠结了。先通过smail看它现有的信息吧。 搜索它的catch_.me_.if_.you_.can_,也依然一无所获, 那么搜索它的版本号呢, 发现了: 这里定义的版本号,继续往下浏览, 发现: 这里的代码,通过插入输出信息,可以知道,它这里获取了包名,接着原名被替换掉了,至此原来不是没有找到,而是被替换了,所以按照原来的去找就肯定找不到了。 此举做法,应该是防止壳或者检测类软件检测它的进程信息。 接着继续看它的启动信息, 因为该软件能kill掉其他进程,所以它可能是守护进程。 在这里输出exec的参数,可以发现一个关键性的点: 好家伙果然有so 文件 ,那么目录中没有,这里又加载了,说明它的so是通过下载流dump出来的。 继续往下看,发现: 到这里OK,可以在该路径下把so文件给pull出来。 分析so部分 原来它用了ptrace该函数实现注入游戏进程。 通过这两个部分,同样可以对它实行一些检测,比如检测进程在被注入的情况下,进程状态, 检测TracerPid的值, 被注入调试,该值不为0。 菜鸟第一次挑战apk,结果整得怀疑人生,终于知道android apk加密的重要性了。apk如果不做防护,一个菜鸟花一点时间就能破解它,找个在线加密工具做防护还是很必要的.
联系我时,请说是在 挂海论坛 上看到的,谢谢! |