SO的某个人发布了一个问题,询问他如何“隐藏”一个功能。这是我的回答:
#include <stdio.h>
#include <stdlib.h>
int encrypt(void)
{
char *text="Hello World";
asm("push text");
asm("call printf");
return 0;
}
int main(int argc, char *argv[])
{
volatile unsigned char *i=encrypt;
while(*i!=0x00)
*i++^=0xBE;
return EXIT_SUCCESS;
}
但是,有问题:
encode.c:在函数“main”中: encode.c:13:警告:从不兼容的指针类型初始化 C:\DOCUME~1\Aviral\LOCALS~1\Temp/ccYaOZhn.o:encode.c:(.text+0xf): undefined reference to `text' C:\DOCUME~1\Aviral\LOCALS~1\Temp/ccYaOZhn.o:encode.c:(.text+0x14): undefined reference to `printf' collect2: ld 返回 1 个退出状态
我的第一个问题是为什么内联汇编失败了......正确的方法是什么?另一件事——“ret”或“retn”的代码是 0x00 ,对……我的代码 xor 的东西直到它返回……那为什么它是 SEGFAULTing 呢?