Patch Cobalt Strike 4.0 Stage X64 Bugs
根据出问题的地方Use x64 payload
,也就是stage x64生成的exe无法正常运行,跟到:

boolean bool1 = DialogUtils.bool(this.options, "x64");
如果x64被选择则进入x64生成。

通过代码对比会发现调用的函数都没啥区别。
new ArtifactUtils(this.client).patchArtifact(this.stager, "artifact64.exe", paramString);
跟过来发现两个patchArtifact
的重载方法:


可以发现,整个过程中都没有涉及到传递stage
的架构,基本即可以断定和这中间环节没关系了。
继续跟到最终环节:

细节出来了有没有:
this.stager = ListenerUtils.getListener(this.client, str1).getPayloadStager("x86");
明显官方将stage
固定在了x86的,所以把x64的payload写进来自然就不对了。
验证
将86修改为64:

重新打包运行:


至于完整的代码怎么调整,就自己考虑咯...

CoolCat
也无风雨也无晴