基本上,我的程序与另一个 jar 文件一起运行。下面是下载功能的代码:
public void saveUrl(final String filename, final String urlString) throws MalformedURLException, IOException {
BufferedInputStream in = null;
FileOutputStream fout = null;
try {
in = new BufferedInputStream(new URL(urlString).openStream());
fout = new FileOutputStream(filename);
final byte data[] = new byte[1024];
int count;
while ((count = in.read(data, 0, 1024)) != -1) {
fout.write(data, 0, count);
}
} catch (Exception e) {
return;
} finally {
if (in != null) {
in.close();
}
if (fout != null) {
fout.close();
}
}
}
并开始新的流程
public void runUpdate() throws IOException{
String folder = fileLocation;
ProcessBuilder p = new ProcessBuilder();
p.command(folder);
p.start();
}
然而,即使有用户提示并必须批准下载,当我在 Eclipse 环境之外对其进行测试时,我的防病毒软件也立即将其识别出来。
它被检测为“trojan.downloader”。我想这和下载功能有关系吗?我并不是真的想打败一个反病毒程序。我并没有试图做任何非法的事情。
也许一些混淆可以解决问题?
编译器生成的字节码与 AV 正在寻找的某些特定代码模式/签名相匹配,这意味着他们过去发现/逆转的某些恶意软件具有与此类似的代码,他们可以可靠地找到它们。
最好的选择是识别并重写触发检测的方法,直到它不再匹配 AV 正在寻找的任何内容,混淆不是一个好主意(但可以完成,如果混淆器确实控制流混淆)来修复这个问题是因为不能保证它会产生与原始字节码足够不同的字节码(一些混淆器,如 ProGuard,甚至不进行控制流混淆)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)