eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器.如果用C语言来解释,可以把这些寄存器当作变量看待. 比方说:add eax,-2 ;   //可以认为是给变量eax加上-2这样的一个值. 这些32位寄存器有多种用途,但每一个都有“专长”,有各自的特别之处. EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器. EBX 是"基地址"(bas…
一般寄存器:AX.BX.CX.DXAX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器 索引暂存器:SI.DISI:来源索引暂存器,DI:目的索引暂存器 堆叠.基底暂存器:SP.BPSP:堆叠指标暂存器,BP:基底指标暂存器 EAX.ECX.EDX.EBX:為ax,bx,cx,dx的延伸,各為32位元ESI.EDI.ESP.EBP:為si,di,sp,bp的延伸,32位元 eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU…
位的寄存器.如果用C语言来解释,可以把这些寄存器当作变量看待. 比方说:add eax,-2 ;   //可以认为是给变量eax加上-2这样的一个值. 位寄存器有多种用途,但每一个都有"专长",有各自的特别之处. EAX 是"累加器"(accumulator),它是很多加法乘法指令的缺省寄存器. EBX 是"基地址"(base)寄存器,在内存寻址时存放基地址. ECX 是计数器(counter),是重复(REP)前缀指令和LOOP指令的内定计数器…
知识点: 寄存器EAX 寄存器AX 寄存器AH 寄存器AL 一.EAX与AX,AH,AL关系图 一格表示一字节 #include <Windows.h> int _tmain(int argc, _TCHAR* argv[]) { DWORD iEax; WORD iAx; BYTE iAh,iAl; printf("\n"); __asm { mov eax,0x87654321 mov iEax,eax mov iAx,ax mov iAh,ah mov iAl,al…
注意:在计算加法时,实在32位的累加器上进行,并注意类型之间的转换,数据的截取问题 一般寄存器:AX.BX.CX.DXAX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器 索引暂存器:SI.DISI:来源索引暂存器,DI:目的索引暂存器 堆叠.基底暂存器:SP.BPSP:堆叠指标暂存器,BP:基底指标暂存器 EAX.ECX.EDX.EBX:為ax,bx,cx,dx的延伸,各為32位元ESI.EDI.ESP.EBP:為si,di,sp,bp的延伸,32位元 eax, ebx, e…
一般寄存器:AX.BX.CX.DXAX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器 索引暂存器:SI.DISI:来源索引暂存器,DI:目的索引暂存器 堆叠.基底暂存器:SP.BPSP:堆叠指标暂存器,BP:基底指标暂存器 EAX.ECX.EDX.EBX:為ax,bx,cx,dx的延伸,各為32位元ESI.EDI.ESP.EBP:為si,di,sp,bp的延伸,32位元 eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU…
1 转自:http://www.cnblogs.com/vento/archive/2013/02/09/2909579.html IDA Pro是一款强大的反汇编软件,特有的IDA视图和交叉引用,可以方便理解程序逻辑和快速定位代码片断,以方便修改. IDA视图 示例程序 下面会通过修改示例程序的输出字符串,来讲解如何使用IDA Pro. #include main() { int n; scanf ("%d",&n); if (n > 0) printf("a…
IDA Pro使用技巧及大杂烩 IDA Pro基本简介 IDA加载完程序后,3个立即可见的窗口分别为IDA-View,Named,和消息输出窗口(output Window). IDA图形视图会有执行流,Yes箭头默认为绿色,No箭头默认为红色,蓝色表示默认下一个执行块. 在寄存器窗口中显示着每个寄存器当前的值和对应在反汇编窗口中的内存地址.函数在进入时都会保存堆栈地址EBP和ESP,退出函数时恢复. 选择菜单Debugger下的Start process(也可以按F9键)来开始调试.调试会让程…
CPU的核数关系: 总核数 = 物理CPU个数 X 每颗物理CPU的核数 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 Linux中查看CPU数: # 查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l # 查看每个物理CPU中core的个数(即核数) cat /proc/cpuinfo| grep "cpu cores"| uniq # 查看逻辑CPU的…
HLA高级汇编语言环境的搭建与设置 我的操作系统:WINDOWS7 需要下载的东西:MASM32:http://www.masm32.com/masmdl.htm  HLA:http://webster.cs.ucr.edu/ MASM32和HLA你可以随意安装在任何目录,最好不要安装在带空格的目录下.然后复制MASM32\bin目录下的ml.exe, ml.err, link.exe, mspdb50dll到hla目录下.然后把hla目录加入到系统的环境变量中就OK啦!然后编辑环境我们就随便选…
4.3  和数据相关的操作符和伪指令 操作符和伪指令并非机器可执行的指令,相反,它们是由汇编器进行解释的.开发者可以使用一系列的MASM操作符或伪指令获取数据的地址以及大小等特征信息: OFFSET操作符返回一个变量相对于其所在段开始的偏移. PTR 操作符允许重载变量的默认尺寸. TYPE操作符返回数组中每个元素的大小(以字节计算). LENGTHOF操作符返回数组内元素的数目. SIZEOF操作符返回数组初始化时占用的字节数. 除此之外,LABEL伪指令还提供了对同一变量重新定义不同尺寸属性…
-------------------------------Olly脚本插件v0.92 制作: SHaG文档汉化:ZMWorm[CCG][TT]E-Mail:TranslationTeam[at]126.Com2004年08月12日初稿------------------------------- 1. 关于 OllyScript2. 目前情况2.1 v0.92最新更新3. 文档3.1 语言概述3.1.1 保留变量3.1.2 指令3.2 标签3.3 注释3.4 菜单4. 嵌入其他的插件5. 如…
题目:http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=39 下载得到ElfCrackMe1文件,直接用IDA打开. 最早想到的是 function一路F5下去.可以看到关键的main函数 int __cdecl main(int argc, const char **argv, const char **envp) { int v3; // ebx@6 const char **v4; // rdx@22 __int6…
故事背景,一个正在c语言的家伙,问我++i 和 i++的问题,我当时因为要去上课没给他说,正好今晚有空就测试了一下如下代码: 编译环境:VS2010  语言:C++ #include <iostream> using namespace std; int main(void) { ; ; int c; c = a++; c = ++b; ; } 一.我们站在汇编的角度来说明一下问题: 可能你没学过汇编,不过没关系,我们先来科普一下汇编基本知识.(我自己也不会汇编,只是能看懂一些简单汇编代码)…
故事背景,一个正在c语言的家伙,问我++i 和 i++的问题,我当时由于要去上课没给他说,正好今晚有空就測试了一下例如以下代码: 编译环境:VS2010  语言:C++ #include <iostream> using namespace std; int main(void) { ; ; int c; c = a++; c = ++b; ; } 一.我们站在汇编的角度来说明一下问题: 可能你没学过汇编,只是没关系,我们先来科普一下汇编基本知识.(我自己也不会汇编,仅仅是能看懂一些简单汇编代…
声明: 1.本指令集搜集自各论坛.博客,欢迎补充讨论 OD脚本指令集 在后面的文档中, “源操作数” 和 “目的操作数”表示以下含义: - 十六进制常数,既没有前缀也没有后缀. (例如:是00FF, 而不是 0x00FF 和 00FFh的形式)   十进制常数,在后缀中加点. (例如:100. 128.也可以是浮点数128.56,浮点数只能保留小数点后2位) - 变量,这个变量必须在使用前用Var进行定义 - 32位寄存器 (EAX, EBX, ECX, EDX, ESI, EDI, EBP,…
 64位BASM学习随笔(一) Delphi的BASM一直是我最喜爱的内嵌汇编语言,同C/C++的内联汇编相比,它更方便,更具灵活性,由于C/C++的内联汇编仅仅能是或插入式的汇编代码,函数花括号背后隐藏的函数框架,限制了汇编代码的发挥,如不管有无參数和局部变量,总是有个栈框架,更烦人的是仅仅要你在函数中使用了esi,edi,ebx寄存器.就自己主动给你保存和恢复,使得这些寄存器没法在函数之间传递信息等.而Delphi的BASM能够是插入式的汇编代码,也但是全然的汇编方法.在全然的汇编方法下…
@date: 2016/10/14 <逆向工程核心原理>笔记 记录书中较重要的知识,方便回顾 ps. 因有一些逆向基础,所以我本来就比较熟悉的知识并未详细记录 第一章 关于逆向工程 目标,激情,谷歌 QAQ 第二章 逆向分析Hello World程序 VS2010 x86 入口点 Entry Point call 0040270c jmp 0040104F 程序开头会有一段VC的启动函数(Stub Code) OD的快捷键 ctrl+f2, f8, f7, f9, ctrl+f9(exec t…
-------------------------------ODbgScript original pluginhttp://github.com/odbgscript------------------------------- 1. About OllyScript and ODbgScript2. Status 2.1 What's new?3. Documentation 3.1 Language 3.1.1 Reserved variables 3.1.2 Commands 3.2…
在公司开发的RT下没法使用C库,并且替代库函数没有几个,需要用到setjmp和longjmp函数,没办法,只能自己想办法了,上sourceforge淘换到一个小日本的工程,提供这两个函数的替代源码,名字叫libcont,下载下来发现实在Linux下编译的,查看Makefile文件,使用了GCC和NASM,郁闷了,但是实在找不到windows下的代码了,看看能不能移植到VC下吧! 千辛万苦,本想修改代码移植到VC下,无奈汇编格式差异较大,后经同事提醒,在VS2005下调用NASM总算把汇编嵌进来了…
这节描述了IA-32架构的任务管理功能,只有当处理器运行在保护模式的时候,这个功能才是有效的,这节的侧重点在32位任务和32位TSS结构上,关于16位的任务和16位TSS结构,请看7.6节,关于64位模式中,具体任务管理的信息,请看7.7节 7.1 任务管理概述 任务是处理器可以调度,执行和暂停的一个工作单元,它可以执行一个程序,任务,进程,操作系统服务程序,中断例程,异常例程,内核实用程序 32位架构提供了一种机制,可以保存任务状态,调度要执行的任务,并且切换一个任务到另一个任务,当操作系统位…
VC调试器高级应用----WATCH窗口篇 一.格式化数据和表达式赋值语句. 常用变量格式化符(表达式的值后跟逗号,接格式化符,如"(int)0xFFFF,d"):d  :有符号的十进制数.u  :无符号的十进制数.o  :无符号的八x,X:十六进制数.d,i,u,o,x,X的长前缀或短前缀.f  :有符号浮点数.e  :有符号的科学计数法.g  :有符号的浮点或有符号的科学计数法,用其中较短的一个.c  :单字符.s  :字符串.su :双字节字符串.st :双字节字符串或ANSI字…
Pseudoregister Description @ERR Last error value; the same value returned by the GetLastError() API function @TIB Thread information block for the current thread; necessary because the debugger doesn't handle the "FS:0" format @CLK Undocumented…
This document is the user manual for the Yasm assembler. It is intended as both an introduction and a general-purpose reference for all Yasm users. 1. Introduction Yasm is a BSD-licensed assembler that is designed from the ground up to allow for mult…
简介 让我们从我写这篇文章的原因开始.一天,一个同事让我帮他调试他遇到的问题.所以我看着他在输入代码,这时我注意到下面一行: int test = GetLastError(); 他这样做是因为他想知道错误代码,如果之前的函数失败了.他每次想知道错误代码就加上这一行.我建议他删除所有这些行并在他的监视窗口中使用@ERR伪寄存器.他不知道这是什么,在办公室里到处打听,很多人都不知道,所以我为从来没有听说过伪寄存器的人写了这篇文章. 什么是伪寄存器? 伪寄存器不是当前的硬件寄存器,而是像硬件寄存器一…
第一章-对程序错误的处理 在开始介绍Microsoft Windows 的特性之前,必须首先了解 Wi n d o w s的各个函数是如何进行错误处理的. 当调用一个Wi n d o w s函数时,它首先要检验传递给它的的各个参数的有效性,然后再设法执行任务.如果传递了一个无效参数,或者由于某种原因无法执行这项操作,那么操作系统就会返回一个值,指明该函数在某种程度上运行失败了.表 1 - 1列出了大多数Wi n d o w s函数使用的返回值的数据类型. 一个Wi n d o w s函数返回的错…
转载时格式有问题,大家看原版吧! 作者:EwenWanW  来源:CSDN  原文:https://blog.csdn.net/xiaoxiaowenqiang/article/details/80530438  版权声明:本文为博主原创文章,转载请附上博文链接! --------------------- 计算机系统结构cpu内部: 1. PC Program Counter    指令指针寄存器    指向下一条指令的地址    EIP(X86-32)或者    RIP(X86-64) 2.…
▶ 书中前五章的几个小程序,基本的运算操作,使用了作者的库 Irvine32 和 Irvine64(一开始以为作者网站过期了,各网站上找到的文件大小都不一样,最后发现是要搭梯子 Orz,顺利下载).注意编译前将相关的库文件放到 “项目属性 → 链接器 → 输入 → 附加依赖项” 中. ● 代码,整数数组求和 . .model flat,stdcall .stack ExitProcess PROTO, dwExitCode: dword .data array DWORD 10000h, 200…
在说正题之前,我们先看2个概念. 1.指令集架构(ISA) ISA 的全称是 instruction set architecture,中文就是指令集架构,是指对程序员实际"可见"的指令集,包含了程序员编写一个能正确运行的二进制机器语言程序的所有信息,涉及到指令. I/O 设备等.例如 Intel 的 IA-32.Intel 64.ARM 的 ARMv7.ARMv8 等等. 2.微架构 微架构(Microarchitecture)又称为微体系结构/微处理器体系结构.是将一种给定的指令集…
本文整理自多材料源,感谢原址分享,请查看末尾Url I, 汇编语言分类: 汇编语言和CPU息息相关,但是不能把汇编语言完全等同于CPU的机器指令.不同架构的CPU指令并不相同,如x86,powerpc,arm各有各的指令系统:甚至同一种架构的CPU有几套指令集,典型的如arm除了有32位的指令集外,还有一套16位的thumb指令集.但是作为开发语言的汇编,本质上是一套语法规则和助记符的集合,它可以包容不同的指令集.如果从CPU体系来划分,常见的汇编有两种:IBM PC汇编和ARM汇编. IBM…