如果程序的算法太复杂,我们搞不定,或者分析时间太长, 我们可以尝试将程序加载到注册机程序的内存空间直接通过地址直接调用管算法call, 前提call中没有一些需要提前初始的变量,把需要加载的exe的重定位去掉这样就不需要修复需要加载的exe的重定位了。
#include<Windows.h>
#include<iostream>
/*
如果程序的算法太复杂,我们搞不定,或者分析时间太长,
我们可以尝试将程序加载到注册机程序的内存空间直接通过地址直接调用管算法call,
前提call中没有一些需要提前初始的变量
把需要加载的exe的重定位去掉这样就不需要修复需要加载的exe的重定位了
*/
// 释放文件内容
void freeFileData(_In_ char* pFileData) {
delete[] pFileData;
}
//获取DOS头
IMAGE_DOS_HEADER* getDosHeader(_In_ char* pFileData) {
return (IMAGE_DOS_HEADER*)pFileData;
}
// 获取NT头
IMAGE_NT_HEADERS* getNtHeader(_In_ char* pFileData) {
return (IMAGE_NT_HEADERS*)(getDosHeader(pFileData)->e_lfanew + (SIZE_T)pFileData);
}
//获取文件头
IMAGE_FILE_HEADER* getFileHeader(_In_ char* pFileData) {
return &getN