1.准备工作
帮一个朋友看一个软件的检测,说对软件的Application里面也加入了一些调试打印的方法,但是一直都走不了,软件就直接停止运行。
这是他的截图:
推辞不过,就打开电脑看一下了。
2.开始分析
打开先看AndroidManifest.xml配置清单文件,去了解我们需要知道的信息。
软件包名,是否有Application字段,启动Activity都是我们需要了解的内容。
结合朋友说的测试方法,以及看到软件的Application字段,我们先打开看一下这个类里面的流程。Application类是优先于MainActivity的,去做一些初始化的操作。
我们打开Application类:
构造方法这里没什么内容,我们继续往下看:
结合朋友给我发的那张图他自己加入的打印方法,可以发现第一个方法vr.h(this)上面他没加打印,所以我们打开看一下这个方法.
看到这个,既有Signature的获取方法,又有killProcess方法,我们就可以直接确定这里是验证的地方了。
好吧,都不用调试就直接判断了,对朋友的分析也是佩服了,就差这一行代码舍不得看,把下面的几个方法都加入调试信息了。
3.测试
我们直接将那个h(context)方法返回void.
可以看到直接测试通过。
4.思考
虽然写这个判断需要很多行代码,但是过验证的方法,最终是都可以归结到一个判断上面的。
然后我们这里补充一下在java层的常用方法:
这个是从网上摘抄的: