我有一个c ++可执行文件,其中嵌入了一个Jar文件作为资源。 Jar中包含一个纯文本文件。我需要使用相同长度的另一行更新明文文件中的单行唯一文本。我认为最好的解决方案是简单地用RandomAccessFile打开Exe并覆盖文本,但是,当我在十六进制编辑器中打开Exe或Jar时,我找不到唯一的文本。我的猜测是文本以某种方式编码。
简而言之:如何更改嵌入在.exe中的jar文件中的纯文本文本?
这是用于覆盖exe / jar中的文本的代码。代码实际上并没有覆盖该行,因为它在找到匹配项之前到达文件末尾。
public static void updateOptions(String line, File target) {
String code = "long unique text";
RandomAccessFile raf = new RandomAccessFile(target, "rwd");
// find the unique text and replace with the new text
for (long l = 0; l < raf.length(); l++) {
raf.seek(l);
boolean equal = true;
for (int c = 0; c < code.length(); c++) {
if (raf.readChar() != code.charAt(c)) {
equal = false;
break;
}
}
if (equal) {
// found the match
raf.seek(l);
raf.write(line.getBytes());
raf.write("\n".getBytes());
break;
} else {
// keep looking
continue;
}
}
raf.close();
}