加密与解密(OD使用笔记&简单实践_②)
来源:互联网 发布:剑灵龙男捏脸数据 编辑:程序博客网 时间:2024/06/13 19:48
无论是对待一种技术还是一样工具,都要始终拥有探究、掌握其原理的欲望与热情,只用一样东西不知晓它的道理不可谓高明。只知其然不知其所以然,此非为王道也。格物穷理,道友共勉。
推荐视频教程:鱼C工作室_加密与解密系列_OD使用教程
本文章只是作为本人的笔记,会偷挖一些大神大牛们文章里的知识点,请见谅~
#####################################华丽丽的栅栏分割#####################################
一些理论知识点的累积
关于寄存器:
推荐视频教程:鱼C工作室_加密与解密系列_OD使用教程
本文章只是作为本人的笔记,会偷挖一些大神大牛们文章里的知识点,请见谅~
#####################################华丽丽的栅栏分割#####################################
一些理论知识点的累积
关于寄存器:
寄存器就好比是CPU身上的口袋,方便CPU随时从里边拿出需要的东西来使用。
学过8086汇编的基本上都能看得懂,因为8086汇编中寄存器是16位寄存器,Win32下都是32位寄存器,虽然多了16位但是寄存器的功能基本上没有改变,只是扩展了16位。
关于标志寄存器的各标志位:
所有的标志位归置于一个标志寄存器,其值要么是0要么是1;
主要看ZF零标志位、OF溢出标志位、CF进位标志位。
Z标志位(0标志),这个标志位是最常用的,运算结果为0时候,Z标志位置1,否则置0。
O标志位(溢出标志),在运行过程中,如操作数超出了机器能表示的范围则称为溢出,此时OF位置1,否则置0。
C标志位(进位标志),记录运算时从最高有效位产生的进位值。例如执行加法指令时,最高有效位有进位时置1,否则置0。
关于栈:关于栈来说,只要记住FILO(即Fisrt In Last Out的性质)以及其存储方式为地址逆向增长,栈底为大地址,栈顶为小地址;
关于CALL指令:
一般调用其他函数都是用CALL指令,CALL是一个高级的汇编指令,背后由push和jmp两条指令组合成;
先push eip再Call xxx;
先将当前的地址保存,然后跳转到函数或过程的地址;
call有以下几种方式:
call 404000h ;直接跳到函数或过程的地址
call eax ;函数或过程地址存放在eax
call dword ptr [eax] ;取该寄存器的值作为地址进行跳转
call dword ptr [eax+5] ;取该寄存器的值作为地址加上5之后进行跳转
call dword ptr [<&API>] ;执行一个系统API
关于系统API:
实际上就是系统给程序员提供的一些函数接口。
Windows应用程序运行在Ring 3级别,Ring 0为最高级别,而Ring 3最最低级别,操作系统不允许我们直接对内存进行操作,我们只有利用Ring 0级才行。这个时候我们利用API间接的进行内核操作,因为系统只信任自己提供的函数,所以我们要通过API才能实现对内核的操作。
关于move指令:
搬移指令,mov ax,bx 将bx的内容赋值给ax;
movs/movsb/movsw/movsd edi,esi:这些变体按串/字节/字/双字为单位将esi寄存器指向的数据复制到edi寄存器指向的空间。
关于系统API:
实际上就是系统给程序员提供的一些函数接口。
Windows应用程序运行在Ring 3级别,Ring 0为最高级别,而Ring 3最最低级别,操作系统不允许我们直接对内存进行操作,我们只有利用Ring 0级才行。这个时候我们利用API间接的进行内核操作,因为系统只信任自己提供的函数,所以我们要通过API才能实现对内核的操作。
关于move指令:
搬移指令,mov ax,bx 将bx的内容赋值给ax;
movs/movsb/movsw/movsd edi,esi:这些变体按串/字节/字/双字为单位将esi寄存器指向的数据复制到edi寄存器指向的空间。
movsx符号位扩展,byte->word,word->dword (扩展后高位全用符号位填充),然后实现mov。
movzx零扩展,byte->word,word->dword(扩展后高位全用0填充),然后实现mov。
关于cmp指令:
cmp指令格式:cmp dest, src
关于cmp指令:
cmp指令格式:cmp dest, src
cmp指令比较dest和src两个操作数,并通过比较结果设置C/?O/Z标志位;
cmp eax, ebx ;如果相等,Z标志位置1,否则0; cmp eax, [404000] ;将eax和404000地址处的dword型数据相比较并同上置位;
cmp [404000], eax ;同上;
关于逻辑运算:
逻辑与、逻辑或、异或、逻辑非,很基础的内容不谈了。
关于Test指令:
test指令格式:test dest, src
关于逻辑运算:
逻辑与、逻辑或、异或、逻辑非,很基础的内容不谈了。
关于Test指令:
test指令格式:test dest, src
这个指令和and指令一样,对两个操作数进行按位的‘与’运算,唯一不同之处是不将‘与’的结果保存到dest;
即本指令对两个操作数的内容均不进行修改,仅是在逻辑与操作后,对标志位重新置位;
大多数出现这个指令都是test eax,eax(因为eax大多数时候都是作为返回值存储的地方),如果eax的值为0,则Z标志位置1;
关于条件跳转指令:
大多数出现这个指令都是test eax,eax(因为eax大多数时候都是作为返回值存储的地方),如果eax的值为0,则Z标志位置1;
关于条件跳转指令:
0 0
- 加密与解密(OD使用笔记&简单实践_②)
- 加密与解密(OD使用笔记&简单实践_①)
- 加密与解密(OD使用笔记&简单实践_③)
- 加密与解密(PE结构笔记_概述)
- 加密与解密笔记
- 加密与解密(PE结构笔记②)
- 《加密与解密》笔记(一)
- 《加密与解密》笔记(二)
- 《加密与解密》笔记(三)
- 《加密与解密》笔记三(一)
- 《加密与解密》笔记三(二)
- 《加密与解密》笔记四(一)
- 《加密与解密》笔记四(二)
- 《加密与解密》笔记四(三)
- 《加密与解密》笔记四(四)
- 《加密与解密》笔记五(一)
- 《加密与解密》笔记五(二)
- 《加密与解密》笔记六(一)
- nyoj 68三点顺序 【几何】
- IOS中Block小结
- Make系统变量
- 【STL】STL之顺序容器:vector、deque、list、forward_list、array、string
- Android数字游戏之数独(自动随机生成不同难度的数独)
- 加密与解密(OD使用笔记&简单实践_②)
- leetcode Add Digits
- VIBE背景建模算法之C语言实现
- 加密与解密(OD使用笔记&简单实践_③)
- openjudge 马走日
- 加密与解密(破解总思想与基本手段)
- IAR出现Copy protection check, No valid license found for this product的解决办法
- iOS 第三方库冲突的处理
- VB/VC/易语言/Delphi 破解常见思路