標題:CobaltStrike二次開發

taibeihacker

Moderator

CS 二次开发​

工具:
IDEA 自帶的java-decompiler.jar

1 CS 反编译​

以MAC 為例,IDEA 自帶的java-decompiler.jar 地址為:
/Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar
因為MANIFEST.MF 中沒有main class 屬性,沒有指定主類,因此不能直接使用java -jar,如果想要執行java 包中具體的類,要使用java -cp 輸入如下命令:
使用方法:
1
java -cp java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true cs_bin/cobaltstrike.jar cs_src
20201221164315.png-water_print

反編譯後,會自動打包成jar 包,右鍵解壓後打開可以看到都是.java 了,使用這個方法會非常方便,就不需要第三方工具,這個反編譯出來的就可以直接放入IntelliJ IDEA 中,可直接實現代碼搜索,相關的交叉引用。
20201221164914.png-water_print

2 CS 二次开发准备工作​

2.1 创建工程​

打開IntelliJ IDEA 選擇Create New Project 一直選擇Next。
20201221165123.png-water_print

創建工程目錄:
20201221165131.png-water_print

創建好後需要先建立兩個文件夾,右擊選擇New Directory 建立一個decompiled_src 文件夾,之後再建立一個lib 文件夾。

2.2 配置依赖关系​

把剛剛反編譯好的CobaltStrike 複製到decompiled_src 中,然後把它解壓出來,可看到一個完整的反編譯後的目錄。
20201221165416.png-water_print

隨後把原始的未編譯的CobaltStrike 放到剛剛新建的lib 中去。
接下來需要對這個項目進行設置,點擊File 中的Project Structure 在Modules 對Dependencies 進行設置。
20201221165747.png-water_print

20201221172053.png-water_print

點擊添加Jar or Directories,添加./lib 下的原始JAR 包,並勾選Export:
20201221172115.png-water_print

2.3 寻找 Main Class​

點擊./lib/META_INF/MANIFEST.MF ,複製Main-Class:
20201221172643.png-water_print

將原始包中MANIFEST.MF 的內容複製到項目中的MANIFEST.MF

2.4 配置 Artifacts​

20201221172836.png-water_print

20201221172843.png-water_print

接下來在decompiled_src 目錄中找到已經反編譯完的aggressor 主類,右擊選擇Refactor ——Copy File 到src 下的相同目錄:
20201221173302.png-water_print

20201221173311.png-water_print

2.5 修改后编译​

點擊Build - Build Artifacts - build

3 IDEA 其它 Tips​

3.1 比对 JAR 包​

在進行bin 文件對比時,自動進行反編譯
命令行形式:
1
2
3
4
5
windows:
/path/to/idea/bin/idea64.exe diff absolute/path/to/file1 absolute/path/to/file2
mac:
/Applications/IntelliJ IDEA.app/Contents/MacOS/idea absolute/path/to/file1 absolute/path/to/file2
20201222093453.png-water_print

在IDEA 中:
選中要比對的兩個文件,Command + D 進行比對
 
返回
上方