PE解析器 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:

Slides:



Advertisements
Similar presentations
社区矫正与和谐社区的建设 —— 以社会工作为切入点 珠勒花 内蒙古农业大学 2014 年 6 月 27 日.
Advertisements

青岛国金财富投资管理股份有限公司 (青岛蓝海股权交易中心推荐机构会员、交易商会员,会员号:1063)
Excel VBA视频教程 课程介绍-什么是VBA
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
植物之繁殖方法.
北京中兴荣投资顾问有限公司简介.
Computer Graphics 计算机图形学基础 张 赐 Mail: CSDN博客地址:
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
走进编程 程序的顺序结构(二).
本节内容 模拟线程切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
本节内容 字符编码 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C语言程序设计 主讲教师:陆幼利.
_01Win32简介与IDE简介 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
本节内容 消息的分发 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
_18静态库与动态链接库 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
第二章 Java基本语法 讲师:复凡.
_04Combox控件和ListBox控件的使用
_05MessageMap的原理 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
项目二:HTML语言基础.
MFC控件 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
Select模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
编译OpenSSL 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
_08文件的基本操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
本节内容 类成员的访问控制 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 内存复制指令 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 Private Memory 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
<编程达人入门课程> 本节内容 计算机编程语言 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
本节内容 结构体 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 线性地址的管理 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
_13简单的GDI绘图操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 模块隐藏 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
_17注册表的基本操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
第二章 Java基本语法 讲师:复凡.
3.1私有内存的分配.
本节内容 消息的接收 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 重定位表 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
<编程达人入门课程> 本节内容 学习路线 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
_03宽字符与Unicode编程 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
第二章 Java基本语法 讲师:复凡.
本节内容 结构体.
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
本节内容 指针类型的使用 视频提供:昆山爱达人信息技术有限公司.
本节内容 通用寄存器 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
_08文件操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
WSAAsyncSelect 模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang
MFC控件 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
_07多连接之select模型 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
阻塞式模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
MFC的六大核心 机制 命令传递 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang
_01自己实现简单的消息处理框架模型 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司
Windows开机密码的获取 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
语音控制游戏的开发 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
本节内容 导出表 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 如何调试驱动程序? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
编程达人-- 从零开始学UI系列教程 第九节、布尔运算 先行者 YC.
学习数据结构的意义 (C语言版) 《数据结构》在线开放课程 主讲人:李刚
多功能音乐播放器的开发 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
<编程达人入门课程> 本节内容 有符号数与无符号数 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
实验六、COM类型病毒分析实验 实验开发教师: 刘乃琦 谌黔燕.
本节内容 this指针 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Presentation transcript:

PE解析器 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:www.bcdaren.com 联系QQ:1250121864 QQ交流群 :49759272 联系电话:0512-57882866

这个项目的意义: 这个项目所涉及到的知识: 1 掌握Win32 Dialog开发程序的一般步骤; 2 把PE学的理论知识转换为实践,加深对PE的理解; 3 了解大文件分割的原理; 4 了解文件加密的原理; 这个项目所涉及到的知识: 1 《编程达人·基础课程——WIN32基础》中的对话框编程的基本知识; 2 《编程达人·基础课程——PE》相关的理论知识; 3 《编程达人·基础课程——WIN32基础》中的常用控件的操作; 4 《编程达人·基础课程——C语言》中的文件相关的知识;

昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 演示效果预览

昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 PE简介 PE文件的全称是Portable Executable,意为可移植的可执行的文件,常见的EXE、DLL、OCX、SYS、COM都是PE文件。 PE ELF COFF之间有何“恩怨”? PE是Windows操作系统下的可执行文件格式;ELF(Executable Linkable Format) 是Linux下的可执行文件格式;COFF(Common Object File Format)它最早在Unix上使用; 学习PE的意义:可执行文件的格式涵盖了程序的编译、链接、装载和执行的各个方面。了解它的结构并深入剖析它对于认识系统、了解背后的机制大有好处

昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 PE结构

PE结构 与解析相关的数据结构 IMAGE_DOS_HEADER IMAGE_NT_HEADERS IMAGE_FILE_HEADER 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 PE结构 与解析相关的数据结构 IMAGE_DOS_HEADER IMAGE_NT_HEADERS IMAGE_FILE_HEADER IMAGE_OPTIONAL_HEADER IMAGE_SECTION_HEADER IMAGE_IMPORT_DESCRIPTOR IMAGE_EXPORT_DIRECTORY

RVA与FOA的恩怨 在PE解析以及以后相关的操作中RVA与FOA的相互转换是必须面对的一个问题。 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 RVA与FOA的恩怨 在PE解析以及以后相关的操作中RVA与FOA的相互转换是必须面对的一个问题。 //功能:RVA与RAW的相互转换 //参数:pPEPath:PE文件路径, // bRVATORAW: TRUE, RVA to RAW // FALSE,RAW to RVA //返回值:转换后的值,为0则转换失败 DWORD RVATORAW(IN const char *pPEPath,IN DWORD dwOffset,IN BOOL bRVATORAW) { void *pFileBuf = ReadPE(pPEPath,NULL); if(pFileBuf == NULL) return FALSE; IMAGE_DOS_HEADER *pIDH = (IMAGE_DOS_HEADER *)pFileBuf; IMAGE_NT_HEADERS *pINGS = (IMAGE_NT_HEADERS *)((DWORD)pFileBuf+pIDH->e_lfanew); IMAGE_FILE_HEADER IFH = pINGS->FileHeader; DWORD dwNumberOfSecs = IFH.NumberOfSections; IMAGE_OPTIONAL_HEADER IOH = pINGS->OptionalHeader; IMAGE_SECTION_HEADER *pISH = (IMAGE_SECTION_HEADER *)((DWORD)pFileBuf + pIDH->e_lfanew + sizeof(IMAGE_NT_HEADERS)); //计算需要分配的FileBuf大小; IMAGE_SECTION_HEADER *pISHTmp = pISH; //若dwOffset,则说明在PE头中,RVA==RAW if(dwOffset < IOH.SizeOfHeaders) return dwOffset; //进行RVA---->RAW if(bRVATORAW) for(DWORD i=0;i<dwNumberOfSecs;i++) {//这个比较公式很重要 好好理解为何是SizeOfRawData,哈哈这才是精髓 if(pISHTmp->VirtualAddress <= dwOffset && dwOffset<= pISHTmp->VirtualAddress + pISHTmp->SizeOfRawData) return dwOffset-pISHTmp->VirtualAddress+pISHTmp->PointerToRawData; } pISHTmp++; //进行RAW---->RVA else {//这个比较公式很重要 好好理解为何是取pISHTmp->SizeOfRawData pISHTmp->Misc.VirtualSize中大的,哈哈这才是精髓 if(pISHTmp->PointerToRawData <= dwOffset && dwOffset<= pISHTmp->VirtualAddress + (pISHTmp->SizeOfRawData>pISHTmp->Misc.VirtualSize?pISHTmp->SizeOfRawData:pISHTmp->Misc.VirtualSize)) return dwOffset-pISHTmp->PointerToRawData+pISHTmp->VirtualAddress; UnReadPE(pFileBuf); return NULL;

文件加密 概念:简单讲就是对一串011010101…..数据按照某种规则进行处理, 这种处理的过程就称为加密 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 文件加密 概念:简单讲就是对一串011010101…..数据按照某种规则进行处理, 这种处理的过程就称为加密 加密方式很多,我们这边的方式仅仅提供参考以加深对加密原理的理解,比如:字符加密,字符串加密,异或加密 当然,现在有很多文件加密的库比如Crypto++。大家在工程中需要加密的话尽量使用加密库 http://blog.csdn.net/tangcaijun/article/details/42110319

文件加密算法 字符加密: for(i = 0; i< ImageFile.dwFileLen; i++) { 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 文件加密算法 字符加密: for(i = 0; i< ImageFile.dwFileLen; i++) { *ptemp = *ptemp + 'j'; ptemp++; } 字符串加密:(真的就这么完美吗?) for(i = 0; i < ImageFile.dwFileLen / codeLen; i++) for(char j = 0; j < codeLen; j++) *ptemp = *ptemp + codeBuf[j]; 异或加密:留给你自己思考啦!

文件分割 文件分割原理就如同把把一块大的蛋糕切割开,只是文件分割要求能复原 为何需要文件分割? 有哪些分割算法? 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 文件分割 文件分割原理就如同把把一块大的蛋糕切割开,只是文件分割要求能复原 为何需要文件分割? 有哪些分割算法?

文件合并 显然,文件的合并是文件分割的逆过程。不是说文件大了才要分割吗?大文件又该如何合并呢? 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 文件合并 显然,文件的合并是文件分割的逆过程。不是说文件大了才要分割吗?大文件又该如何合并呢? 如何验证我的合并算法是否正确呢?对于非常大的文件我又不能用什么其他工具来验证,怎么解决呢?

整个程序分析内容 Step1 会先给大家详细讲解下RVA与FOA相关转换的算法; Step2 会给大家讲解一下导入表的编程实现代码; 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 整个程序分析内容 Step1 会先给大家详细讲解下RVA与FOA相关转换的算法; Step2 会给大家讲解一下导入表的编程实现代码; Step3 给大家详细讲解文件分割合并的具体实现; Step4 给大家详细讲解文件加密与解密的具体实现