我自己写的小工具
起因
找不到工作,太闲了,打算整点活。刚好遇到祥云杯的cc4打内存马。大家都知道ysoserial,但是我又懒得改它的代码(看不懂)。所以我想直接整一个一键生成反序列化打内存马的工具,下次再出这种烂题直接一把梭。
准备工作
开始想直接类似yso一样用终端的arg来生成。但是我对这方面不是很会,所以就打算整一手GUI界面,简单易懂!
然后一开始打算用swing,毕竟学校教过。果然学校不会教你啥好东西,网上一搜全部都说过时了,10年前的老古董?行,那我整新的,找的JavaFX,想都没想直接开学。
历程
第一天就差不多整好了,因为都是之前复现过的链子,还有之前整理的内存马,把GUI学会马上就速成了。结果卡在最后一步了。
没想到学最久的还得是打包。。。JavaFX太新了!Java8版本找不到,只能用最旧的Java11版本。整合maven之后尝试打包,用了各种插件,能打成jar包的,不支持Java11的jfx,能打成可执行文件的不支持Java8。折磨了半天,最终妥协了,直接用回idea的打包设定。
设置好主类后在主界面的顶栏
Build
选项那里的Build Artifacts
直接打包即可。结果jar包还是不能运行。需要下载jfx的SDK才行。
https://gluonhq.com/products/javafx/
由于我用的jfx11,官网上找半天,才找到过时的jfx11:
然后运行命令
java -jar --module-path path/to/javafx-sdk-11/lib --add-modules javafx.controls,javafx.fxml JavaFxApplication.jar
终于能跑了。
然后就打算开源到GitHub。由于几乎是第一次上传项目,又整了一两小时,才把项目上传上去。地址:https://github.com/maxzed6/Java-Deserialize-MemShell
虽然我没有写注释的习惯,但是其实这个项目挺好扩展的,就把添加链子的方法写在GitHub上了,其实内存马的类型也能加,可能麻烦些,个人感觉这些内存马应该够用了。之后再把内存马的控制器源码放上面吧。
最后
整了两天整完了,没想到那么快。之后又闲了,看看还能不能整些活XD。
正常用jdk11+创建javafx项目
然后操作
第一步:file->project structure->project
修改Project SDK为 1.8
第二步:file->project structure->Modules->sources
修改Language level为 8-Lambdas,type annotations etc.
第三步:setting -> preferences->build,Excution,Deployment->compiler->java compiler
修改Target bytecode version为 8
最后将src/main/java/module-info.java的代码全部注释,就可以正常用使用idea的jdk1.8去运行javafx了
idea运行没问题,就是打包出来还需要下载Javafx的依赖就很捞