【发布时间】:2017-06-14 21:01:45
【问题描述】:
我正在使用 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/Manager;
【问题讨论】:
-
我真的不知道,但你可以查看这个项目,看看是否有类似的东西github.com/khaledblah/dex_tainting
-
您的问题不清楚。你可以像你说的那样替换
v1。可以肯定的是,您可以反编译其中包含Manager mgr=Manager.getInstance(this)的代码,并查看它在smali中的情况,然后将其复制到您的jar类的那个文件中。如果不是您的问题,请添加您要更改的反编译 jar 文件的行(我的意思是它的smali代码而不是java代码)。