本帖最后由 mmmmar 于 2016-6-11 11:09 编辑
百度的软件都是重新编译打包以后会提示软件是非法版本,然后退出应用
通过对话框跟踪代码之后发现了这个路径:
调用请况是
Lcom/baidu/netdisk/ui/manager/__;->_(Landroid/app/Activity;)V
设置盗版窗口,点确定键会让窗口dimiss.,然后窗口监听事件一旦dimiss就结束进程,然后show方法显示出来
上边的方法由:
Lcom/baidu/netdisk/ui/bh;->_(I)V这个方法调用
bh类实现了CertVerifier.ResultListener接口,_(I)V为接口的回调方法
再由
Lcom/baidu/bdcvf/N;->a(Ljava/lang/Object;Ljava/lang/Object;)V
a方法是一个native方法参数为Navigate(一个activity),和 CertVerifier.ResultListener (验证结果的回调)
最外层是
CertVerifier._()._(this, new bh(this));
在Navigate类的sendHandlerCertVerifierfier()方法中
那么验证应该是在com.baidu.bdcvf.N类的a()方法里边
so的分析不会,但是猜测是在so里对安装包进行验证,失败就调用CertVerifier.ResultListener,成功就对Navigate进行操作,那应该是修改Navigate中的全局变量,或者调用里边的方法。
看了一下Navigate类中的方法和全局变量
有两个方法名字比较特别
private void doWelcome() private void enterMainActivity(boolean paramBoolean)
而且enterMainActivity()由doWelcome()调用
所以尝试
在Navigate类(程序入口Activity类)的onCreate()中
#invoke-direct {p0}, Lcom/baidu/netdisk/ui/Navigate;->sendHandlerCertVerifier()V 这一句注释掉,用来发起验证
在方法末尾添加
invoke-direct {p0}, Lcom/baidu/netdisk/ui/Navigate;->doWelcome()V
回编译成功登陆百度云。
这样的破解感觉并不完美,期待大神可以对so层进行分析
太大了附件不能传,为V7.13.0版本,现在的最新版,可以直接去商店下载
至于怎么找到这些代码调用的没有写出,过程和别的都是一样的,先根据对话框的字符串找到对话框生成的代码,然后通过AndroidKill的查看方法调用往上层查找。
有一点要说的是,比如在通过字符串定位对话框的时候可能会出现好几个地方,而且代码都差不多,这时候需要挨个改一下试试,看到底是不是打开软件时调用的方法。
|