别再当工具猴了,五分钟带你剖析哥斯拉源码

剖析哥斯拉源码,两步实现生成unicode编码

首先将哥斯拉反编译,这里我们直接不多做介绍,环境网上也有搭建的

Shell.cryptions.javaAes.Generate.java

这个时哥斯拉java shell生成的核心代码

Suffix是指后缀,指这个

这个选择在那个点了?

Object selectedValue = GOptionPane.showInputDialog(null, "suffix", "selected suffix", 1, null, SUFFIX, null);

这个就是那个代码的选择

我们接下来看哥斯拉shell的生成

这里是读取文件shell+后缀,比如上面的数组中的shell.jsp


template = ApplicationContext.isGodMode() ? template.replace("{globalCode}", functions.stringToUnicode(globalCode)).replace("{code}", functions.stringToUnicode(code)) : template.replace("{globalCode}", globalCode).replace("{code}", code);


读取assets里面的bin文件替换掉shell.jsp里面的

比如javabase64加密器的读取如下两个bin文件的内容


之后替换下图的globalCode和code就是我们大家熟悉的哥斯拉base64 加密器的shell了

既然已经知道了哥斯拉生成shell的流程接下来如何实现一步生成unicode编码的shell了?

template = ApplicationContext.isGodMode() ? template.replace("{globalCode}", functions.stringToUnicode(globalCode)).replace("{code}", functions.stringToUnicode(code)) : template.replace("{globalCode}", globalCode).replace("{code}", code);

还是回到这段代码,这段代码我们观察发现他有stringToUnicode方法,这个方法就是将unicode编码转换成string,这里我们直接把stringToUnicode方法删除就行了

在此基础上我们还可以新增一个选项,既然我们知道了Object selectedValue = GOptionPane.showInputDialog(null, "suffix", "selected suffix", 1, null, SUFFIX, null);

是加密器的选择

我们直接在开头创建一个数组private static final String[] cc =new String[]{"原本的","unicode"};

在处新增一个选择

Object encode = GOptionPane.showInputDialog(null, "编码", "选择编码", 1, null, cc, null);

接下来就是逻辑判断了

if (encode =="unicode"){

template = template.replace("{globalCode}", functions.stringToUnicode(globalCode)).replace("{code}", functions.stringToUnicode(code));

}

这段代码,在选择加密器后,出现一个选项,如果选择unicode编码将bin文件里面的内容unicode编码后再替换,这样就实现了unicode编码加密了


最终效果:

这里可以自己参考unicode编码的方法自己多加几个0

链接效果:

技术交流添加微信:fengzhi-_-

以上文章内容由我恩师:川哥指导

请使用浏览器的分享功能分享到微信等