随笔分类 -  逆向分析

1
摘要:IAT Import Address Table,导入地址表 DLL中隐式链接的调用过程 以调用CreateFileW()为例该函数位于kernel32.dll中 call dword ptr ds:[01001104] 实现函数的调用 调用CreateFileW()函数时并非直接调用,而是通过获取 阅读全文
posted @ 2020-05-08 16:52 10nnn4R 阅读(639) 评论(0) 推荐(1)
摘要:DOS 部分 由上往下依次为: IMAGE_ DOS_ HEADER-->DOS Stub IMAGE_ DOS_ HEADER e_magic:DOS签名 e_Ifanew:指示NT头偏移(可变) 不一定是00 00 00 E0 DOS Stub(大小不固定) 其实是一段汇编代码 一般输出 Thi 阅读全文
posted @ 2020-05-08 15:39 10nnn4R 阅读(513) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2020-05-06 20:14 10nnn4R 阅读(158) 评论(0) 推荐(0)
摘要:![](https://img2020.cnblogs.com/blog/1863787/202005/1863787-20200506195610505-1592405117.png) 阅读全文
posted @ 2020-05-06 20:13 10nnn4R 阅读(176) 评论(0) 推荐(0)
摘要:printf函数 printf("%d", num); 汇编代码调用过程: 0071183F mov eax,dword ptr [num] 00711842 push eax 00711843 push offset string "%d" (0717B30h) 00711848 call _pr 阅读全文
posted @ 2020-05-01 16:46 10nnn4R 阅读(245) 评论(0) 推荐(0)
摘要:概述 学习汇编的意义 开发时调试 逆向时的代码阅读 某些特殊技术的使用(shellcode,壳) 16/32/64汇编的区别 栈的作用: 存储数据 保存寄存器环境 传递参数 lea eax,dword ptr ss:[esp-4] 将 ss:[esp-4] 传入eax(传址) xchg eax,dw 阅读全文
posted @ 2020-05-01 14:48 10nnn4R 阅读(210) 评论(0) 推荐(0)
摘要:第一章 进制、寄存器与汇编指令(汇编与C语言相结合) 3000元 学习汇编能做什么(逆向,游戏安全,加固/脱壳,反病毒,漏洞挖掘等等必备基础) 1.1 计算机的基本构造及其运行原理 1.2 不同进制的书写方法 1.3 为什么计算机要用二进制 1.4 不同进制间如何运算1 1.5 不同进制间如何运算2 阅读全文
posted @ 2020-04-28 20:23 10nnn4R
摘要:堆的调试实验 调试态堆管理策略和常态堆管理策略:前者只使用空表不用块表,不真实 使用调试器加载函数会触发前者 __asm int3 调试最真实的栈 未启用块表的堆区信息 堆区起始位置(假设为0x00520000) 起始位置开始依次是段表索引,虚表索引,空表使用标识和空表索引区 空表索引区的位置是偏移 阅读全文
posted @ 2020-02-22 17:14 10nnn4R 阅读(236) 评论(0) 推荐(0)
摘要:基本概念 堆块:堆区内存的基本单位 包括两个部分:块首,块身 块首:标识这个堆块自身的信息:如大小,是否被占用等 块身:分配给用户使用的数据区 堆表:一般位于堆区的起始位置,用于索引堆区所有堆块的信息,包括大小,是否被占用等. 占用态的堆块被使用它的程序索引,堆表只索引所有空闲态的堆块. 堆表分为空 阅读全文
posted @ 2020-02-22 16:08 10nnn4R 阅读(209) 评论(0) 推荐(0)
摘要:段选择器FS与TEB WinNT内核下内存采用保护模式,段寄存器的意义与实模式汇编下的意义不同.另外,FS存的是段选择子,而不是实模式下的高16位基地址。 FS寄存器指向当前活动线程的TEB结构(线程结构) 下面为FS寄存器下偏移的相关信息: 偏移 说明 000h 指向SEH链指针 004h 线程堆 阅读全文
posted @ 2020-02-11 18:19 10nnn4R 阅读(228) 评论(0) 推荐(0)
摘要:原文地址:https://www.jianshu.com/p/f9e362e64ef9 先看图表示虚拟地址到物理地址的映射,把两段与程序运行所需要的同等大小的虚拟空间映射到某段物理空间。 例如程序A需要 10MB 内存,虚拟地址的范围是从 0X00000000 到 0X00A00000,假设它被映射 阅读全文
posted @ 2020-02-11 17:22 10nnn4R 阅读(201) 评论(0) 推荐(0)
摘要:原文链接:https://www.jianshu.com/p/be89357ab475 计算机内存是以字节(Byte)为单位划分的,理论上CPU可以访问任意编号的字节,但实际情况并非如此。 CPU 通过地址总线来访问内存,一次能处理几个字节的数据,就命令地址总线读取几个字节的数据。32 位的 CPU 阅读全文
posted @ 2020-02-11 17:19 10nnn4R 阅读(160) 评论(0) 推荐(0)
摘要:对于CPU来说,内存是一个存放指令和数据的地方,并不能在内存中完成计算功能,例如要计算 a = b + c,必须将 a、b、c 都读取到CPU内部才能进行加法运算。为了解具体的过程,我们不妨先来看一下程序从硬盘到CPU的过程示意图。 运算单元:是CPU的大脑,负责加减乘除、比较、位移等运算工作,每种 阅读全文
posted @ 2020-02-11 17:15 10nnn4R 阅读(281) 评论(0) 推荐(0)
摘要:转自:evil.eagle https://blog.csdn.net/evileagle/article/details/12176797 导出表是用来描述模块中的导出函数的结构,如果一个模块导出了函数,那么这个函数会被记录在导出表中,这样通过GetProcAddress函数就能动态获取到函数的地 阅读全文
posted @ 2020-02-11 16:08 10nnn4R 阅读(276) 评论(0) 推荐(0)
摘要:大致结构 DOS头和NT头之间通常还有个DOS Stub DOS头 DOS头的作用是兼容MS-DOS操作系统中的可执行文件 一般没啥用 记录着PE头的位置 DOS头定义部分 typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header WORD e_ma 阅读全文
posted @ 2020-02-11 13:02 10nnn4R 阅读(271) 评论(0) 推荐(0)
摘要:环境: devc++(编译改为32位),windows10 源码(来自书中) #include <stdio.h> #define PASSWORD "1234567" int verify_password (char *password) { int authenticated; char bu 阅读全文
posted @ 2020-02-09 14:22 10nnn4R 阅读(207) 评论(0) 推荐(0)
摘要:函数调用过程 调用函数操作 函数参数入栈(在当前函数栈帧),从左至右或从右至左视情况而定 一般为从右至左 mov 地址,参数 的一个操作并不直接pop而是定位到地址将参数传递进去 call offset: 调用函数,call标识符或地址.同时为要调用的函数开辟新的栈帧 向栈中压入当前指令的地址,即返 阅读全文
posted @ 2020-02-08 17:55 10nnn4R 阅读(137) 评论(0) 推荐(0)
摘要:PE文件格式 PE 文件格式把可执行文件分成若干个数据节(section),不同的资源被存放在不同的节中。 一个典型的 PE 文件中包含的节如下: .text 存放着二进制的机器代码 .data 初始化的数据块,如宏定义、全局变量、静态变量等。 .idata 可执行文件所使用的动态链接库等外来函数与 阅读全文
posted @ 2020-02-07 16:31 10nnn4R 阅读(339) 评论(0) 推荐(0)
摘要:80386汇编知识 本文主要是博主学习漏洞银行(BugBank)k1ght主讲的暴力流学汇编的内容 与汇编语言略有不同,是一门全新的编程语言,尽管继承了汇编语言的语法. 处理器的工作模式: 80386以后的处理器均有三种工作模式:实模式,保护模式和虚拟8086模式,我们一般所用的是保护模式.实模式和 阅读全文
posted @ 2020-01-15 21:43 10nnn4R 阅读(738) 评论(0) 推荐(0)
摘要:8086汇编 储存器: 位于CPU中 ,读写速度最快 寄存器: 区别硬盘 U盘等外部储存器 地址总线 决定CPU的寻址能力,如8386CPU中有20根地址总线,则cpu能访问的储存单元为2的20次方 数据总线 决定cpu一次能够传输数据的位数 8086cpu有16根数据总线 控制总线 决定了cpu对 阅读全文
posted @ 2020-01-13 14:27 10nnn4R 阅读(728) 评论(0) 推荐(0)

1