![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Windows逆向
tutucoo
这个作者很懒,什么都没留下…
展开
-
代码重定位技术
int g_nTest;__asm{ call Dels Dels: pop ebx lea eax, g_nTest sub eax, Dels lea edx, [ebx + eax]}...原创 2019-11-29 11:05:00 · 313 阅读 · 0 评论 -
PE文件格式学习(十八):保留(Reserved)
暂无原创 2018-11-08 09:28:02 · 159 阅读 · 0 评论 -
PE文件格式学习(十七):COM表(COMRuntimeDescriptor)
暂无原创 2018-11-08 09:27:42 · 318 阅读 · 0 评论 -
PE文件格式学习(十六):延迟加载表(DelayLoadImportDescriptors)
1.介绍延迟加载表本质上跟绑定导入表的目的是一样的,都是为了加快程序加载文件的速度,只不过方法不一样。延迟加载是指在调用某个DLL时才去加载,目的是为了避免在程序启动之初就加载了不必要的DLL而浪费了时间。微软建议在两种情况下使用延迟加载:程序并非在启动时就会调用DLL里面的函数程序未必会调用该DLL里面的函数延迟加载表不是系统支持的一个特性,它是由编译器控制的。2.分析我们还是...原创 2018-11-08 09:27:20 · 358 阅读 · 0 评论 -
PE文件格式学习(十五):导入地址表(ImoortAddressTable)
导入地址表的内容其实就是导入表中的FirstThunk的内容,本例使用的是PE文件格式学习(十四):绑定导入表一文中的程序,因为它有绑定导入表,所以它的FirstThunk会被填入导入表中函数的真实地址。...原创 2018-11-08 09:26:57 · 751 阅读 · 1 评论 -
PE文件格式学习(十四):绑定导入表(BoundImportDirectory)
1.介绍绑定导入表的作用是加快程序的启动速度,一个PE程序在启动时会去加载导入表中的dll文件,并将导入表的FirstThunk指向的数组填入函数的真实地址,这需要耗去时间,绑定导入表中保存了导入函数的真实地址,所以当PE在启动时系统检测到有绑定导入表,就会直接将地址填入FirstThunk里,这样就省去了寻找真实地址的时间。但是绑定导入表的生效,有两个前提条件:程序初始化时,导入的DLL...原创 2018-11-08 09:26:35 · 895 阅读 · 0 评论 -
PE文件格式学习(十三):载入配置表(LoadConfigurationDirectory)
1.介绍载入配置表早期是用于描述当PE文件头或PE可选头无法描述或者因为太大而无法描述的各种功能。后来以XP及以后的系统主要是为了存储SEH句柄,称为安全结构化异常处理程序列表,如果SEH异常处理没有经过注册,在载入配置表中没有句柄,这个异常处理就不会被执行。具体的例子就不演示了,看起来只要是正规编写的程序都会在表中注册,因此都可以执行。据微软官方说明,这个载入配置表的作用是为了防止“x8...原创 2018-11-08 09:26:09 · 905 阅读 · 0 评论 -
PE文件格式学习(十二):TLS表(TLSDirectory)
1.介绍TLS全称线程局部存储器,它用来保存变量或回调函数。TLS里面的变量和回调函数都在程序入口点(AddressOfEntry)之前执行,也就是说程序在被调试时,还没有在入口点处断下来之前,TLS中的变量和回调函数就已经执行完了,所以TLS可以用作反调试之类的操作。TLS中的变量单独存在于每个独立的线程当中,每个线程中对该变量的操作都不会影响到其他线程中的TLS变量。TLS变量的创建方...原创 2018-11-08 09:25:26 · 2387 阅读 · 1 评论 -
PE文件格式学习(十一 ):全局指针表(GlobalPtr)
在x86与x64系列平台没有使用全局指针表,目前只应用于MIPS等平台上,多用于参数传递。原创 2018-11-08 09:25:00 · 367 阅读 · 0 评论 -
PE文件格式学习(十):版权或特殊结构表(CopyrightOrArchitectureSpecificData)
微软官方文档说这个表是保留的,必须为0原创 2018-11-07 18:01:40 · 219 阅读 · 0 评论 -
PE文件格式学习(九):调试表(DebugDirectory)
微软官方参考文档:https://docs.microsoft.com/en-us/windows/desktop/debug/pe-format#debug-type原创 2018-11-07 18:01:13 · 1400 阅读 · 0 评论 -
PE文件格式学习(八):基址重定位表(BaseRelocationTable)
1.简介基址重定位表位于数据目录表中的第六个,它位于安全表的后面。这个表的作用是用来索引那些需要重定位的数据的。当系统发现DLL的真实加载基址跟PE文件中的ImageBase中的值不一样时,就会启用基址重定位表修复一些数据的地址。我们知道一个程序中可能包含多个DLL,因此有可能多个DLL之间的ImageBase是重合的,一旦某个加载基址被占用了,系统就会随机分配一个基址给将要加载的DLL,比如...原创 2018-11-07 18:00:52 · 1437 阅读 · 0 评论 -
PE文件格式学习(七):安全表(Security)
1.介绍如果一个应用程序有数字签名,那么它的安全表就不会为空。它位于异常表的后面。2.安全表解析通过数据目录表里提供的RVA,我们转换成offset,找到了安全表的位置,如下:安全表的结构体如下:typedef struct _WIN_CERTIFICATE{ DWORD dwLength; WORD wRevision; WORD wCertificateT...原创 2018-11-07 18:00:27 · 971 阅读 · 1 评论 -
PE文件格式学习(六):异常表(Exception)
1.概述x86系统采用动态的方式构建SEH结构,相比而言x64系统下采用静态的方式处理SEH结构,它保存在PE文件中,通常在.pdata区段。因此本文的例子采用x64编译过的程序。异常表在资源表的后面。2.异常表解析数据目录表的第四个元素指向异常表,RVA指向的是一个IMAGE_IA64_RUNTIME_FUNCTION_ENTRY的结构体,本例的RVA是0xA000(也就是.pdata段...原创 2018-11-07 18:00:06 · 2425 阅读 · 0 评论 -
PE文件格式学习(五):资源表(Resource)
1.概述程序内部和外部的界面等元素的二进制数据统称为资源,程序把它们放在一个特定的表中,符合数据和程序分离的设计原则。Windows程序中的资源大致分为六类:菜单、对话框、位图、光标、图标、自定义资源资源表是数据目录表中的第三个元素,排在导入表的后面。2.资源表解析资源表的解析比较复杂,可能是所有数据目录表中最复杂的一个。我将结合例子说明,这样会比较好理解。我们的文件在十六进制工具01...原创 2018-11-07 17:59:43 · 1289 阅读 · 0 评论 -
PE文件格式学习(四):导入表(Import)
UPDATE:在文章的末尾更新了一张图,在网上找的,有助于理解导入表的结构1.概述导入表是逆向和病毒分析中比较重要的一个表,在分析病毒时几乎第一时间都要看一下程序的导入表的内容,判断程序大概用了哪些功能。导入表是数据目录表中的第2个元素,排在导出表的后面。2.导入表解析先来了解一下导入表在PE文件中的结构体:struct _IMAGE_IMPORT_DESCRIPTOR { ...原创 2018-11-07 17:59:19 · 740 阅读 · 0 评论 -
PE文件格式学习(三):导出表(Export)
1.回顾上篇文章中介绍过,可选头中的数据目录表是一个大小为0x10的数组,导出表就是这个数组中的第一个元素。我们再回顾下数据目录表的结构体:struct _IMAGE_DATA_DIRECTORY{    DWORD VirtualAddress;    DWORD Size;} IMAGE_DATA_DIRECTORY, *PIMAGE_DA...原创 2018-11-07 17:58:49 · 485 阅读 · 0 评论 -
PE文件格式学习(二):总体结构
1.概述PE文件分为几个部分,分别是:DOS头DOS StubNT头(PE头)文件头可选头区段头(一个数组,每个元素都是一个结构体,称之为IMAGE_SECTION_HEADER).text.rdata.data.rsrc.reloc…本篇文章主要围绕整体结构做一个梳理,不会做太多细节的讲解。(比如说可选头里的数据目录表,它包含16种表,会在接下来的系列文章分...原创 2018-11-07 17:56:59 · 456 阅读 · 0 评论 -
PE文件格式学习(一):概述
1.PE文件简介PE文件格式是Windows系统中应用最广泛的文件格式之一,我们常见的可执行文件.exe、动态链接库.dll以及驱动文件.sys等都是PE文件格式的。可以通过十六进制工具如010editor查看PE文件,可以看到PE文件都有一个共同的特点,就是它们的最开头都是4D5A,也就是ASCII字符MZ。见下图在Windows系统“眼里”,其实只有PE文件,后缀名只是用于关联打开程序...原创 2018-11-07 17:20:26 · 664 阅读 · 1 评论 -
160个Crackme之004 ajj.1
作者:ajj难度:★★保护方式:Name/Serial(Delphi)概述运行程序程序没有确定按钮,所以直接丢到OD中分析。虽然没有确定按钮,但是有输入框,所以应该调用了GetItemTextA,可是这个程序是Delphi程序,它的API并不是GetItemTextA,所以暂时放弃这个想法。在OD中通过中文搜索引擎的智能搜索查找字符串,发现有用的字符串"恭喜恭喜!注册成功"可问...原创 2018-12-28 20:09:18 · 303 阅读 · 0 评论 -
160个Crackme之003 Afkayas.2
1.概述作者:Afkayas难度:★★保护方式:Nag,Name/Serial运行程序,有几秒钟的弹框,过几秒自动消失出现主窗口随意输入用户名和序列号,点击ok,弹出对话框2.算法OD加载程序,用中文搜索引擎里的智能搜索搜到字符串"You Get Wrong",跳转到代码处,向上找到函数的起始处,下断点,运行程序后,在主窗口中输入用户名和序列号点ok,程序被成功断下。第一...原创 2018-12-28 13:37:42 · 526 阅读 · 0 评论 -
160个Crackme之002 Afkayas.1
1.概述作者:Afkayas难度:★保护方式:Name/Serial(VB5)运行程序输入用户名tutucoo,序列号12345678,弹出对话框2. 分析首先查找字符串,跳转到字符串代码,向上查找到函数起始位置,下断点,运行程序,输入name和serial后点击OK,程序断下。F8分析汇编,发现算法:用户名长度*0x17cfb+用户名首字母ASCII,最后转十进制最后将十...原创 2018-12-27 00:40:14 · 200 阅读 · 0 评论 -
160个Crackme之001 Acid_burn
1.概述运行Acid burn.exe,启动界面如下:![hello you have to kill me! Welcorne to this Newbies Crackrne nude by ACiD BuRN Crac:KerWoRlD1要将上面的对话框去掉点击按钮Serial/Name,进去要求输入用户名和序列号:点击按钮Serial,进去要求输入序列号:2.Seri...原创 2018-12-26 22:32:37 · 578 阅读 · 0 评论