逆向 | 新设计了一种花指令
逆向 | 新设计了一种花指令
混淆效果比以前使用的花指令要好很多。
设计思路和shellcode类似。
#include <stdio.h>
// author Mz1
int main(){
__asm__(".byte 0x55;"); // push rbp 保存栈
__asm__(".byte 0xe8,0,0,0,0;"); // call $5;
__asm__(".byte 0x5d;"); // pop rbp -> 获取rip的值
__asm__(".byte 0x48,0x83,0xc5,0x08;"); // add rbp, 8
__asm__(".byte 0x55;"); // push rbp -> 相当于将call的返回值修改到下面去
__asm__("ret;");
__asm__(".byte 0xe8;"); // 这是混淆指令不执行
__asm__(".byte 0x5d;"); // pop rbp 还原栈
printf("whoami \n");
return 0;
}
或者设计为宏定义:
#include <stdio.h>
#ifndef MZ_FLOWER
#define MZ_FLOWER __asm__(".byte 0x55;"); \
__asm__(".byte 0xe8,0,0,0,0;"); \
__asm__(".byte 0x5d;"); \
__asm__(".byte 0x48,0x83,0xc5,0x08;"); \
__asm__(".byte 0x55;"); \
__asm__("ret;"); \
__asm__(".byte 0xe8;"); \
__asm__(".byte 0x5d;");
#endif
// author Mz1
int main(){
MZ_FLOWER;
printf("whoami \n");
return 0;
}
本文来自博客园,作者:Mz1,转载请注明原文链接:https://www.cnblogs.com/Mz1-rc/p/17081957.html
如果有问题可以在下方评论或者email:mzi_mzi@163.com