我需要一些帮助人员,我正在创建一些虚拟机,并且正在使用标记定义要保护的起点和要保护的终点。
例如,当我尝试执行此操作时,出现错误: 错误LNK2001:无法解析的外部符号
#pragma once
#pragma comment(lib, "../Release/libphant.lib")
extern "C" {
void __stdcall BeginProtect(unsigned int);
void __stdcall EndProtect(unsigned int);
}
//BeginProtect(0xb1f12057)
//EndProtect(0x5720f1b1);
#define BeginProtect __asm {\
__asm push 0xb1f12057\
__asm call BeginProtect\
}
#define EndProtect __asm {\
__asm push 0x5720f1b1\
__asm call EndProtect\
}
所以我得到: 未解析的外部符号“ _BeginProtect @ 4” 未解析的外部符号“ _EndProtect @ 4”
我在做什么? 我正在使用asm lib文件(如您所见) 我正在主文件中使用标记BeginProtect和EndProtect。
谢谢!
已更新: 部分来自asm
public BeginProtect as "_BeginProtect@4"
public EndProtect as "_EndProtect@4"
我要构建的主文件(仅作为示例):
#include "stdafx.h"
#include "phant.h"
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
BeginProtect;
using std::cout;
using std::endl;
cout << "Hello, World!" << endl;
EndProtect;
return 0;
}
更新: 感谢大伙们!我解决了一个问题。都是关于.lib文件的。它有点损坏,我只是用FASM重新编译了它,并用VS构建了它。现在就可以了!