新人发帖,佬友们多多包涵~
如题,一直用的BurpLoaderKeygen项目(由h3110w0r1d-y大佬开发,现在github页面已经挂了,可以去readme的Telegram频道里下载V1.18版本)。最近打开发现自动更新挂了,作为一个追求用最新版本的强迫症,且最近正在学静态分析,那还说啥了,得修啊~
不咋会java逆向,直接拿jadx-gui打开,全局搜索Failed to check the latest version of Burpsuite,发现CheckNewVersion方法,定位跟进,发现调用GetLatestVersion()方法,继续跟进。
private static String GetLatestVersion() {
try {
if (VersionData == null) {
VersionData = GetHTTPBody("https://portswigger.net/burp/releases/data?pageSize=5");
}
JSONObject data = JSONParse.Parse(VersionData);
if (data == null) {
return "";
}
JSONObject[] Results = data.get("ResultSet").getList("Results");
for (JSONObject Result : Results) {
boolean isProfessional = false;
boolean isEarlyAdopter = false;
for (JSONObject category : Result.getList("categories")) {
if ("Professional".equals(category.String())) {
isProfessional = true;
}
}
if (isProfessional) {
if ("Early Adopter".equals(Result.getList("releaseChannels")[0].String())) {
isEarlyAdopter = true;
}
if (!isEarlyAdopter || "1".equals(readProperty("early"))) {
return Result.getString("version");
}
}
}
return "";
} catch (Exception e) {
return "";
}
}
在GetLatestVersion()方法体里发现访问的url是https://portswigger.net/burp/releases/data?pageSize=5,修改pageSize=5为pageSize=30,手工访问并结合代码确定最新版本的逻辑,成功定位问题:BurpSuite的toC产品名逻辑自2026.4.1开始发生了改变, categories字段取值由原来的"categories": ["Community", "Professional"]变为了"categories": ["Desktop"],导致原版本中isProfessional始终为假。
由此可得修改方案:
- 将
"Professional".equals(category.String())修改为"Desktop".equals(category.String()); - 将
https://portswigger.net/burp/releases/data?pageSize=5修改为https://portswigger.net/burp/releases/data?pageSize=10(5条中不包含Early Adopter通道,改为10条后可支持下载Early Adopter版本); - 将类常量
KeygenForm.DownloadURL由https://portswigger-cdn.net/burp/releases/download?product=pro&type=Jar&version=修改为https://portswigger-cdn.net/burp/releases/download?product=desktop&type=Jar&version=。
至此,修复完成(问了AI,说jadx-ui不支持patch,建议用Recaf,操作和上述差不多,Ctrl+S就自动patch了,不多赘述了~~~)。
p.s. 读了社区准则,发现加网盘链接需要发到指定区,emmm那就暂不提供修复成品了,有需要的佬友可以按照教程自行修复~
1 个帖子 - 1 位参与者