以下为我修改后的BurpLoader,其中的恶意代码我已经去除,并将修改前的原值输出,大家可以在添加burpsuite jar包后编译运行这段代码
package stratburp;import burp.StartBurp; import java.lang.reflect.Field; import java.util.prefs.Preferences; import javax.swing.JOptionPane; public class startburp { private static final String[] clzzData = { "burp.ecc", "burp.voc", "burp.jfc", "burp.gtc", "burp.zi", "burp.q4c", "burp.pid", "burp.y0b" }; private static final String[] fieldData = { "b", "b", "c", "c", "c", "b", "c", "c" }; private static final String errortip = "This program can only run with burpsuite_pro_v1.5.01.jar"; private static final String[] keys = { "license1", "uG4NTkffOhFN/on7RT1nbw==" }; public static void main(String[] args) { try { for (int i = 0; i < clzzData.length; i++) { Class clzz = Class.forName(clzzData[i]); Field field = clzz.getDeclaredField(fieldData[i]); field.setAccessible(true); //field.set(null, strData[i]); System.out.println(field.get(null)); } Preferences prefs = Preferences.userNodeForPackage(StartBurp.class); for (int i = 0; i < keys.length; i++) { String v = prefs.get(keys[i], null); System.out.println(prefs.get(keys[i], null)); } StartBurp.main(args); } catch (Exception e) { JOptionPane.showMessageDialog(null, "This program can only run with burpsuite_pro_v1.5.01.jar", "Notice",0); } } }
其效果如截图所示
其中前8行输出为之前BurpLoader恶意修改的目标原值(对我的计算机而言),同一台设备运行多少遍都是不变的,后面的key由于我之前运行过BurpLoader因此是恶意修改后的值(但是由于前8行没有修改因此不能通过Burpsuite验证),可见BurpLoader其实是使用了同一个密钥来注册所有不同计算机的,只不过修改并固定了某些参与密钥计算的环境变量而已,这大概就是Burpsuite破解的主要思路了,至于最初能用的license是怎么计算出来的,我们以后再研究