
逆向工程可能会被误认为是对知识产权的严重侵害,但是在实际应用上,反而可能会保护知识产权所有者。例如在集成电路领域,如果怀疑某公司侵犯知识产权,可以用逆向工程技术来寻找证据。
产生动机
需要逆向工程的原因如下:
●接口设计。由于互 *** 作性,逆向工程被用来找出系统之间的协作协议。
●军事或商业机密。窃取敌人或竞争对手的最新研稿团究或产品原型。
●改善文档。当原有的文档有不充分处,又当系统被更新而原设计人员不在时,逆向工程被用来获取所需数据,以补充说明或了解系统的最新状态。
●软件升级或更新。出于功能、合规、安全等需求更改,逆向工程被用来了解现有或遗留软件系统,以评估更新或移植系统所需的工作。
●制造没有许可/未授权的副本。
●学术/学习目的。
●去除复制保护和伪装的登录权限。
●文件丢失:采取逆向工程的情况往往是在某一个特殊设备的文件已经丢失了(或者根本就没有),同时又找不到工程的负责人。完整的系统时常需要基于陈旧的系统上进行再设计,这就意味着想要集成原有的功能进行项目的唯一方法,便是采用逆向工程的方法,分析已有的碎片进行再设计。
●产品分析:用于调查产品的运作方式,部件构成,估计预算,识别潜在的侵权行为。
作用
逆向工程被广泛地应用到新产品开发和产品改型设计、产品仿制、质量分析检测等领域,它的作用是:
1、缩短产品的设计、开发周期,加快产品的更新换代速度;
2、降低企业开发新产品的成本与风险;
3、加快产品的造型和系列化的设计;
4、适合旁含单件、小批量的零件制造,特别是模具的制造,可分为直接制模与间接制模法。直接制模法:基于RP技术的快速直接制模法是将模具CAD的结果由RP系统直接制造成型。该法既不需用RP系统制作样件键启橘,也不依赖传统的模具制造工艺,对金属模具制造而言尤为快捷,是一种极具开发前景的制模方法;间接制模法:间接制模法是利用RP技术制造产品零件原型,以原型作为母模、模芯或制模工具(研磨模),再与传统的制模工艺相结合,制造出所需模具。
上次XCTF-game说了之后要学习一波aslr的关闭方法,昨天看了看逆向工程核心原理罩拆,发现上面有讲解其关闭的方法,特此记录。
先从pe文件重定位说起。
创建好进程后,exe文件会被首先加载进imagebase指定的内存空间地址,因此不用考虑exe重定位。但是DLL和SYS文件可能因为加载几个,导致除了第一个之外其他文件加载到其他尚未占用的地址。
而开启了aslr之后exe可以不加载到imagebse的位置,另外在aslr之前,dll也总是加载到固定地址。
不仅指令的地址变了,而且见到这些红色的call的地址都是硬编码进入的程序,每次也会变。pe装载器进行重定位处理时,最关键的就是查找硬编码地址的位置。而重定位表就是记录硬编码地址偏移的列表。
基址重定位表地址位于IMAGE_OPTION_HEADER的IMAGE_DATA_DIRECTORY[5]。
前面的DWORD是RVA后面的DWORD是大小
typedef struct _IMAGE_DATA_DIRECTORY {
DWORD VirtualAddress
DWORD Size;
} IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY
另外再蔽缺看看pe头IMAGE_FILE_HEADER这里
在IMAGE_FILE_HEADER的Characteristics字段。可物并枣以见到这个Relocations stripped是没有勾上的。
大意是,重定位信息从这个文件被剥离,这个文件必须被装在进preferred基址(指的应该就是ImageBase),如果ImageBase不可用,加载器会报错。
我们这里要动手关闭aslr,这个选项不用改。要改的是IMAGE_OPTIONAL_HEADER的DLL Characteristics字段
下面是DLL Characteristics的属性值,相或代表属性叠加。
将8140改为8100,也就是让DLL不能move
再次执行程序,发现是004...打头的,这个时候aslr就被关上了。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)