版權聲明:本文為博主原創文章,轉載請附上原文出處鏈接和本聲明。2019-09-06,21:59:16。
作者By-----溺心與沉浮----博客園
JCC指令決定它跳不跳轉跟別的沒關系,只跟EFLAG標志寄存器有關系!!!
1、JE, JZ 結果為零則跳轉(相等時跳轉) ZF=1
2、JNE, JNZ 結果不為零則跳轉(不相等時跳轉) ZF=0
3、JS 結果為負則跳轉 SF=1
4、JNS 結果為非負則跳轉 SF=0
5、JP, JPE 結果中1的個數為偶數則跳轉 PF=1
6、JNP, JPO 結果中1的個數為偶數則跳轉 PF=0
7、JO 結果溢出了則跳轉 OF=1
8、JNO 結果沒有溢出則跳轉 OF=0
9、JB, JNAE 小於則跳轉 (無符號數) CF=1
10、JNB, JAE 大於等於則跳轉 (無符號數) CF=0
11、JBE, JNA 小於等於則跳轉 (無符號數) CF=1 or ZF=1
12、JNBE, JA 大於則跳轉(無符號數) CF=0 and ZF=0
13、JL, JNGE 小於則跳轉 (有符號數) SF≠ OF
14、JNL, JGE 大於等於則跳轉 (有符號數) SF=OF
15、JLE, JNG 小於等於則跳轉 (有符號數) ZF=1 or SF≠ OF
16、JNLE, JG 大於則跳轉(有符號數) ZF=0 and SF=OF
有符號無符號的區別:大家有興趣可以去嘗試一下
CMP AL,CL
JG 0x12345678
JA 0x12345678
這里我也不上圖了,就簡單列舉一下,匯編指令的復習也就暫告一段落了,總算可以舒一口氣了,雖然博文寫了就十來篇,但筆者私底下的功課絕不止這么點,真的是要吐了。匯編的學習沒別的,就是練,也不需要靠你去背,背來的東西遲早都會忘,但是忘的速度會很快。只有練到自己把自己惡心到,才能讓自己把自己的功夫練到位!(當然筆者還沒到那種境界,不然也不會重新來復習匯編了)真的!學匯編一定不要聽信書上說的死記硬背!!!只有一句,忘死里練,練到把自己惡心得想錘爆電腦為止。
當然我說匯編學習告一段落,也不是說真不去碰匯編了,匯編會長期伴隨着我,因為后面的堆棧圖,C語言逆向,C++逆向,匯編是一直緊隨的,而且還會有新的匯編指令再去學,只是換個方向去了解匯編了。
上面的JCC指令嘩啦嘩啦一擺一大堆,有人會問,靠!這怎么去記,這記得來么!如果你的英語有一點點底子的話,那恭喜你,完全不用去記了,去找大於,小於,等於,不等於英語單詞就行,這些都是這英文單詞的縮寫。如果你英語差的話,也沒事,反正都是跟if...else相關的,見多了,練多了,不用刻意去記,也會形成自然反射的記住的。
我下面借鑒他人文章,COPY這張表格,這張表格有JCC指令的英文單詞全拼,可以幫助你更好的去理解JCC指令,注意結合我上面列出來的有符號的大於小於,和無符號的大於小於
| 指令 | 英文 | 中文 |
| je | Equal | 等於 |
| jne | Not Equal | 不等於 |
| jg | Creater | 大於 |
| jge | Creater or Equal | 大於等於 |
| jng | Not Greater | 不大於 |
| jnge | Not Greater or Equal | 不大於等於 |
| jl | Less | 小於 |
| jle | Less or Equal | 小於等於 |
| jnl | Not Less | 不小於 |
| jnle | Not Less or Equal | 不小於等於 |
| ja | Above | 高於 |
| jae | Above or Equal | 高於等於 |
| jna | Not Above | 不高於 |
| jnae | Not Above or Equal | 不高於等於 |
| jb | Below | 低於 |
| jbe | Below or Equal | 低於等於 |
| jnb | Not Below | 不低於 |
| jnbe | Not Below or Equal | 不低於等於 |
| jpe | Parity Even | 校驗為偶 |
| jpo | Parity Odd | 檢驗為奇 |
版權聲明:本文為博主原創文章,轉載請附上原文出處鏈接和本聲明。2019-09-06,21:59:16。
作者By-----溺心與沉浮----博客園
大家有興趣可以嘗試一下這道題,嘗嘗鮮。對JCC理解會有很好的幫助。
作業:使用匯編指令修改標志寄存器中的某個位的值,實現JCC的十六種跳轉.
條件1、不允許在OD中通過雙擊的形式修改標志寄存器.
條件2、要通過匯編指令的執行去影響標志位,能用CMP和TEST實現的優先考慮.
