自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 通过修改PE加载DLL

基本概念除了DLL动态注入技术外,还可以通过手工修改PE文件的方式来加载DLL,这种方式只要应用过一次之后,每当进程开始运行时便会自动加载指定的DLL。整体思路如下:1、查看IDT是否有充足的空间,若无则移动IDT至其他位置,若有则直接添加至列表末尾;2、若无,修改OPTIONAL头IMPORT TABLE的RVA值并增大Size值,删除绑定导入表BOUND IMPORT Table,复制原IAT...

2018-06-24 10:51:58 3800

原创 DLL卸载

DLL卸载DLL卸载(DLL Ejection)是将强制插入进程的DLL弹出的一种技术,原理是驱使目标进程调用FreeLibrary() API,即将FreeLibrary() API的地址传递给CreateRemoteThread()的lpStartAddress参数并把要卸载的DLL的句柄传递给lpParameter参数。注意:使用FreeLibrary() API实现DLL卸载,仅适用于卸载...

2018-06-23 09:19:43 4076

原创 DLL注入

DLL注入DLL(Dynamic Linked Library动态链接库)被加载到进程后会自动运行DllMain()函数,用户可以把想执行的代码放到DllMain()函数,每当加载DLL时,添加的代码就会自然而然得到执行。DLL注入是指向运行中的其他进程强制插入特定的DLL文件。其工作原理是从外部促使目标进程调用LoadLibrary() API从而强制执行DLL的DllMain()函数,而且被注...

2018-06-22 20:22:57 5544 1

原创 Windows消息钩取

Windows消息钩取简单地说,消息钩取就是偷看、截取信息。常规Windows消息流:1、发生键盘输入事件时,WM_KEYDOWN消息被添加到[OS message queue];2、OS判断哪个应用程序中发生了事件,然后从[OS message queue]中取出消息,添加到相应应用程序的[application message queue]中;3、应用程序监视自身的[application m...

2018-06-13 20:13:01 2603 2

原创 内嵌补丁练习

内嵌补丁内嵌补丁即内嵌代码补丁(Inline Code Patch),当难以直接修改指定代码时,插入并运行被称为“洞穴代码”(Code Cave)的补丁代码后,对程序实现打补丁。该技术经常用于对象程序经过运行时压缩(或加密处理)而难以直接修改的情况。如图,左边是经典的运行时压缩代码(或加密代码),EP代码先将加密的OEP代码解码,再跳转到OEP代码处执行。若要打补丁的代码存在于经过加密的OEP区域...

2018-06-12 19:48:44 1414 1

原创 UPack的PE文件头分析与OEP查找

UPack(Ultimate PE压缩器),是一种PE文件的运行时压缩器,特点是使用独特的方法对PE头进行变形。UPack会使许多的PE分析程序无法正常运行,因此很多恶意代码都是通过UPack进行压缩。 UPack PE文件头分析使用UPack压缩notepad.exe:UPack会直接压缩源文件而不会进行备份。压缩后的notepad文件更名为notepad_upack。使...

2018-06-11 20:04:08 1595 1

原创 从可执行文件中删除.reloc节区

基址重定位表对于DLL和SYS文件来说是必须得,但在EXE格式的PE文件中,基址重定位表并无作用,将其删除后程序仍然能够正常运行。VC++中生成的PE文件的重定位节区名为.reloc,删除该节区后文件可正常运行,并且缩减了文件大小。.reloc节区一般位于所有节区的最后,可以使用PEView和Win Hex Editor来手动删除。这里对reloc.exe程序进行演示。1、删除.reloc节区头:...

2018-06-09 22:19:14 2252

原创 基址重定位表

基址重定位表(Base Relocation Table),记录PE重定位时需要修改的硬编码地址的位置。一般地,向进程的虚拟内存加载PE文件(EXE、DLL、SYS)时,文件会被加载到PE头的ImageBase所指的地址处。若加载的文件为DLL或SYS,且ImageBase位置加载了其他DLL或SYS文件时,则会进行PE重定位。PE重定位是指PE文件无法加载到ImageBase所指位置时,而加载到...

2018-06-09 22:10:32 1913

原创 运行时压缩(UPX)

任何文件都是由二进制组成的,因而只要使用合适的压缩算法,就可以是文件大小进行压缩。无损压缩:经过压缩的文件能完全恢复。如7-zip、面包房等压缩程序。有损压缩:经过压缩的文件不能完全恢复。压缩多媒体文件时大部分使用有损压缩。运行时压缩器:运行时压缩器(Run-Time Packer)是针对可执行文件而言的,可执行文件内部含有解压缩代码,文件在运行瞬间在内存中解压缩后执行。运行时压缩文件也是PE文件...

2018-06-07 19:57:03 3994 3

原创 PE文件格式

PE即Portable Executable,是Windows OS下使用的可执行文件格式。PE文件是指32位的可执行文件,亦称为PE32。64位的可执行文件称为PE+或PE32+,是PE文件的一种扩展形式。PE文件种类如下表:PE文件基本结构:从DOS头至节区头是PE头部分,下面的节区合称PE体。文件的内容一般分为代码(.text)、数据(.data)、资源(.rsrc)节,分别保存。VA&am...

2018-06-04 19:57:40 3233

原创 逆向分析Tut.ReverseMe1

这里调试一个https://tuts4you.com/上的crackme文件Tut.ReverseMe1.exe。运行程序查看:提示需要去除所有的Nags(唠叨)并找到正确的注册码。点击确定之后:提示使用SmartCheck进行注册。这里我们使用调试器进行调试破解。至此,明确一下目标,第一是去掉消息框,第二是查找注册码。使用Ollydbg打开该文件:开始即是VB引擎代码。直接跳过该部分,使用字符串...

2018-06-03 17:31:20 1751 1

原创 栈帧

栈帧(Stack Frame)是利用EBP寄存器访问栈内局部变量、参数、函数返回地址等的手段,在程序中用于声明局部变量、调用函数等。整个过程为:调用某函数时,先把用作基准点(函数起始地址)的ESP值保存到EBP并维持在函数内部。无论ESP的值如何变化,以EBP的值为基准能够准确安全访问到相关函数的局部变量、参数、返回地址等。网上找的一个函数调用栈的典型内存布局如下:基本的栈帧结构如...

2018-06-03 10:39:41 2892

原创 函数调用约定

函数调用约定(Calling Convention)是对函数调用时如何传递参数的一种约定。函数调用完毕后,ESP寄存器的值需要恢复到函数调用之前的值,从而保证可引用的栈大小不会缩减。而函数调用约定就是解决函数调用后如何处理ESP的问题的。1、cdeclcdecl主要是C语言中使用的方式,调用者负责处理栈。编写简易的代码如下:#include "stdio.h"int add(int a, in...

2018-06-02 17:26:11 805

原创 逆向分析abex'crackme #2

这里接着逆向分析abex' crackme #2。运行程序,要求填入Name和Serial:随意填写后点击Check: 可以看到,显示这个序列号错误。由此可知,该程序是通过获取用户输入的Name字符串,再通过加密的方式加密Name字符生成相应的Serial值。这里可以明确一下目标,即逆向分析该加密算法具体是如何实现的。 OllyDbg打开该exe文件: ...

2018-06-02 12:58:24 2667 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除