博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
手动加入PE文件数字签名信息及格式具体解释图之下(历史代码,贴出学习)
阅读量:6231 次
发布时间:2019-06-21

本文共 2697 字,大约阅读时间需要 8 分钟。

#include 
HANDLE hWriteFileHandle = NULL ; HANDLE hReadFileHandle = NULL ; HANDLE hFileMapping = NULL ; LPVOID lpVoidFileBaseAddress = NULL ; IMAGE_DOS_HEADER * lpidh_Dos_Header= NULL ; IMAGE_NT_HEADERS * lpinh_NTHeader= NULL ; #define RETURN_FAIL -1#define RETURN_SUCC 1typedef struct __DIGITAL_SIGNATURE_DATA_PARAM{ DWORD dwVirtulAddress; DWORD dwSize;}SIGNATURE_DATA_PARAM,LPSIGNATURE_DATA_PARAM;#include
using namespace std;void UsingFuction(){ cout<<"---------import cer to exe---------------->>"<
>"<
>"<
e_magic!=IMAGE_DOS_SIGNATURE ) return RETURN_FAIL; lpinh_NTHeader=(PIMAGE_NT_HEADERS)((char*)lpVoidFileBaseAddress+lpidh_Dos_Header->e_lfanew) ; if ( lpinh_NTHeader->Signature!=IMAGE_NT_SIGNATURE ) return RETURN_FAIL; // SIGNATURE_DATA_PARAM sdp; sdp.dwVirtulAddress=lpinh_NTHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_SECURITY].VirtualAddress; sdp.dwSize=lpinh_NTHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_SECURITY].Size; //if exist sn if (sdp.dwSize!=0) { // return RETURN_FAIL; } // hReadFileHandle = CreateFile(lpcerFilePath, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL , OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, NULL ) ; if ( hReadFileHandle==INVALID_HANDLE_VALUE ) return RETURN_FAIL; DWORD dwReadedSize=0; DWORD dwWritedSize=0; SetFilePointer(hReadFileHandle,-4,0,FILE_END); ReadFile(hReadFileHandle,&sdp.dwSize,sizeof(DWORD),&dwReadedSize,NULL); PBYTE pbBufferSignture=new byte[sdp.dwSize]; SetFilePointer(hReadFileHandle,0,0,FILE_BEGIN); ReadFile(hReadFileHandle,pbBufferSignture,sdp.dwSize,&dwReadedSize,NULL); PIMAGE_SECTION_HEADER lppsh_SECTION_HEADER=(PIMAGE_SECTION_HEADER)((DWORD)&lpinh_NTHeader->OptionalHeader+lpinh_NTHeader ->FileHeader.SizeOfOptionalHeader); lppsh_SECTION_HEADER=lppsh_SECTION_HEADER+(lpinh_NTHeader->FileHeader.NumberOfSections-1); sdp.dwVirtulAddress=lppsh_SECTION_HEADER->PointerToRawData+lppsh_SECTION_HEADER->SizeOfRawData; SetFilePointer(hWriteFileHandle,sdp.dwVirtulAddress,0,FILE_BEGIN); WriteFile(hWriteFileHandle,pbBufferSignture,sdp.dwSize,&dwWritedSize,NULL); lpinh_NTHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_SECURITY].VirtualAddress=sdp.dwVirtulAddress; lpinh_NTHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_SECURITY].Size=sdp.dwSize; delete pbBufferSignture; UnmapViewOfFile( lpVoidFileBaseAddress) ; CloseHandle( hFileMapping); CloseHandle( hReadFileHandle); CloseHandle(hWriteFileHandle); return RETURN_SUCC; }

转载地址:http://aptna.baihongyu.com/

你可能感兴趣的文章
正则去掉首尾空格以及首尾的
查看>>
CVPR
查看>>
python+selenium自动化测试(四)
查看>>
06Action中的Struts广告
查看>>
BashShell脚本的输入
查看>>
Docker镜像加速器
查看>>
我理解的Java并发基础(一):一些基本概念
查看>>
PHP 策略模式
查看>>
MySQL 设置密码,连接,常用命令
查看>>
基于MaxCompute构建企业用户画像(用户标签的制作)
查看>>
嵌入式系统基础及知识及接口技术总结
查看>>
指针和数组都是C语言的精髓所在,两者有何联系区别?
查看>>
Homebrew简介和基本使用
查看>>
如何将DWG批量转成高清晰JPG图片
查看>>
以太坊web3.js文档翻译及说明
查看>>
list集合练习笔记
查看>>
SqlServer2008 R2数据库主从搭建
查看>>
一个程序猿试用有道云笔记VIP功能体验
查看>>
简单对接快递100
查看>>
Etherscan以太坊API官方文档中文版
查看>>