Asm

1.如何理解JZ OR JNZ?
Jz=jump if zero (结果为0则设置ZF零标志为1,跳转)
Jnz=jump if not zero (结果不为零(或不相等)则设ZF零标志位0,跳转)
eg.

Test对两个参数(目标,源)执行AND逻辑操作,并根据结果设置标志寄存器结果本身不会保存。
TEST AX,BX 与 AND AX,BX 命令有相同效果,只是Test指令不改变AX和BX的内容,而AND指
令会把结果保存到AX中。

test eax,0x4000000                      //逻辑与 10000000000000000000000000000000
jnz short KGUI.5DEB7DB4          //如果eax=0x40000000 则跳转

test eax,0x80008000                    //逻辑与 10000000000000001000000000000000
je short KGUI.5DEB7D99            //如果 eax  高位 和  低位  不为8  则 跳转

test逻辑与运算结果为零,就把ZF(零标志)置1;
cmp 算术减法运算结果为零,就把ZF(零标志)置1.

2.如何理解ESP?
函数内部:push 一个参数后 (当前地址)ESP=(原地址)ESP-4,相应的下面列表中需要+4.

esp+ 函数参数 esp- 函数局部变量
0x4 函数第一个参数 0x4 局部变量第一个参数
0x8 函数第二个参数 0x8 局部变量第二个参数
0xC 函数第三个参数 0xC 局部变量第三个参数
0x10 函数第四个参数 0x10 局部变量第四个参数
0x14 函数第五个参数 0x14 局部变量第五个参数
0x18 函数第六个参数 0x18 局部变量第六个参数
0x1C 函数第七个参数 0x1C 局部变量第七个参数
0x20 函数第八个参数 0x20 局部变量第八个参数

3.通用寄存器

通用寄存器
EAX 累加(Accumulator)寄存器 AX(AH、AL) 常用于乘、除法和函数返回值
EBX 基址(Base)寄存器 BX(BH、BL) 常做内存数据的指针, 或者说常以它为基址来访问内存.
ECX 计数器(Counter)寄存器 CX(CH、CL) 常做字符串和循环操作中的计数器
EDX 数据(Data)寄存器 DX(DH、DL) 常用于乘、除法和 I/O 指针
ESI 来源索引(Source Index)寄存器 SI 常做内存数据指针和源字符串指针
EDI 目的索引(Destination Index)寄存器 DI 常做内存数据指针和目的字符串指针
ESP 堆栈指针(Stack Point)寄存器 SP 只做堆栈的栈顶指针; 不能用于算术运算与数据传送
EBP 基址指针(Base Point)寄存器 BP 只做堆栈指针, 可以访问堆栈内任意地址, 经常用于中转 ESP 中的数据, 也常以它为基址来访问堆栈; 不能用于算术运算与数据传送

4.短跳转和长跳转 EB E9

00D298B2     /75 04         jnz Xxajh.00D298B8
00D298B4     |33D2          xor edx,edx
00D298B6     |EB 08         jmp Xxajh.00D298C0
00D298B8  |> \8B51 08       mov edx,dword ptr ds:[ecx+0x8]
00D298BB  |.  2BD0          sub edx,eax
00D298BD  |.  C1FA 03       sar edx,0x3
00D298C0  |>  8B71 08       mov esi,dword ptr ds:[ecx+0x8]

=========================================================
00D299D8   .  3B7D 04              cmp edi,dword ptr ss:[ebp+0x4]
00D299DB   .  74 04                je Xxajh.00D299E1
00D299DD   .  8B3F                 mov edi,dword ptr ds:[edi]
00D299DF   .^ EB CB                jmp Xxajh.00D299AC
00D299E1   >^ E9 AAD7FFFF          jmp xajh.00D27190
00D299E6   >  8DBE 54010000        lea edi,dword ptr ds:[esi+0x154]
00D299EC   .  8BCF                 mov ecx,edi
00D299EE   .  E8 2DCFF9FF          call xajh.00CC6920
00D299F3   .  8DAE 8C010000        lea ebp,dword ptr ds:[esi+0x18C]

直接的jmp分3种 
Short Jump(短跳转)机器码 EB rel8 
只能跳转到256字节的范围内 
Near Jump(近跳转)机器码 E9 rel16/32 
可跳至同一个段的范围内的地址 
Far Jump(远跳转)机器码EA ptr 16:16/32 
可跳至任意地址,使用48位/32位全指针 


5.汇编中寄存器32位,低16位,高8位,低8位的理解

QQ截图20170304075831.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容