其实 3.14 已经出了有一段时间了不过最近一直没关心这个,然后就在前几天 @kokxxoo 兄弟给了我一个正式版让我改一下顺便在汉化一下然后就有了这个。感谢 @kokxxoo 大表哥的分享 14 相较于 13 确实发生了一些变化如进程列表和文件改为左侧树状浏览然后是增加了一个阻止非微软 dll 加载的功能,还有一些其他的更新就自己去官网看吧这个是 5 月 4 日作者紧急修复 bug 的版本因为 5 月 2 日那个更新有严重的 bug 具体是什么 bug 官网有说明。 其实在搞这个 3.14 的中间也发生的很多有意思的事情 q(≧▽≦q)。顺便也和 ssooking 大表哥互相交流了一下








补充:
请自行编译后替换 BeaconData.class 文件。 exit 的 bug 找到了是作者留的一个暗装之前一直没注意到今天圈子里的 Lsmod 大佬写了一下才发现真是疏忽了感谢 Lsmod 大佬package beacon;
import beacon.CommandBuilder;
import common.CommonUtils;
import java.io.ByteArrayOutputStream;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class BeaconData {
public static final int MODE_HTTP = 0;
public static final int MODE_DNS = 1;
public static final int MODE_DNS_TXT = 2;
public static final int MODE_DNS6 = 3;
protected Map queues = new HashMap();
protected Map modes = new HashMap();
protected Set tasked = new HashSet();
protected boolean shouldPad = false;
protected long when = 0L;
protected List getQueue(String var1) {
synchronized(this) {
if(this.queues.containsKey(var1)) {
return (List)this.queues.get(var1);
} else {
LinkedList var3 = new LinkedList();
this.queues.put(var1, var3);
return var3;
}
}
}
public boolean isNewSession(String var1) {
synchronized(this) {
return !this.tasked.contains(var1);
}
}
public void virgin(String var1) {
synchronized(this) {
this.tasked.remove(var1);
}
}
public void shouldPad(boolean var1) {
this.shouldPad = false;
this.when = System.currentTimeMillis() + 1800000L;
}
public void task(String var1, byte[] var2) {
synchronized(this) {
List var4 = this.getQueue(var1);
if(this.shouldPad && System.currentTimeMillis() > this.when) {
CommandBuilder var5 = new CommandBuilder();
var5.setCommand(3);
var5.addString(var2);
var4.add(var5.build());
} else {
var4.add(var2);
}
this.tasked.add(var1);
}
}
public void clear(String var1) {
synchronized(this) {
List var3 = this.getQueue(var1);
var3.clear();
this.tasked.add(var1);
}
}
public int getMode(String var1) {
synchronized(this) {
String var3 = (String)this.modes.get(var1);
return "dns-txt".equals(var3)?2:("dns6".equals(var3)?3:("dns".equals(var3)?1:0));
}
}
public void mode(String var1, String var2) {
synchronized(this) {
this.modes.put(var1, var2);
}
}
public boolean hasTask(String var1) {
synchronized(this) {
List var3 = this.getQueue(var1);
return var3.size() > 0;
}
}
public byte[] dump(String var1, int var2) {
synchronized(this) {
int var4 = 0;
List var5 = this.getQueue(var1);
if(var5.size() == 0) {
return new byte[0];
} else {
ByteArrayOutputStream var6 = new ByteArrayOutputStream(8192);
Iterator var7 = var5.iterator();
while(var7.hasNext()) {
byte[] var8 = (byte[])((byte[])var7.next());
if(var4 + var8.length < var2) {
var6.write(var8, 0, var8.length);
var7.remove();
var4 += var8.length;
} else {
if(var8.length < var2) {
CommonUtils.print_warn("Chunking tasks for " + var1 + "! " + var8.length + " + " + var4 + " past threshold. " + var5.size() + " task(s) on hold until next checkin.");
break;
}
CommonUtils.print_error("Woah! Task " + var8.length + " for " + var1 + " is beyond our limit. Dropping it");
var7.remove();
}
}
return var6.toByteArray();
}
}
}
}