Patch Cobalt Strike 4.0 Stage X64 Bugs

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

-w1532
boolean bool1 = DialogUtils.bool(this.options, "x64");

如果x64被选择则进入x64生成。

-w1037

通过代码对比会发现调用的函数都没啥区别。

new ArtifactUtils(this.client).patchArtifact(this.stager, "artifact64.exe", paramString);

跟过来发现两个patchArtifact的重载方法:

-w827
-w886

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

继续跟到最终环节:

-w946

细节出来了有没有:

this.stager = ListenerUtils.getListener(this.client, str1).getPayloadStager("x86");

明显官方将stage固定在了x86的,所以把x64的payload写进来自然就不对了。

验证

将86修改为64:

-w843

重新打包运行:

-w399
-w845

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

也无风雨也无晴