汇编编程学习
cosmoslife
多媒体编程、网络编程、系统编程、网络安全编程
展开
-
Intel指令解析规则,反汇编引擎工作原理
一、Intel保护模式、实地址模式和虚拟8086模式指令格式(x86) 图在Intel手册Volume2 2.1章节 1.1)Instruction Prefixes:指令前缀,可选项,每个前缀一个字节,可选0个前缀到4个不等;指令前缀分为四组,每组都允许设置指定的前缀代码。 Group 1:锁定和重复前缀。 Group 2:段...原创 2020-04-09 10:27:46 · 1248 阅读 · 0 评论 -
Windows X64汇编入门
最近断断续续接触了些64位汇编的知识,这里小结一下,一是阶段学习的回顾,二是希望对64位汇编新手有所帮助。我也是刚接触这方面知识,文中肯定有错误之处,大家多指正。文章的标题包含了本文的四方面主要内容:(1)Windows:本文是在windows环境下的汇编程序设计,调试环境为Windows Vista 64位版,调用的均为windows API。(2)X64:本文讨论的是x64汇编,这转载 2013-06-11 13:29:20 · 2410 阅读 · 0 评论 -
开始进行 64 位 Windows 系统编程之前需要了解的所有信息
http://www.microsoft.com/china/MSDN/library/Windev/64bit/issuesx64.mspx?mfr=true开始进行 64 位 Windows 系统编程之前需要了解的所有信息发布日期: 2006-5-30 | 更新日期: 2006-5-30本文讨论:•64 位版本 Windows转载 2013-06-11 13:44:45 · 700 阅读 · 0 评论 -
ml.exe编译器常用选项及命令行用法
不同版本的masm在用法上有很大不同,这里所指的是masm6.14及以上版本的编译器ml.exe的命令行用法。ml [/选项] 汇编源文件列表 [/link 链接选项]例如 ml /c /coff /Cp Test.asm (多个选项之间一定要加空格)下边是ml的选项/AT 允许支持微型内存模式。对与.COM文件格式的要求互相冲突的代码给出错误信息。注意该选项和转载 2013-06-21 14:39:39 · 7987 阅读 · 1 评论 -
BIOS在内存中加载中断向量表和中断服务程序
BIOS程序被固化在计算机主机板上的一块很小的ROM芯片里,一般情况下不同主机板所有的BIOS是不同的,但就启动部分而言,各种类型的BIOS的基本原理却是大致相同的。以一个8K的BIOS为例,其所占的地址段为0xFE000~0xFFFFF。此时CS:IP已经指向了0xFFFF0这个位置,BIOS就可以启动了。之后BIOS会检测显卡,内存等等硬件。转载 2013-06-25 16:25:30 · 1651 阅读 · 0 评论 -
扩展int 13H/调用规范 /大硬盘读写中断/FAT NTFS文件结构
第一部分 简 介一. 硬盘结构简介1. 硬盘参数释疑到目前为止,人们常说的硬盘参数还是古老的 CHS (Cylinder/Head/Sector)参数。那么为什么要使用这些参数,它们的意义是什么?它们的取值范围是什么?很久以前(long long ago ...),硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘。也就是硬盘盘片的每一条磁道都具有相同的扇区数。转载 2013-06-26 14:22:31 · 1438 阅读 · 0 评论 -
8088 汇编速查手册(转集)
参考:http://www2.zzu.edu.cn/qwfw/hbyycai/courses/index.asp参考:http://blog.csdn.net/jiaguoxinzhi/archive/2008/09/13/2924898.aspx参考:http://blog.csdn.net/jiaguoxinzhi/archive/2008/09/13/2924869.aspx转载 2013-06-26 14:26:55 · 678 阅读 · 0 评论 -
汇编指令: 根据www.olanguage.org提供的汇编资料整理. 转自万一
名称 功能 操作数操作码模数寄存器1寄存器2或内存位移量立即数符号方向芯片型号16位32位AAA调整加无$37无无无无无无无8086无无AAD调整除无$D50A无无无无无无无8086无无AA转载 2013-06-26 14:35:22 · 1826 阅读 · 0 评论 -
常见寄存器名称及作用(M~Z)
名称作用备注MCEMCE=1则允许及其检查异常machine-chack enable(包含于CR4中)MPMP=1,向80x86程序表示系统中有协处理器monitor enable(包含于CR0中)NENE=1,浮点运算部件异常,发出异常中断10Hnumeric error(包含于CR0中)NT NT=1表示当前执行的任务嵌套于另一个任务中,NT=0则无嵌套nested task(802转载 2013-04-10 13:41:38 · 1796 阅读 · 0 评论 -
汇编中有符号与无符号数的区分
一、只有一个标准!在汇编语言层面,声明变量的时候,没有 signed 和 unsignde 之分,汇编器统统,将你输入的整数字面量当作有符号数处理成补码存入到计算机中,只有这一个标准!汇编器不会区分有符号还是无符号然后用两个标准来处理,它统统当作有符号的!并且统统汇编成补码!也就是说,db -20 汇编后为:EC ,而 db 236 汇编后也为 EC 。这里有一个小问题,思考深入的转载 2013-04-10 13:36:10 · 593 阅读 · 0 评论 -
ml64.exe完整命令行参数解释
ml64.exe完整命令行参数解释ml64是 x64 平台程序的宏汇编器,现列出全部命令行参数解释,希望对大家学习WIN64汇编有用./Bl Use alternate linker/Bl filename 选择其他的连接器 /c Assemble without linking/c 只编译,不连接 /Cp Preserve case of user i转载 2013-04-08 10:20:40 · 5773 阅读 · 0 评论 -
32位CPU寄存器和汇编指令
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。转载 2013-03-15 11:07:10 · 698 阅读 · 0 评论 -
x64 调用约定,参数传递以及函数返回值
从 x86 到 x64 的两个重要修改是:64 位寻址功能和一组平面的用于常规使用的 16 个 64 位寄存器。对于展开的寄存器集,x64 仅使用 __fastcall 调用约定和基于 RISC 的异常处理模型。__fastcall 模型使用寄存器(对前四个变量)和堆栈帧传递其他参数。调用约定 x64 应用程序二进制接口 (ABI) 是一个 4 寄存器快速调用调用约定,具有用于转载 2013-04-08 12:32:29 · 14053 阅读 · 0 评论 -
MASM64里怎么调用带多个参数的自定义的子程序?
请看这里http://www.x64asm.com/viewthread.php?tid=28CreateWindowExA函数就是超过4个参数的.四个参数后的其他参数依次压入堆栈,其中看到64位下长度为8指针.如: ;开始创建窗口 sub rsp,84H xor rcx,rcx转载 2013-04-08 12:45:00 · 1526 阅读 · 0 评论 -
[MASM] 函数的标准语法
函数名 PROC USES RBX RDI RSI R12 R13 R14 R15 @Param1:QWORD,@Param2:QWORD,@Param3:QWORD,@Param4:QWORD LOCAL VER1:QWORD LOCAL VAR2:QWORD ......转载 2013-04-08 10:15:24 · 1199 阅读 · 0 评论 -
[原创]Win64微软汇编语言入门范例
;--------------------------------------------------------------------------------;程序设计:**·旖旎;版权所有:旖旎软件 2003-2009;禁止任何修改与盗版;请访问64位汇编语言官方站 [url]Http://Www.X64Asm.Com[/url];电子邮件 [email]Admin@X6转载 2013-04-08 10:18:46 · 1829 阅读 · 0 评论 -
x64异常处理
;--------------------------------------------------------------------------------;请访问64位汇编语言官方站 [url]Http://Www.X64Asm.Com[/url];电子邮件 [email]Jxc25@X64Asm.Com[/email] Tel:130********;------------转载 2013-04-08 10:22:04 · 1701 阅读 · 0 评论 -
x64 寄存器使用
x64 结构提供了 16 个通用寄存器(以后称为整数寄存器),以及 16 个可供浮点使用的 XMM 寄存器。易失寄存器是由调用方假想的临时寄存器,并要在调用过程中销毁。非易失寄存器需要在整个函数调用过程中保留其值,并且一旦使用,则必须由被调用方保存。下表说明了每种寄存器在整个函数调用过程中的使用方法:Register状态请使用RAX易失的返回转载 2013-04-08 12:16:31 · 3013 阅读 · 0 评论 -
Windows 中 FS 段寄存器 V2
代码运行在 RING0 (系统地址空间)和 RING3 (用户地址空间)时, FS 段寄存器分别指向 GDT( 全局描述符表 ) 中不同段:在 RING3 下, FS 段值是 0x3B (这是 WindowsXP 下值;在 Windows2000 下值为 0x38 。差别就是在 XP 下 RPL=3 );运行在 RING0 下时, FS 段寄存器值是 0x30 。下面以 XP 为例说说。转载 2012-08-28 17:01:09 · 1345 阅读 · 0 评论 -
控制寄存器和系统地址寄存器
[-]一控制寄存器保护控制位协处理器控制位CR2和CR3二系统地址寄存器全局描述符表寄存器GDTR局部描述符表寄存器LDTR中断描述符表寄存器IDTR任务状态段寄存器TR 80386控制寄存器和系统地址寄存器如下表所示。它们用于控制工作方式,控制分段管理机制及 分页管理机制的实施。控 制寄存器CRxB转载 2013-06-26 14:28:18 · 761 阅读 · 0 评论 -
EGA/VGA显示卡编程
一、VGA卡显示模式模式类型分辨率颜色数可用显示卡显示地址00H字符40×2516CGA EGA MCGA VGAB80001H字符40×2516CGA EGA MCGA VGAB80002H字符80×2516CGA EGA MCGA VGAB转载 2013-06-26 14:41:18 · 3210 阅读 · 1 评论 -
【原创】Windows X64汇编入门(1)
标 题: 【原创】Windows X64汇编入门(1)作 者: tankaiha时 间: 2007-05-05,23:31:26链 接: http://bbs.pediy.com/showthread.php?t=43967Windows X64汇编入门(1)tankaiha 最近断断续续接触了些64位汇编的知识,这里小结一下,一是阶段学习的回顾,二是希望转载 2013-11-10 00:10:00 · 3065 阅读 · 0 评论 -
【原创】Windows X64汇编入门(2)
标 题: 【原创】Windows X64汇编入门(2)作 者: tankaiha时 间: 2007-05-07,22:51:59链 接: http://bbs.pediy.com/showthread.php?t=44078tankaiha 五一长假就要结束了,总算有时间好好睡了几个懒觉。今天醒来后想到的第一件事就是,该写第二篇了。 64位技术现在还转载 2013-11-10 00:13:41 · 1325 阅读 · 0 评论 -
64 位下 jmp 指令 Intel 与 AMD 的实现
64 位下 jmp 指令 Intel 与 AMD 的实现mik(mik@mouseos.com)今天我注意到了在 64 位模式下 far jmp 指令的 Intel 和 AMD 实现的一些差别,源于下面的指令: jmp far [compatibility_pointer]compatibility_pointer: dd c转载 2013-11-28 00:39:48 · 3445 阅读 · 0 评论 -
一个开源的反汇编引擎BeaEngine支持64位
一个开源的反汇编引擎BeaEngine支持64位官网链接:http://www.beaengine.org/原创 2013-11-30 10:50:10 · 4150 阅读 · 0 评论 -
【x64 指令系统】之指令编码内幕
作者: mik 时间: 2008-12-5 23:23 标题: 【x64 指令系统】之指令编码内幕 -- (1 楼:目录)目 录-------------------------------------------------------------------------------1、序言转载 2013-12-06 12:05:16 · 3962 阅读 · 0 评论 -
全能型反汇编引擎 – Capstone-Engine
今天看到一个开源反汇编引擎记下来http://www.capstone-engine.org/download.html原创 2013-12-22 03:53:29 · 2178 阅读 · 0 评论 -
SYSENTER指令相关
在 Intel 的软件开发者手册第二、三卷(Vol.2B,Vol.3)中,4.8.7 节是关于 sysenter/sysexit 指令的详细描述。手册中说明,sysenter指令可用于特权级 3 的用户代码调用特权级 0 的系统内核代码,而 SYSEXIT 指令则用于特权级 0 的系统代码返回用户空间中。sysenter 指令可以在 3,2,1 这三个特权级别调用(Linux 中只用到转载 2014-04-10 22:29:41 · 1066 阅读 · 0 评论 -
汇编指令、机器码表
一、状态寄存器PSW(Program Flag)程序状态字寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下图所示:条件码:①OF(Overflow Flag)溢出标志。溢出时为1,否则置0。②SF(Sign Flag)符号标志。结果为负时置1,否则置0.③ZF(Zero Flag)零标志,运算结果为0时ZF位置1,否则置0.④CF转载 2015-01-25 14:17:05 · 1023 阅读 · 0 评论 -
FS寄存器指向当前活动线程的TEB结构(线程结构)
FS寄存器指向当前活动线程的TEB结构(线程结构)偏移 说明000 指向SEH链指针004 线程堆栈顶部008 线程堆栈底部00C SubSystemTib010 FiberData014 ArbitraryUserPointer018 FS段寄存器在内存中的镜像地址020 进程PID024 线程ID02C 指向线程局部存储指针030 PEB转载 2013-09-04 19:24:33 · 3478 阅读 · 0 评论 -
使用汇编实现memset和memcpy感觉汇编的强大
在VS2010的安装目录下如:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src\intel里面包含了memcpy.asmmemset.asm等等许多的汇编源文件=============汇编实现memset和memcpy================================原创 2013-09-10 22:48:41 · 5990 阅读 · 1 评论 -
VGA 寄存器一览表
VGA 寄存器一览表VGA寄存器地址表寄存器名称单色显示模式彩色显示模式混合输出寄存器 3C2H3C2H (VGA读端口3CCH)待征控制寄存器3BAH3DAH (VGA读端口3CAH)输入转载 2013-06-26 14:52:10 · 2153 阅读 · 0 评论 -
DOS中断/BIOS中断
中断INT 21H :1、字符功能调用类(Character-Oriented Function)01H、07H和08H —从标准输入设备输入字符02H —字符输出03H —辅助设备的输入04H —辅助设备的输出05H —打印输出06H —控制台输入/输出09H —显示字符串0AH — 键盘缓冲输入0BH —检测输入状态0CH —清输入缓冲区的输入功能转载 2013-06-26 14:25:41 · 1053 阅读 · 0 评论 -
存储器分页管理机制
[-]一存储器分页管理机制二线性地址到物理地址的转换映射表结构表项格式线性地址到物理地址的转换不存在的页表页的共享三页级保护和虚拟存储器支持页级保护对虚拟存储器的支持四页异常五演示分页机制的实例实例十演示步骤和源程序清单关于实例十的说明1部分演示代码的移动2页映射表的初始化3启动分页管理机制4关闭分页管理机制5地址转换的演示6页级保护的说明转载 2013-06-26 14:32:22 · 970 阅读 · 0 评论 -
系统内存常见的分配方式(学习)
;*************************************************************** ; 内存看上去是这样的: ; ┃ ┃ ; ┃ . ┃转载 2013-06-26 14:36:30 · 651 阅读 · 0 评论 -
GB2312简体中文编码表
GB2312简体中文编码表code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +FA1A0 、 。 · ˉ ˇ ¨ 〃 々 — ~ ‖ … ‘ ’A1B0 “ ” 〔 〕 〈 〉 《 》 「 」 『 』 〖 〗 【 】A1C0 ± × ÷ ∶ ∧ ∨ ∑ ∏ ∪ ∩ ∈ ∷ √ ⊥ ∥ ∠A1D0 ⌒ ⊙转载 2013-06-26 14:38:49 · 13884 阅读 · 0 评论 -
BIOS和DOS中断大全
DOS中断:1、字符功能调用类(Character-Oriented Function)01H、07H和08H —从标准输入设备输入字符02H —字符输出03H —辅助设备的输入04H —辅助设备的输出05H —打印输出06H —控制台输入/输出09H —显示字符串0AH — 键盘缓冲输入0BH —检测输入状态0CH —清输入缓冲区的输入功能(1)、转载 2013-06-26 16:00:29 · 844 阅读 · 0 评论 -
关于一些语法的东西
内嵌汇编__asm 单字节机器码编码__emit字节对齐#pragma pack(1)结构体#pragma pack()自己维护栈平衡__declspec(naked)原创 2013-08-08 00:13:03 · 765 阅读 · 0 评论 -
VC++使用OD反汇编引擎(非BC做DLL或LIB包装)
这几天一直在用OD调试一带tmd壳程序,断点时而成功时而崩溃,不知何故。侥幸在某次内存访问断点时,找到我要找的代码,于是准备向上追溯直到拿到全局实例的地址。可断点经常崩溃,又不会写OnlyScript,每次修改代码查看堆栈均很麻烦。于是萌生出自己写个反汇编器,打印出某处的反汇编,在需要下断查看堆栈处写一个hook,打印堆栈后还原hook并继续执行。 首先要解决的是反汇编问题,在网上狂转载 2013-08-31 00:19:52 · 2512 阅读 · 1 评论 -
有关汉字系统的关键技术/纯汇编显示中文/汉字显示/Nasm源码
一、实模式下 1、使用图形模式,通常使用12H的600*480,这个模式下也一样可能使用0EH功能,直接输出ASC。 2、从网络上下HZ16的字库(大约262KB),或着GB2312的16点阵字库(大约256KB),UCDOS里含的16*8的ASC字库(大约4KB) 3、使用0C功能写象素,将汉字库写出并根据当前光标计算当前象素行列,使可以与ASC的显示连续。转载 2013-06-26 14:40:16 · 2330 阅读 · 0 评论