求给pe文件添加数字签字的证书做法
PIMAGE_NT_HEADERS pImageNtHeaders ;
pImageNtHeaders->OptionalHeader.DataDirectory[4].Size=dwSingSize; //数字签名的大小
pImageNtHeaders->OptionalHeader.DataDirectory[4].VirtualAddress=dwSingOffe; //数字签名的位置
在第一个dome中看到,修改VirtualAddress和Size的值来添加给pe文件添加数字签字,但是我想知道的那个添加进去的证书是怎样做出来的,而dome中的证书是资源来的,所以不知道怎样搞出来的。
最好有dome,编码语言最好是C++或者C#,我尝试过下面代码导入SignTool工具生成的证书,结果还是不行,求高手解释,谢谢!
HANDLE hFile;
hFile = CreateFile("C:\\SIGN",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);//创建文件
if(hFile == NULL) return;
FILE * pFile ;
fopen_s(&pFile,"D:\\SignTool\\SignTool\\test.cer", "rb");
if(NULL == pFile)
{
return;
}
fseek(pFile,0, SEEK_END);
int length = ftell(pFile);
fseek(pFile,0, SEEK_SET);
unsigned char *pInPut = (unsigned char *)malloc(length);
fread(pInPut, 1, length, pFile);
WriteFile(hFile,(LPCVOID)pInPut,length,&dwWritten,NULL);
CloseHandle(hFile);