哥斯拉源码分析(一)生成shell
前言
老大给的新的任务,写一款webshell管理工具。打算分析下冰蝎和哥斯拉源码,借鉴一下思路。
第一篇就先简单分析下webshell的生成过程。shell内容放下一篇。
源码分析
先找到对应ui类,在按钮事件上打个断点
这里需要注意,哥斯拉的点击事件是通过反射动态绑定的,通过按钮名+Click即可找到对应的点击事件。
随后点击生成,即可断下来
最前面就是两个简单的校验,接下来是根据不同配置获取加密器
这里加密器是从cryptionMap里面获取取出来的
回头看看cryptionMap哪来的,有一个扫描的方法,会去解析/shells/cryptions/下的所有带@CryptionAnnotation注解的类,并添加进map
而这个扫描方法是在主程序初始化的时候调用
除此之外还初始化了,插件、payload等等资源
随后回到主线
判断获取到的加密器,有没有@CryptionAnnotation注解,随后初始化加密器返回。
然后调用加密器的generate方法
进来之后获取模板,然后替换传入的pass和key
然后根据选择的后缀,再次获取模板,接着就是判断是否开启上帝模式
shell生成后,就通过JFileChooser选择写出到指定文件
最后完事,整个过程还是比较简单。