我正在尝试编辑.apk文件来更改某些变量或在其中的java文件中添加一些函数。
所以,首先,我使用apktool来反编译.apk。 然后,我使用dex2jar将classes.dex创建到classes.jar并使用jd-gui来读取文件。如您所知,.jar中的文件都是.class文件,这些文件是二进制文件,无法读取,所以我尝试使用
将.jar转换为java文件<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<div class="control-group">
<span class="aspNetDisabled">
<input id="ctl00_ctl00_main_main_settlementFrequency_chkConfirmed" type="checkbox" name="ctl00$ctl00$main$main$settlementFrequency$chkConfirmed" disabled="disabled">
</span>
<label for="ctl00_ctl00_main_main_settlementFrequency_chkConfirmed">
Settlement frequency confirmed
</label>
<span id="ctl00_ctl00_main_main_settlementFrequency_ctl14" class="validator alert alert-danger">
Confirm settlement frequency.
</span>
</div>
在jd-gui中,它给了我可读和可编辑的java文件,这对我有好处。然后我编辑了java文件并使用
将它们变成.jar文件'Save all sources'
然而问题是,
带有新.jar文件的jar2dex命令,编辑过的文件总是失败,原因是“没有指定类文件”。
我认为这是因为我是从.java文件而不是.class文件中创建的。所以我该怎么做?我是否必须使用javac命令将所有java文件转换为.class文件?或者任何想法?
答案 0 :(得分:0)
如果您有Java文件和提取的资源,您应该能够将它们导入到常规的Android项目中并使用标准构建工具进行构建。请注意,反编译器并不完美,因此生成的Java文件甚至可能无法编译。
如果您认真对待APK修改,我强烈建议您查看smali,这是代码的直接表示,可以直接编译为dex格式。
答案 1 :(得分:0)
从dex2jar和jd-gui获取的java源代码仅供参考,它始终不完整和/或不正确。 此外,如果它完全可靠,那么就不需要开源。
正如@Robert Williams所说,如果你对apk修改很认真,你应该研究一下。 如果您这样做,请参阅以下链接以启动