剖析哥斯拉源码,两步实现生成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-_-
以上文章内容由我恩师:川哥指导
原文始发于微信公众号(老鑫安全):别再当工具猴了,五分钟带你剖析哥斯拉源码
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论