軟體破解常用匯編指令有哪些,彙編中的常見指令有哪些

2021-03-04 04:56:51 字數 5550 閱讀 4225

1樓:匿名使用者

最近看了些軟體破解和漢化的文章,這;裡把我在學習中的一些基礎知識和大家分享下版

!!!!希望對你有所權幫助~~~~

cmp a,b // 比較a與b

mov a,b // 把b值送給a值,使a=bret // 返回主程式

nop // 無作用,英文(no operation)簡寫,意思"do nothing"(機器碼90)

(ultraedit開啟編輯exe檔案看到90相當彙編語句的nop)call // 呼叫子程式,子程式以ret結尾je或jz // 相等則跳(機器碼是74或84)jne或jnz // 不相等則跳(機器碼是75或85)jmp // 無條件跳(機器碼是eb)

jb // 若小於則跳

ja // 若大於則跳

jg // 若大於則跳

jge // 若大於等於則跳

jl // 若小於則跳

pop *** // ***出棧

push *** // ***壓棧

爆破無敵口訣

一條(跳)就死,九筒(90)就胡

(對應上面的2--修改為nop)

一條(跳)就胡,一餅(eb)伺候

(對應上面的1--修改為jmp)

(74) 變(75)

(84) 變 (85)

彙編中的常見指令有哪些

2樓:

關於這個問題,你可以在《intel® 64 and ia-32 architectures software developer』s manual》中找到答案!手冊可以從intel官方站點**!

手冊第一卷第五章第一節,描述了一些通用指令。

主要的彙編指令有哪些啊

3樓:匿名使用者

ldr 和str——用於字和無符號位元組

指令格式:

ldr/str rd,62616964757a686964616fe78988e69d8331333264623161

《地址>

ldr/strb rd,《地址》

ldr rd,《地址》 載入指定地址的字資料到rd中;

str rd,《地址》 儲存rd中的字資料到指定的地址單元中;

ldrb rd,《地址》 指令載入指定地址的位元組資料到rd的的最低位元組中(rd的高24位清零);

strb rd, 《地址》 指令儲存rd中的最低位元組資料到指定的地址單元中。

t為可選字尾,若有t,那麼即使處理器是在特權模式下,儲存系統也將訪問看成處理器是在使用者模式下,t 在使用者模式下無效,不能與前索引偏移一起使用t。

地址部分可用的形式有4種:

零偏移(zero offset) [rn] ,rn的值作為傳送資料的地址。如:

ldr r0,[r1];

前索引偏移(pre-indexed offset) [rn,flexoffset] 在資料傳送之前,將偏移量flexoffset加到rn 中。其結果作為傳送資料的儲存器地址。若使用字尾「!

」,則結果寫回到rn 中,且rn 不允許是r15,如:

ldrb r0,[r1,#8]

ldr r0,[r1,#8]!

程式相對偏移(program relative) label(label 必須是在當前指令的土4kb 範圍內) 。

程式相對偏移是前索引形式的另一種版本。從pc 計算偏移量,並將pc 作為rn 生成前索引指令,不能使用字尾「!」,如:

ldr r0,place ;

place地址裝入r0

後索引偏移(post-indexed offset) [rn],flexoffset。在資料傳送後,將偏移量flexoffset 加到rn 中,結果寫回到rn,rn 不允許是r15,如:

ldr r0,[r1],r2,lsl#2 ;

將儲存器地址為r1 的字資料讀入暫存器r0,並將新地址r1+r2×4寫入r1。

偏移量flexoffset可以是下兩種形式之:

1) 取值範圍是-4095 到+4095 的整數的表示式,經常是數字常量,如:

str r5,[r7],#--8

2) 一個暫存器再加上移位(移位由立即數指定),如:

rm 其中:

- :可選負號。若帶符號「一」,則從rn 中減去偏移量。否則,將偏移量加到rn 中。

rm :內含偏移量的暫存器。rm 不允許是r15。

shift:rm 的可選移位方法。可以是下列形式的任何一種:

asr n :算術右移n 位(1<=n<=32)

lsl n :邏輯左移n 位(1<=n<=31)

lsr n :邏輯右移n 位(1<=n<=32)

ror n :迴圈右移n 位(1<=n<=31)

rrx :迴圈右移1 位,帶擴充套件。

and―――――邏輯」與」操作指令

指令格式:

and rd,rn,operand2

and指令將運算元operand2 與rn 的值按位邏輯」與」,結果存放到目的暫存器rd 中。若設定s,則根據運算結果影響n、z位,在計算第二運算元時,更新c位,不影響v位(指令orr、eor、bic 對標誌位的影響同and 指令)。

指令示例:

ands r1,r1,r2 ;r1=r1&r2,並根據運算的結果更新標誌位

and r0,r0,#0x0f ;r0=r0&0x0f,取出r0最低4位資料。

orr―――――邏輯」或」操作指令

指令格式:orr rd,rn,operand2 orr指令將運算元operand2 與rn 的值按位邏輯」或」,結果存放到目的暫存器rd 中。指令示例:

orrs r1,r1,r2 ;r1=r1|r2,並根據運算的結果更新標誌位

orr r0,r0,#0x0f ;r0=r0|0x0f,將r0最低4位置1,其餘位不變。

bic―――――位清除指令

指令格式:

bic rd,rn,operand2

bic指令將rn 的值與運算元operand2 的反碼按位邏輯」與」,結果存放到目的暫存器rd 中。指令示例:bic r0,r0,#0x0f ;將r0最低4位清零,其餘位不變。

cmp―――――比較指令

指令格式:

cmp rn,operand2

cmp指令用rn的值減去運算元operand2 ,並將結果的狀態(rn 與operand2比較是大、小、相等)反映在cpsr中,以便後面的指令根據條件標誌決定程式的走向。cmp指令與subs指令完成的操作一樣,只是cmp指令只減,不存結果。

指令示例:

cmp r0,r1 ;比較r0,r1

beq stop ;r0=r1跳到stop

blt less ;r0

. .. less:

. .. stop: ..

.sub―――――減法運算指令

指令格式:

sub rd,rn,operand2 sub指令用rn 的值減去運算元operand2 ,並將結果存放到目的暫存器rd 中。 指令示例:

subs r1,r1,r2 ;r1=r1-r2,並並根據運算的結果更新標誌位

subgt r3,3,#1 ;大於則 r3=r3-1

sub r0,r2,r3,lsl#2; r0=r2-(r3<<2)

arm分支指令

助記符說明

操作b lable

分支指令

pc← lable

bl lable

帶連結的分支指令

lr← pc-4 ,pc←lable

bx rm

帶狀態切換的分支指令

pc← rm,切換處理器狀態

指令的條件碼

條件碼 助記符字尾 標誌 含義

0000 eq z置位(z=1) 相等

0001 ne z清零(z=0) 不相等

0010 cs c置位 無符號數大於等於

0011 cc c清零 無符號數小於

0100 mi n置位 負數

0101 pl n清零 整數或0

0110 vs v置位 溢位

0111 vc v清零 未溢位

1000 hi c置位且z清零 無符號數大於

1001 ls z置位且c清零 無符號數小於等於

1010 ge n等於v(n=v=1或n=v=0) 帶符號數大於或等於

1011 lt n不等於v 帶符號數小於

1100 gt z清零且n等於v 帶符號數大於

1101 le z置位或n不等於v 帶符號數小於或等於

1110 al 忽略 無條件執行

;gpio暫存器巨集定義

gpfcon equ 0x56000050

gpfdat equ 0x56000054

gpfup equ 0x56000058

export ledtest

area ledtesta**,code,readonly ;該偽指令定義了一個**段,段名為ledtesta**,屬性只讀

ledtest

;設定gpf4-gpf7為output

ldr r0,=gpfcon

ldr r1,[r0]

bic r1,r1,#0xff00

orr r1,r1,#0x5500

str r1,[r0]

;禁止gpf4-gpf7埠的上拉電阻

ldr r0,=gpfup

ldr r1,[r0]

orr r1,r1,#0xf0

str r1,[r0]

looptest

;將資料埠f的資料暫存器的地址附給暫存器r2

ldr r2,=gpfdat

ldr r3,[r2]

bic r3,r3,#0xf0

orr r3,r3,#0xb0

str r3,[r2] ;gpf6 output 0

ldr r0,=0x2fffff

bl delay ;呼叫延遲子程式

ldr r3,[r2]

bic r3,r3,#0xf0

orr r3,r3,#0x70

str r3,[r2] ;gpf7 output 0

ldr r0,=0x2fffff ;初始計數值

bl delay ;呼叫延遲子程式

ldr r3,[r2]

bic r3,r3,#0xf0

orr r3,r3,#0xd0

str r3,[r2] ;gpf5 output 0

ldr r0,=0x2fffff

bl delay ;呼叫延遲子程式

ldr r3,[r2]

bic r3,r3,#0xf0

orr r3,r3,#0xe0

str r3,[r2] ;gpf4 output 0

ldr r0,=0x2fffff

bl delay ;呼叫延遲子程式

b looptest

delay

sub r0,r0,#1 ;r0=r0-1

cmp r0,#0x0 ;將r0的值與0相比較

bne delay ;比較的結果不為0(r0不為0),繼續呼叫delay,否則執行下一條語句

mov pc,lr ;返回

end ;程式結束符

學習組合語言的入門書籍有哪些啊,學習組合語言的經典書籍推薦?

學習組合語言,推薦王爽的 組合語言 本書最適合初學者 大多時候,一些初學者不知道應該讀什麼書入門,有一定基礎的開發者不知道如何進階。本文總結了一個c 優秀書籍清單,希望能夠為你帶來一定的幫助。因為多讀一些優秀的書籍,對於開發者穩固程式設計基礎 提高程式設計技能有很大幫助,這些書大多數都有中文版,並且...

常用的數學軟體有哪些,常用的數學軟體有什麼?

數學軟體中matlab算是一個很常用的軟體了,不管是模型建造還是函式書寫,甚至於案例模擬,matlab都能實現。我個人比較常用的數學軟體主要就有mathematica這個軟體,我是覺得這個軟體是真的挺好用的,可以解決一些函式的轉換,極限,微分,積分的運算!常用的數學軟體有matlab mathema...

建築軟體有哪些,建築常用的軟體有哪些?

cad,天正,ps,3dmax等等 建築常用的軟體有哪些?建築常用的軟體一覽 看圖說話 建築設計工具之一 達索dassault的caitia 代表案例 鳥巢 特點 起源於飛機設計,最強大的三維cad軟體,獨一無二的曲面建模能力,應用於最複雜 最異型的三維建築設計 看圖說話 建築設計工具之二 goog...