今天得到了一个游戏样本进行分析,过程中遇到了一些困难,出于个人爱好对它进行了详细的分析和破解。游戏大致就是对游戏文件进行加密,对关键类进行动态释放。第一次分析加密逻辑是放到了加密的dex中,所以需要下面解密dex文件然后在进行后续操作。
首先游戏重签名后是进入不了游戏的。所以需要先分析释放dex,去除签名验证,下面开始分析:进入主activity的oncreate方法
通过自己手动加log发现第一行代码调用执行就卡住了。我们进入方法内部看一下
第一个调用的a方法:
结合这两个方法可以看出来,就是获取classes.dex,然后打开assets里面的某个文件,读取写入到classes里面。这里的文件名就是str,下面开始分析这个文件名是什么,回到oncreate中:
这里可以看出对字符串进行了加密。
通过查看m.a方法可以看出对进行解密,这里我们直接把游戏的dex转成jar导入eclipse中。执行一下这个方法。
可以看到返回结果是dx。在游戏的assets中也确实有这个文件。我们打开这个文件看一下
可以看出来是个dex文件,反编译之后:这里就明白了,是oncreate跳转到第一个a方法,然后再执行第二个a方法,第二个就是单纯的释放类。
然后回到第一个跳转的a方法:
这里有一个反射执行方法的操作,按照刚刚方法打打印出这个加密的文字(也就是类名)是什么
这里就和我们刚刚解出来的dex对上了。我们看一下调用的vs方法: