逆向
迪迦 • 奥特曼
C/C++ coder
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
org 07c00h的原因
Boot Sector(引导扇区),一个正确的BootSector除了以0xAA55结束之外,还应该包含一段少于512B的执行码源码分析 org07c00h ;告诉编译器程序加载到7c00处 movax,cs movds,ax moves,ax call DispStr ;调用显示字符串例程 jmp$ ;无限循环DispStr: mov ax,BootMessage mov转载 2020-09-22 09:05:46 · 590 阅读 · 0 评论 -
SAR,SHR,SAL,SHL区别
SHL,SAL分别是逻辑左bai移和算术左移,运行结果是一样的du,都是数据往左移zhi动,然dao后在右边补零;SHR是逻辑右移,数据往右移动,在左边补零。如:1000 0000->0010 0000(逻辑右移两位)SAR是算术右移,比较特殊。他的最高位一直是不变的。如1000 0000算术右移7位后就成了1111 1111.即:就SAR最高位保持不变,其他都补0....转载 2020-08-19 16:48:25 · 3639 阅读 · 1 评论 -
汇编中的TESP和CMP区别
TEST属于逻辑运算指令功能:执行BIT与BIT之间的逻辑运算测试(两操作数作与运算,仅修改标志位,不回送结果)TEST对两个参数(目标,源)执行AND逻辑操作,并根据结果设置标志寄存器,结果本身不会保存。TEST AX,BX与 AND AX,BX命令有相同效果语法TEST r/m,r/m/data影响标志C,O,P,Z,S(其中C与O两个标志会被设为0)注:标志位C:进位...转载 2020-01-31 10:34:20 · 727 阅读 · 0 评论 -
OD 为的Gray键是什么键?
原创 2020-01-29 20:23:10 · 699 阅读 · 0 评论 -
CEAA自动汇编脚本常用命令
LABEL(标签名):让标签名可以被当作一个地址使用。ALLOC(分配的内存标签名, 字节数):使用方式同LABEL,同时分配内存,指向被分配的内存地址。ALLOC(分配的内存标签名, 字节数, 优先考虑的内存区域):同上。DEALLOC(分配的内存标签名):释放使用ALLOC分配的内存空间。不管DEALLOC被放在脚本的什么地方,它永远是最后才被运行,且只在所有脚本分配的空间都被释放的时候...转载 2019-11-12 16:07:03 · 3800 阅读 · 0 评论 -
汇编中的lodsb和stosb、lodsd和stosd指令
汇编语言中,串操作指令LODSB/LODSW是块读出指令。具体操作是把SI指向的存储单元读入累加器,其中LODSB是读入AL,LODSW是读入AX中,然后SI自动增加或减小1或2位.当方向标志位DF=0时,则SI自动增加;DF=1时,SI自动减小。与LODSB/LODSW类似的,STOSB/STOSW是块写入指令,其具体操作是把累加器的内容写入到指向的存储单元中。其中STOSB是从AL中读入,...转载 2019-11-09 12:46:43 · 5228 阅读 · 0 评论 -
汇编中的STOSB与STOSD指令
该指令为单字符输出指令,调用该指令后,可以将累加器AL中的值传递到当前ES段的DI地址处,并且根据DF的值来影响DI的值,如果DF为0,则调用该指令后,DI自增1,如果DF为1,DI自减1.相当于:MOV ES:[DI],AL INC DI 或 MOV ES:[DI],AL DEC DI双字指令:STOSDSTOSD指令执行是不会跳转的…优先执行完此条指令才会执行其他指令。...转载 2019-11-09 12:44:51 · 3175 阅读 · 0 评论 -
汇编中的CLD指令
CLD指令功能:将标志寄存器Flag的方向标志位DF清零。在字串操作中使变址寄存器SI或DI的地址指针自动增加,字串处理由前往后。例如,以下三条指令执行后,SI自动加1,更新为0001H:CLDMOV SI,0000HLODSB ;将字串中的SI指针所指的一个字节装入AL又如,以下三条指令执行后,SI自动加2,更新为0102H:STDMOV SI,0100HLODSW ;将字...转载 2019-11-09 10:59:17 · 24957 阅读 · 0 评论 -
虚拟内存的简单介绍及PE文件的内存映射
虚拟内存的简单介绍计算机中的内存分为物理内存和虚拟内存,一般情况下,物理内存对于我们是不可见的,而且其原理也非常复杂,需要进入内核层(Ring0)才可能与物理内存打交道。通常我们所看到的全都是虚拟内存,如图2所示。图2 虚拟内存映射关系,为上图通过图2不难发现,系统为每一个正在运行的进程都分配了4GB的虚拟内存,在虚拟内存与物理内存之间是虚拟内存管理器控制着它们之间的调度,虚拟内存与进程...转载 2019-11-09 09:22:29 · 837 阅读 · 0 评论 -
汇编中的.REPEAT指令
指令名称.REPEAT 伪指令执行循环体,然后测试 .UNTIL 伪指令后面的运行时条件。格式.REPEAT statements.UNTIL condition举例下述语句使用 .REPEAT 伪指令显示数值 1 到 10:mov eax,0.REPEAT inc eax call WriteDec call Crlf.UNTIL eax ==...转载 2019-11-04 22:25:22 · 2526 阅读 · 0 评论 -
汇编中的PUSHAD和POPAD指令
PUSHAD 指令格式:PUSHAD功能:本指令将EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI 这8个32位通用寄存器依次压入堆栈,其中SP的值是在此条件指令未执行之前的值.压入堆栈之后,ESP-32–>ESP.POPAD 指令格式:POPAD功能:本指令依次弹出堆栈中的32位字到 EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX中,弹出...原创 2019-11-02 16:05:17 · 49968 阅读 · 0 评论 -
汇编中的MOVZX 指令
格式:MOVZX OPD,OPS功能:将8位或16位的OPS零扩展为16位或32位,在传给OPD.说明:所谓零扩展,就是把新扩展的高位字节填0,这可以保证无符号数扩展后还是原来的无符号数.至于什么时候用符号扩展,什么时候用零扩展,视程序中是用带符号数还是无符 号数操作而定.样列:movzx edi,bx ; movzx 扩展高位为0,并把其赋值到edi...原创 2019-11-02 10:25:19 · 6397 阅读 · 0 评论 -
汇编中的ASSUME的使用
assume 最典型的用法:是指明变量与段寄存器的联系,比如 assume ds:data,它是告诉编译器以后所有在data段中定义的变量寻址时,使用ds作为段地址,但是它不对程序作任何事,比如你必须自己对ds赋值,这也就是为什么dos下典型的汇编段如下:.data .........code ........ assume cs:code,ds:datastart: ........转载 2019-11-01 16:42:55 · 2976 阅读 · 0 评论 -
汇编中的@@, JMP @F, JMP @B 是什么意思
在汇编语言的程序中,标号,总是免不了的。程序编写的长了,标号,就要有很多。但是,在一个程序中,标号,是不能重名的。于是,在编程时,对于标号的命名,往往要费些心思。@@,在汇编语言中,是当作标号用的。而且,这个标号,还可以重复使用。这不就方便多了吗?标号,有时是作为一段程序的名称。其最基本的功能就是:作为转移指令、调用指令的目的地。可是,如果在程序中,有了很多很多的 @@,可怎么区...转载 2019-11-01 12:56:00 · 7100 阅读 · 0 评论 -
汇编指令中的LOCAL指令
LOCAL是定义局部变量用的.用这个关键字是为了让编译器给变量分配内存.格式是:LOCAL 变量名:变量类型如:wc:WNDCLASSEX ;定义一个变量名字是wc,类型是窗体类,meg:MSG ;定义一个变量名字是meg,类型是消息变量...转载 2019-10-31 12:45:18 · 6344 阅读 · 0 评论 -
汇编中的proc指令
proc是子程序定义伪指令, far是该子程序的属性,决定调用程序和子程序是否在同一代码段如下:为子程序定义及说明,子程序名 PROC NEAR ( 或 FAR )xxxxxx具体代码ret子程序名 ENDP子程序名为符合语法的标识符NEAR属性(段内近调用): 调用程序和子程序在同一代码段中,只能被相同代码段的其他程序调用;FAR属性(段间远调用): 调用程序和子程序不在同一代...转载 2019-10-31 12:27:37 · 23710 阅读 · 0 评论 -
[汇编语言]变量的定义
1. 什么是变量(Variable)变量可以随着程序的运行发生变化的量,保存在主存空间中,变量需要事先定义才能使用,变量本质上就是主存单元里的数据,主存是可读可写的,所以变量可以发生改变。变量有别于常量,常量是写在指令里的,不占主存空间。2. 变量定义的格式变量名 伪指令助记符 变量初值表变量名:变量名是用户标识符,用户定义的,本质上是首元素的逻辑地址,有了变量名后,在其后的程序中就可以...转载 2019-10-31 12:16:50 · 3353 阅读 · 0 评论 -
汇编 db,dw,dd的区别
db定义字节类型变量,一个字节数据占1个字节单元,读完一个,偏移量加1dw定义字类型变量,一个字数据占2个字节单元,读完一个,偏移量加2dd定义双字类型变量,一个双字数据占4个字节单元,读完一个,偏移量加4...转载 2019-10-31 12:04:37 · 2022 阅读 · 0 评论 -
汇编: 以实例分析 INVOKE 和 call区别
例子:我先把框架程序放在下面,然后我们再向里面加东西。.386.model flat, stdcall.data.codestart:end start应用程序的执行是从 END 定义的标识符后的第一条语句开始的。在上面的框架程序中就是从 START 开始。程序逐条语句执行一直到遇到 JMP,JNE,JE,RET 等跳转指令。这些跳转指令将把执行权转移到其他语句上,若程序要退出 ...转载 2019-10-30 12:04:31 · 1358 阅读 · 0 评论 -
PE文件中的DllCharacteristics属性
#define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040 // DLL can move.#define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 0x0080 // Code Integrity Image#define IMAGE_DLLCHARACTER...原创 2019-10-11 22:08:45 · 2974 阅读 · 0 评论 -
WINHEX使用技巧(从文件中复制出十六进制数据)
从文件中复制出十六进制数据现在打开一个PE文件如下:当我们选中数据据后,直接点击ctrl+c,ctrl+v后,发现并不是我们想要的16进制数数,而是相应的ascll码对应的字母或者直接没有任何反应,我们可以这样做。共三步第一步第二步第三步:OK,现在可以复制出16制制数据了。参考链接:https://blog.youkuaiyun.com/chengdong1314/article...原创 2019-09-09 15:36:14 · 9273 阅读 · 4 评论 -
WindowsAPI解析IAT地址
#include <stdio.h>#include <windows.h>int main(int argc,char* argv[]){ /* typedef struct _IMAGE_IMPORT_DESCRIPTOR { union{ DWORD Characteristics; ...转载 2019-09-18 11:45:34 · 445 阅读 · 0 评论 -
OD保存修改后的数据到EXE
特别重要的两点:如果修改了代码,就在代码处保存。如果修改了数据,就在数据库保存。我就是在这点上载了跟头的。 具体步骤:如果修改代码数据,那么就在代码区右击 -> 复制到可执行文件 -> 选择。在新弹出的窗口右击 -> 备份 -> 保存数据到文件 -> 弹出对话框进行保存。如果修改了数据,那么在数据区进行操作,同上所述。...原创 2019-10-01 18:03:41 · 11272 阅读 · 5 评论 -
汇编中的test和cmp指令
看过破解教程,都知道test,cmp是比较关键,来分析一下它们究竟是怎么比较首先看看:状态寄存器(即标志寄存器)PSW(Program Flag)程序状态字(即标志)寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示:条件码:①OF(Overflow Flag)溢出标志,溢出时为1,否则置0.标明一个溢出了的计算,如:结构和目标不匹配.②SF(Sign Fl...转载 2019-10-03 09:51:04 · 2155 阅读 · 0 评论 -
去VB程序NAG窗口方法-4C法
去除VB程序的程序启动时的NAG窗口,基本原理就是寻找到每珍具窗口的启动顺序,再改变窗口的启顺序就可以了。具体实列如下:当程序启动时,会出现一个NAG窗口,如下所示:OD载入程序:EP处VB程序有个特点-入口点处都是一个PUSH指令,然后一个CALL指令,看JMP 后面跟的MSVBVM50,应该是VB5.0编写的。(如果不是这种情况的话,那么该程序可能被加过壳), PUSH将要压入堆栈的...转载 2019-10-07 09:33:59 · 797 阅读 · 0 评论 -
VB程序破解常用函数
VB程序破解常用函数 分析VB程序最大的困难是它的API是VB特有的,且字符串查找并不是很容易这里记录一些VB程序的常见函数数据类型转换:a) __vbaI2Str 将一个字符串转为8 位1个字节的数值形式(范围在 0 至 255 之间) 或2个字节的数值形式(范围在 -32,768 到 32,767 之间)。b)__vbaI4Str 将一个字符串转为长整型(4个字节)的数...转载 2019-10-07 09:47:27 · 763 阅读 · 0 评论 -
利用01Editor手工加壳
主要工具: 010Editor、LordPE、OD实验平台:win10 64位实现功能:加壳。加壳原理要想弄明白怎么对PE文件加壳,首先需要对PE文件比较熟悉,而最快的熟悉PE文件的方法就是自己写一个PE解析工具和写壳了。先只用工具010Editor完成一个手工加壳,那么就明白加壳的原理了。首先进行手工加壳先用VS随便生成一个exe文件,我们使用它进行实验。可以先使用010Edit...转载 2019-10-08 08:41:58 · 2292 阅读 · 1 评论 -
ESP 与 EBP
ESP(Extended Stack Pointer)为扩展栈指针寄存器,是指针寄存器的一种,用于存放函数栈顶指针。EBP(Extended Base Pointer),扩展基址指针寄存器,也被称为帧指针寄存器,用于存放函数栈底指针。...转载 2019-10-11 12:26:41 · 462 阅读 · 0 评论 -
RAX,eax,ax,ah,al 关系
|63..32|31..16|15-8|7-0| |AH.|AL.| |AX.....| |EAX............||RAX...................|转载 2019-08-27 21:26:45 · 9199 阅读 · 2 评论
分享