替换新方法dexlib2失败

时间:2017-06-14 21:01:45

标签: java android dex smali

我正在使用dexlib2通过一个jar实用程序重写现有的apk。我想用自己的指令改变一条指令。它基本上返回一些对象,我想用另一个返回不同对象的方法替换它。它能够替换方法但是当我查看更新的dex时,我可以看到下一行.local v1,manager:Lblah / KeyguardManager;

我要替换的代码

KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);

应根据以上内容替换的代码:

Manager mgr=Manager.getInstance(this)

我使用了getInstructionRewriter方法来替换它。它取代了方法,但我无法弄清楚如何替换 .local v1,manager:Lblah / KeyguardManager;与.local v1,经理:Lblah /经理;

1 个答案:

答案 0 :(得分:0)

您应该确保apk中存在Lblah/Manager。 如果您只想在一个.smali文件中进行此更改并保留其他文件不变,那将很容易。您必须在此文件中完成KeyguardManager的所有出现,并将其所做的调用替换为Manager类中的相应调用。然后重新打包您的apk并进行测试。

如果您在重新创建apk文件或安装新的apk之后遇到错误,那么您可能会遇到一些不匹配的错误,您必须找出问题所在。在这种情况下,您可以在此处发布错误,我们将看到我们可以做些什么! :)