『逆向分析』Live2DViewerEX破解签名验证(分析代码)

Live2DViewerEX 是一个跨平台动态壁纸解决方案,目前支持Windows、Mac和Android

官网下载地址:http://live2d.pavostudio.com/doc/zh-cn/android/

Live2DViewerEX是一款动态壁纸制作工具,我之前试过破解,不过由于防护层次太多的原因,最终以失败告终。

利用MT管理器分析安装包得知:这款软件有签名验证,重签名就会退出APP,注意这里不是闪退,而是退出。

通过反编译APP的清单文件(AndroidManifest.xml)得知该应用的Application路径是:com.pavostudio.live2dviewerex.Live2DApplication直接在dex里找到这个Application,如下图所示:

将Live2DApplication转为Java后得到如下代码:

可以看到一个非常显眼的方法exit() 在程序里exit代表退出的意思,我们看一下里面是怎么处理的:exit()方法里首先调用terminate()方法循环遍历保存在集合里的所有Activity并结束掉(退出Activity),然后又将保存在集合里的所有Activity清空。

我们接着来看,调用terminate()方法后使用Process.killProcess(Process.myPid())方法杀死了当前进程。

最后通过System.exit()方法结束当前正在运行中的Java虚拟机

分析完exit()方法后得知这个方法是一个退出程序的方法,然后再找一下哪个地方调用了exit()方法,搜索代码Lcom/pavostudio/live2dviewerex/Live2DApplication;->exit(I)V得到如下结果:

将UnityMessenger转为Java得到如下代码:

搜索exit得到如下代码:

表示判断不成立时执行exit()方法退出程序,那么我们只要保证这个exit()方法不被执行就能防止软件退出了。

返回smali代码,找到调用exit()方法的位置,如下图所示:

直接将这行代码删除或注释即可,如下图所示:

签名后就能正常运行了!!!

安卓梦雪原创教程,转载请注明出处,谢谢!

QQ2487686673

原文链接:https://www.aidemx.cn/3099.html

© 版权声明
THE END
喜欢就支持以下吧
点赞0赞赏
分享
评论 抢沙发

请登录后发表评论