逆向 | 新设计了一种花指令

逆向 | 新设计了一种花指令

混淆效果比以前使用的花指令要好很多。
设计思路和shellcode类似。

image

#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;
} 
posted @ 2023-02-01 11:11  Mz1  阅读(93)  评论(1编辑  收藏  举报