摘要:
0x00 前言 对于上篇所讲的那个练习,PE文件属于运行时解压缩文件,而且文件包含校验和检验,如果直接修改代码可能得花点功夫了。对于这种情况我们可以使用内嵌补丁轻松解决。 由上图我们知道要进行运行内嵌补丁,先得找到外壳程序跳往OEP的关键跳转。上篇我们已经知道4018083处为跳往OEP的关键跳。 阅读全文
摘要:
内嵌补丁练习(一) 0x00 前言 首先介绍以下运行时压缩或者运行解压文件,这类文件通常是代码在运行之前已经压缩过或者代码被加密过,在运行过程中在进行解压缩或者解密的PE文件。通常这样做的目的可能为了压缩文件体积或者加密代码保护代码安全。下图位运行时解压缩文件和普通压缩文件对比。 0x01 调试查看 阅读全文
摘要:
0x00《逆向工程核心原理》 不得不说这本书真是很适合入门,而且讲的特别细致,纵使我已经看过了《加密与解密》但是看一章开始我发现我还是能获得很多东西,要入门这本书一定要看!!! 0x01 《加密与解密第三版》 本书是著名的看雪论坛的著作,也是很经典的一本书,我们图书馆居然第一版第二版,第三版都有,而 阅读全文
摘要:
其中IP=IP+所读指令的字节数。 那么,所读指令的字节数应该怎么判断呢? 汇编指令长度与寻址方式有关,规律或原则如下: 一、没有操作数的指令,指令长度为1个字节 二、操作数只涉及寄存器的的指令,指令长度为2个字节 如:mov bx,ax 三、操作数涉及内存地址的指令,指令长度为3个字节 如:mov 阅读全文
摘要:
0x00 前言 对于脱壳后的程序往往不能直接运行,这是因为它们很多都没有重建输入表。当然用的od脱壳可能可以。重建输入表一般都是用专业软件比如ImportREC。但是对于逆向研究者来说会自己重讲输入表是必须的技能。这就需要读者对前面几篇所讲的PE文件格式非常熟悉。 0x01 寻找OEP脱壳脱壳 前面 阅读全文
摘要:
0x00 前言 上一篇介绍了壳程序的加载过程以及通过两次内存断点法寻找OEP,这篇我们将利用新的的方法——堆栈平衡法来寻找OEP。 0x01 堆栈平衡法原理 堆栈平衡原理就是利用壳程序在运行前后需要保存和恢复原程序的堆栈环境来实现的。我们可以把壳程序当作一个子程序,调用这个子程序前,肯定需要保存原程 阅读全文
摘要:
0x00 前言 对于加壳程序第一件事就是要找到OEP(oringinal Entry point),由于加壳的缘故,当PE文件载入OD或者其他调试软件时进入的的往往是壳程序的入口地址。所以要进行逆向分析第一步就必须找到PE程序的原始入口点。 0x01 壳的加载过程 壳和病毒在某些方面比较类似,都需要 阅读全文
摘要:
0x00 前言 前面了解了PE文件的输入和输出,今天来看看另一个重要的结构——资源。资源结构是很典型的树形结构,层层查找,最终找到资源位置。 0x01 资源结构介绍 Windows程序的各种界面成为资源,包括加速键,位图,光标,对话框,图标,菜单,串标,工具栏,版本信息等等,在所有的PE文件中资源结 阅读全文
摘要:
PE文件格式详解(七) Ox00 前言 前面好几篇在讲输入表,今天要讲的是输出表和地址的是地址重定位。有了前面的基础,其实对于怎么找输出表地址重定位的表已经非常熟悉了。 0x01 输出表结构 当创建一个DLL文件时,实际上创建了一组能让EXE或者其他DLL调用的一组函数,PE装载器根据DLL文件中输 阅读全文
摘要:
0x00 前言 前面两篇讲到了输出表的内容以及涉及如何在hexWorkShop中找到输出表及输入DLL,感觉有几个地方还是没有理解好,比如由数据目录表DataDirectory[16]找到输出表表后以为找到输入DLL就完了,其实这一流程的最终功能是通过输入DLL找到输入DLL调用的函数,这一步骤是通 阅读全文