CobaltStrike UPX脱壳加壳
UPX加壳:
使用x64dbg脱壳之开源壳upx - 知乎 (zhihu.com)
压缩后FILE size明显变小
查壳,发现已经加上了壳、
过了一些查杀,
自动脱壳方法(一般不灵)
1 | upx -d /path/to/file |
手动脱壳
用ada打开,发现加壳后发生了很大变化
找到OPE(原始程序入口地址)
设置硬件断点(不会修改原有代码)hardwware
c++程序的OEP特征
1 | 00408027 >/$ 55 push ebp |
有点奇怪,dump出来是kernel的dll
单步跟踪法
平衡堆栈法
一般可以通过判断ESP,在pop ESP后一般会出现程序的入口点。
ESP | 堆栈指针(Stack Point)寄存器 | 只做堆栈的栈顶指针; 不能用于算术运算与数据传 |
---|
汇编指令复习
指令 | 名称 | 示例 | 备注 |
---|---|---|---|
MOV | 传送指令 | MOV dest, src | 将数据从src移动到dest |
PUSH | 进栈指令 | PUSH src | 把源操作数src压入堆栈 |
POP | 出栈指令 | POP desc | 从栈顶弹出字数据到dest |
指令 | 名称 | 示例 | 备注 |
---|---|---|---|
JNE | 条件转移指令 | zf =0 时跳转到标号为label的位置 | |
JMP | 无条件转移指令 | JMP lable | 无条件地转移到标号为label的位置 |
CALL | 过程调用指令 | CALL labal | 直接调用label |
JE | 条件转移指令 | JE lable | zf =1 时跳转到标号为label的位置 |
内存镜像法
alt+m 看内存信息 UPX2处F2下断点,F9运行
出现下图所示,根据OPE特征判断jmp artifact。。。处为程序入口点
使用Scylla插件脱壳
成功
秒到ope
直接CTRL+F,输入popad //在这里不行
]]
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 infinite!