// 注意下图PE文件格式具体解释图中的

// IMAGE_NT_HEADERS------->OptionalHeader------>DataDirectory[IMAGE_DIRECTORY_ENTRY_SECURITY]字段

#include <windows.h>
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 <iostream>
using namespace std;void UsingFuction()
{cout<<"----------export cer from exe ------------>>"<<endl;cout<<"--EX:srcpath[*.exe] despath [*.cer]------->>"<<endl;cout<<"------------------------------------------>>"<<endl;
}
int main( int argc,char **argv)
{ switch (argc){case 1:cout<<"help using usage -h"<<endl;break;case 2:{if (strcmp(argv[1],"-h")){UsingFuction();return RETURN_FAIL;}}break;case 3:cout<<"all argument is ok"<<endl;break;default:cout<<"argument is error"<<endl;break;}if (argc!=3){UsingFuction();return RETURN_FAIL;}TCHAR* lpcerFilePath=argv[2];TCHAR* lpPeFilePath=argv[1];hReadFileHandle = CreateFile(lpPeFilePath, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL , OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, NULL ) ; if ( hReadFileHandle==INVALID_HANDLE_VALUE ) return RETURN_FAIL; hFileMapping = CreateFileMapping( hReadFileHandle, NULL , PAGE_READONLY, 0, 0, NULL ) ; if ( ! hFileMapping ) { CloseHandle( hReadFileHandle) ; return RETURN_FAIL; } lpVoidFileBaseAddress = MapViewOfFile( hFileMapping, FILE_MAP_READ, 0, 0, 0) ; if ( ! lpVoidFileBaseAddress ) { CloseHandle( hFileMapping) ; CloseHandle( hReadFileHandle) ; return RETURN_FAIL; } lpidh_Dos_Header = (IMAGE_DOS_HEADER* ) lpVoidFileBaseAddress; if ( lpidh_Dos_Header->e_magic!=IMAGE_DOS_SIGNATURE ) return RETURN_FAIL; lpinh_NTHeader=(IMAGE_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;PBYTE pbBufferSignture=new byte[sdp.dwSize];DWORD dwReadedSize=0;SetFilePointer(hReadFileHandle,sdp.dwVirtulAddress,0,FILE_BEGIN);ReadFile(hReadFileHandle,pbBufferSignture,sdp.dwSize,&dwReadedSize,NULL);//hWriteFileHandle = CreateFile(lpcerFilePath, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL ,CREATE_ALWAYS, FILE_ATTRIBUTE_ARCHIVE, NULL ) ; if ( hWriteFileHandle==INVALID_HANDLE_VALUE ) return RETURN_FAIL; DWORD dwWritedSize=0;WriteFile(hWriteFileHandle,pbBufferSignture,dwReadedSize,&dwWritedSize,NULL);WriteFile(hWriteFileHandle,&sdp.dwSize,sizeof(sdp.dwSize),&dwWritedSize,NULL);delete pbBufferSignture;UnmapViewOfFile( lpVoidFileBaseAddress) ; CloseHandle( hFileMapping); CloseHandle( hReadFileHandle); CloseHandle(hWriteFileHandle);return RETURN_SUCC;
}

PE文件格式具体解释图

转载于:https://www.cnblogs.com/mengfanrong/p/5349251.html

PE文件数字签名信息读取存储及格式具体解释图之上(历史代码,贴出学习)相关推荐

  1. 对Windows 平台下PE文件数字签名的一些研究

    Windows平台上PE文件的数字签名有两个作用:确保文件来自指定的发布者和文件被签名后没有被修改过.因此有些软件用数字签名来验证文件是否来自家厂商以及文件的完整性,安全软件也经常通过验证文件是否有数 ...

  2. PE文件数字签名格式

    摘要 Authenticode®是一种数字签名格式,它是用来验证二进制软件的来源和完整性.Authenticode是基于公开密匙加密标准(PKCS) #7 来签名数据,并使用X.509证书来绑定经过数 ...

  3. pe文件签名信息检测技术

    [摘要] 签名信息中包含有很多有用的信息,可以辅助对二进制软件进行安全检测.读者可以从本博客中了解到pe文件中签名信息是如何组织的,如何用python代码从pe文件中获取内嵌的签名信息等知识. **什 ...

  4. matlab编程读取导航文件文件,基于Matlab读取标准RINEX格式的GPS星历数据

    [实例简介] 基于Matlab读取标准RINEX格式的GPS星历数据,采用Matlab直接读取Rinex文件 张妮,等基于 Matlab读取标准 RINEX格式的GPS星历数据 navdata(i). ...

  5. android中读取svg文件,Android如何加载SVG格式的矢量图

    为何要加载SVG图片 相对于.JPG和.PNG甚至.webp的图片来说,SVG的图片有两个优点,第一:省空间,APK瘦身有一个方面就是从图片瘦身,使用SVG图片可以大量减轻程序的大小.第二:省时间,切 ...

  6. Python爬虫数据存储不同格式在excel表中通用代码

    爬虫数据存储在excel表通用代码 一..xls格式 import xlwt #创建workbook对象 workbook = xlwt.Workbook(encoding='utf8') #添加sh ...

  7. [网络安全自学篇] 六十一.PE文件逆向之数字签名详细解析及Signcode、PEView、010Editor、Asn1View等工具用法(二)

    本系列虽然叫"网络安全自学篇",但由于系统安全.软件安全与网络安全息息相关,作者同样会分享一些系统安全案例及基础工具用法,也是记录自己的成长史,希望大家喜欢,一起进步.前文 &qu ...

  8. grib1文件解析 python_python读取grib格式数据

    python 读取grib/grib2格式数据 一般利用NCL(NCAR Command Language)读取.利用Python语言的pygrib库也可以读取grib/grib2格式数据 grib/ ...

  9. [系统安全] 四十一.APT系列(6)Python解析PE文件并获取时间戳判断来源区域

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

最新文章

  1. [导入]Java线程的深入探讨
  2. 电气专业的你,2022届求职进展如何?
  3. 水印第三版 ~ 变态水印(这次用Magick.NET来实现,附需求分析和源码)
  4. python本地读csv文件_python读写csv文件方法详细总结
  5. 运动检测(前景检测)之(二)混合高斯模型GMM
  6. 【Linux】36.ubuntu删除vscode的缓存,可清理出几十G空间
  7. windows10小鹤双拼注册表
  8. Android基础——四大组件之Activity
  9. 新一代大数据处理引擎 Apache Flink
  10. react 项目实战(二)创建 用户添加 页面 及 fetch请求 json-server db.json -w -p 8000...
  11. 太傻了!下次二面再回答不好“秒杀系统“设计原理,我就捶死自己...
  12. 使用jQuery美化英雄联盟
  13. 大数据Hive数据查询语言DQL
  14. LiDARTag:一种基于点云的实时估计基准标记物位姿的系统
  15. BZOJ3838 : [Pa2013]Raper
  16. 海航金鹿公务机队规模稳居亚太之首;奥森多生物科技创新中心在沪揭牌 | 美通企业日报...
  17. word文档找不到smartart_教大家word中smartart在哪找
  18. 微软承认部分 Win10 安装 12 月更新后出现 0xc000021a 蓝屏错误
  19. 多彩绚丽渐变Mac动态壁纸
  20. vue 组件名 下划线_团队Vue组件规范

热门文章

  1. 一个项目涉及到的50个Sql语句(整理版)
  2. 【AWS】AWS云计算赋能数字化转型专题研讨会圆满落幕
  3. bash 中的变量可以这么用
  4. 数据库的内连接和外连接区别?
  5. jquery easyUI分页dataGrid-Json
  6. .net中用css控制GridView样式
  7. jBPM4.4:分配任务的几种方式
  8. vue 递归组件多级_Vue递归组件实现树形结构菜单
  9. 设计模式复习-解释器模式
  10. POJ2308连连看dfs+bfs+优化