吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4723|回复: 7
收起左侧

[C&C++ 转载] 【wonderzdh】-逆向学习笔记第八篇 -基础PE分析工具v0.1编写实战

[复制链接]
wonderzdh 发表于 2014-8-21 16:46
本帖最后由 wonderzdh 于 2014-8-21 16:56 编辑

基础PE分析工具v0.1编写实战
一、目标:编写一个简单的解析PE文件格式的工具,类似PEID,但不包含特征码识别的其他功能,只显示PE格式的基本信息。
效果图:
QQ截图20140821164133.jpg
二、技术原理:
1、PE格式:
QQ截图20140821165147.jpg
图片太大,请移步网盘。
http://pan.baidu.com/s/1jGomJCa

从DOS头开始一步步解析,图中有箭头指示,哪些结构体里边的值指向其他结构体。会点PE结构有很多好处,例如分析某DLL,结果DLL加载的地址会变,我们就可以修改PE内容来达到固定地址加载的目的,这样OD的注释就得以保留了。其他多大N百种用途就不多提了…
2.编码风格:
本人用E已经快三年了,用JAVA也有半年多,写过N多小工具小游戏。曾经自以为编程也就那么点事儿,但现在只能用C/C++风格,更加底层,基本敲上代码能知道在内存中是个什么样。
例如:
①申请全局变量,其会在PE中数据段直接分配空间,所以,如果按我以前一下定义一个1000大小的结构体数组,PE就会多用1000*结构体大小的空间。所以现在正确的做法是,全局变量就定义个结构体指针,只占4字节。相比之前的大小….运行时在初始化地方new 结构体,就可以通过指针调用。
②动态数组,相比易语言“高大上的”数组直接填个0就动态了,C实现起来我一直害怕,直到领导要求必须用动态,你妹的一下定义个1000的数组是几个意思?于是乎抛下一个 vector ,百度一下后真的好用,内部原理大致是“预定”一块内存(还没有分配物理存储器,等于只是预定,不存在),数组增加时再映射到物理内存,才真正占用内存了。vector 和JAVA的ArryList相似度99%,需要用的请自行百度一下。一般我的用法是:
vector<_PESections> vPESec;  // 定义
vPESec.reserve(100);         // 指定最大成员数
……
_PESections pes;            // 定义单个局部成员
    pes.Name = (const char *)m_pSecHdr.Name;
    csTmp.Format("%08x", m_pSecHdr.VirtualAddress);
    pes.VirtualAddress= csTmp;
    ……
lpvPESec->push_back( pes);  // 把该成员添加到动态数组的末尾
vPESec.clear();              // 用完清空一下,只是提醒大家要记得是否会留下垃圾,如果功能用完,还会占用内存,记得自己释放。
③字符串格式化的标准:
csTmp.Format("%08x",m_pNtHdr->OptionalHeader.ImageBase);
%x和 %08x 的区别在于,%08x固定长度为8个字符,空着的前边用0补齐。
顺便提一下,常用的有: %d int, %s char, %x 十六进制
④class的使用:
VS下可以再项目右键新建C++类,使用时要注意:
a、结构体定义在类外边
b、变量和函数要分开
c、成员变量私有不公开
d、要返回结构体或者字符串等用指针传递的数据,应该从外部调用处传一个该类型的指针进来,切记不要在内部直接把字符串的指针返回,因为那很有可能是个局部变量,返回的指针指向的地址也许已经被释放或是他用了。所以正确的函数声明应该如下:
void EnumSections(vector<_PESections> *vPESec);   // 枚举区段表,通过指针把内容保存到外部给的地址里。
e、“类似”的信息要放在一处,便于管理,类成员变量要以m_ 开头,在构造函数里进行一边初始化。所有变量命名要加前缀,例如指针要加p 或者lp。
具体可以参考这篇文章:http://blog.csdn.net/msda/article/details/6185557
⑤其他的现在感觉都记不住了,这次的这个项目就总结这么多吧。
三、总结
虽说有些知识是自己知道的,但知道不等于做到,实战才是让自己掌握知识的唯一途径~~这篇写的有点水,不知道有没有人来吐槽~

exeandsrc.rar (87.04 KB, 下载次数: 11)



发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Everley_y 发表于 2014-8-21 17:10
前几期都没看。。
快乐.神 发表于 2014-8-21 17:52
东关之南 发表于 2014-8-30 13:26
头像被屏蔽
Charles 发表于 2014-8-31 21:41
提示: 作者被禁止或删除 内容自动屏蔽
zhangyougu 发表于 2014-9-1 08:54
感谢楼主,前几期有链接吗
loveliuhao323 发表于 2014-9-27 10:24
再出点破解网络验证的教学吧,上寨什么都都很喜欢,支持!!
淩泠 发表于 2014-11-3 21:26
网盘失效了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-27 18:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表