我正在尝试创建一个多态引擎,因此我需要外部C程序printVal.c
的可执行文件中的精确起始地址和结束地址,该程序链接到汇编程序virus.o
,其中主要功能居住。 NASM
和C
是编译器
virus: printVal.c virus.o
$(CC) $(LFLAGS) $^ -o $@
virus.o: virus.asm template.asm.inc
$(ASM) $(AFLAGS) $< -o $@
printVal.c
包含:
#include <stdio.h>
long printVal(long val)
{
printf("0x%lx\n", val);
return 0;
}
我可以看到ida pro中生成的virus
可执行文件,但是我不知道程序在哪里开始和结束,或者如何在virus.asm
中以编程方式获取开始地址和结束地址文件或通过诸如objdump
之类的方法。我注意到的一件事是ida pro中的printVal.c
代码标记为Attributes: bp-based frame
1)我需要在病毒可执行文件中添加printVal.c
的开始和结束地址。
2)链接过程中printVal.c
是否可以对齐16?
很抱歉,如果问题没有使用适当的用语。