将java文件转换为.jar并使其成为.dex

时间:2016-01-18 10:56:57

标签: java android jar dex2jar

我正在尝试编辑.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文件?或者任何想法?

2 个答案:

答案 0 :(得分:0)

如果您有Java文件和提取的资源,您应该能够将它们导入到常规的Android项目中并使用标准构建工具进行构建。请注意,反编译器并不完美,因此生成的Java文件甚至可能无法编译。

如果您认真对待APK修改,我强烈建议您查看smali,这是代码的直接表示,可以直接编译为dex格式。

答案 1 :(得分:0)

从dex2jar和jd-gui获取的java源代码仅供参考,它始终不完整和/或不正确。 此外,如果它完全可靠,那么就不需要开源。

正如@Robert Williams所说,如果你对apk修改很认真,你应该研究一下。 如果您这样做,请参阅以下链接以启动

http://smali.net16.net/

http://androidcracking.blogspot.in/search/label/smali