日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

开始逆向objc基础准备(一)简单认识一下arm32,以及与x86汇编指令类比

發布時間:2025/7/14 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开始逆向objc基础准备(一)简单认识一下arm32,以及与x86汇编指令类比 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ARM32體系中有31或33個通用寄存器,沒有特定的某種態下有r0-r15一共16個寄存器,快速中斷態下有另一組r8-r12備份寄存器,在用戶態和系統態之外其它態下都各自有一組r13-r14備份寄存器,總共33個寄存器,在特定的態下會使用其各自的特有的備份寄存器。一般用戶態常用的通用寄存器為r0-r12。而r13用作堆棧指針sp,r14用作返回地址lr,r15用作程序計數器pc。

另外還有一個狀態寄存器CPSR,在用戶態和系統態還各自有一個用于備份的SPSR寄存器,用于在退出其它態時恢復CPSR。

ARM有兩種指令集分別為arm指令和thumb指令,指令長度固定,分別是32位和16位。

arm指令不能直接對內存進行運算,沒有串傳輸指令。

arm指令可以同時對狀態標志進行判斷,如addeq, movne, bcc。我猜這個指令特性可以減少許多在運算中的跳轉,降低分支命中出錯,或避免像x86越來越復雜的指令預取和分支預測技術。

?arm和x86各有所長各有所專,系統平臺也一樣。

arm32 與 x86 寄存器類比:

arm32x86
r0-r7

eax, ebx, ecx, edx, edi, esi, ebp (還少一個)

r8-r12

?
r13esp
r14?
r15eip
CPSRflags

?

?

?

?

?

?

?

?

常用指令類比:

arm32           x86

str r0, [r1]         mov [r1], r0         movl %r0, (%r1)

ldr r0, [r1]         mov r0, [r1]         movl (%r1), %r0

str r0, [r1, r2]       ?mov [r1+r2], r0

ldr r0, [r1, r2]       ?mov r0, [r1+r2]

str r0, [r1, #4]       mov [r1+4],? r0

ldr r0, [r1, #4]       mov r0, [r1+4]

str r0, [r1, r2, LRL #3]   mov [r1+r2*8], r0

str r0, [r1, r2, LSR #3]   mov r3, r2? ? ? ? ? ? ? ? ? ? ? ?x86須借用r3作中間運算

              shr r3, 3          

              mov [r1+r3], r0

ldr r0, =0xcdcdcdcd    ??mov r0, [0cdcdcdcdh]

ldr r0, [r1], #4       mov r0, [r1]

              lea r1, [r1+4]

ldr r0, [r1], LRL #3     mov r0, [r1]

              shl ? r1, 3

ldr r0, [r1], r2, LRL #3   mov r0, [r1+r2*8]

              lea r1, [r1+r2*8]

ldr r0, [r1, #4]!       lea r1, [r1+4]

              ?mov r0, [r1]

ldr r0, [r1, r2, LRL #3]!   lea r1, [r1+r2*8]

              ?mov r0, [r1]

ldmfd sp!, {r0-r3}     ?pop r0

              pop r1??

              pop r2

              pop r3

stmfd sp!, {r0-r3}     push r0

              push r1

              push r2

              push r3

stmfd sp, {r0-r3}     ??mov [esp], r0

              mov [esp-4], r1

              mov [esp-8], r2

              mov [esp-12], r3

add r1, r1, r2, LRL #3   lea r1, [r1+r2*8]

add r0, r0, #4       add r0, 4

add r0, r0, r1        add r0, r1????

sub r0, r0, r1        sub r0, r1

sbc r0, r0, r1        sub r0, r1

rsb r0, r0, r1, #4      lea r2, [r1+4]

              sub r2, r0

              mov r0, r2

smull r0, r1, r2, r3     mov eax, r2

              mul r3

              mov r0, eax

              mov r1, edx

smlal r0, r1, r2, r3     mov eax, r2

              mul r3

              add r0, eax

              adc r1, edx

and r0, r0, r1        and r0, r1

orr? r0, r0, r1        or r0, r1

eor r0, r0, r1        xor r0, r1

bic r0, r0, r1        mov r2, r1

             ??not r2

             ??and r0, r2

mvn r0, r1         mov r2, r1

             ??not r2

             ??mov r0, r2

mvn r0, r1, #-1      ??mov r2, r1

              neg r2

              mov r0, r2

mvn r0, r0, #-1       neg r0

tst r0, r1          test r0, r1

teq r0, r1         ??mov r2, r1

              xor r2, r0

              test r2, r2

bl             call          ; 自動 mov lr, pc,保存返回地址

b              jmp

bx            ? ?jmp         ; 帶模式切換,自動修改cpsr寄存器的控制域。

bgt             jg          ; 根據標志位N(SF),V(OF)

blo             jb?          ; 根據標志位C(CF),Z(ZF)

beq             je

bne             jne

addeq r0, r0, r1       jne $+n

              add r0, r1

ldrb r0, [r1]       movzx eax, byte ptr[ebx]

ldrsb r0, [r1]       movsx eax, byte ptr[ebx]

ldrh ? r0, [r1]       movzx eax, word ptr[ebx]

ldrsh ?r0, [r1]       movsx eax, word ptr[ebx]

strb r0, [r1]       mov byte ptr[ebx], al

strh ?r0, [r1]       mov word ptr[ebx], ax

ldr r0, [r1. #0x4]!    ? lead eax, [ebx+0x4]

            ? ?mov eax, dword ptr[ebx]

?

arm數據傳送指令方向注意事項:

arm數據傳送指令分為兩類,分別是ld(load Ld <-- Rs)和st(store Ls --> Rd);其它為默認方向。不同于x86指令(intel風格:左目標右源,at&t風格左源右目標)統一固定操作方向。

?

修改日期:2016.8.7

1.str r0, [r1, r2, LSR #3],格式修正。

2.arm數據傳送指令方向注意事項。

修改日期:2015.12.25

1. 31個通用寄存器和33個通用寄存器的區別在于,后者多了一個安全監視態。

2.bgt與blo,跟x86的jb與jl類比不適當。

3. 追加對內存進行字節,字傳輸指令類比。

修改日期: 2017.11.10

1. 添加感嘆號語句

轉載于:https://www.cnblogs.com/bbqzsl/p/5070035.html

總結

以上是生活随笔為你收集整理的开始逆向objc基础准备(一)简单认识一下arm32,以及与x86汇编指令类比的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 99精品免费观看 | 中国特级黄色大片 | 污片免费看 | 好吊色欧美一区二区三区视频 | 欧美videossex另类 | 顶级尤物极品女神福利视频 | 亚洲影视一区二区三区 | 色妞网站 | 色婷婷免费视频 | 国产在线视频二区 | 亚欧av在线 | 高清国产在线 | 一级女性全黄久久生活片免费 | 国产三级观看 | 上原亚衣av一区二区三区 | 每日更新在线观看av | 国产特黄一级片 | 免费成人电影在线观看 | 麻豆一区在线 | 日本熟妇一区二区三区四区 | 精品乱子一区二区三区 | 青草视频网 | 国产天堂网 | 国产中文一区二区 | 欧美v日韩| 国产手机av | 欧美一区二区三区爱爱 | 欧美亚洲自拍偷拍 | 国产精品麻豆一区 | 欧美色频| 黄色在线播放 | 草av在线 | 在线播放第一页 | 欧美大片黄色 | 天天碰天天干 | 午夜免费剧场 | 亚洲av无码日韩精品影片 | 国产激情在线看 | 日韩91视频 | 91亚洲精品国偷拍自产在线观看 | 亚洲国产成人精品无码区99 | 国产一区二区三区高清 | 亚洲第一在线 | 伊人久操 | www.亚洲激情| 巨乳免费观看 | h在线播放 | 一级特级毛片 | 国产精品久久久久久免费免熟 | 好吊视频在线观看 | 天堂网avav| 欧美a视频 | 久久国产秒 | 午夜成人免费电影 | 在线亚洲人成电影网站色www | 美女穴穴 | 日韩欧美国产精品综合嫩v 国产小毛片 | a视频在线观看免费 | 在线你懂得 | 国产九九久久 | 成人免费一级视频 | 久久一区二区三区四区五区 | 亚洲情侣在线 | 深爱激情五月婷婷 | 久久久精品视频在线观看 | 一线毛片| 欧美日韩三级在线观看 | 国产睡熟迷奷系列精品视频 | 一级大黄毛片 | 成年人黄色 | 女色综合 | 精品国产二区三区 | 亚洲国产精品麻豆 | 91视频播放 | 午夜久久久久 | 久久久蜜桃一区二区人 | 欧美粗大猛烈 | 欧美精品二区 | 欧美性生交xxxxx久久久缅北 | 色99视频 | 开元在线观看视频国语 | 国产精品视频一区二区三区, | 成人亚洲免费 | 青青一区二区 | 成人午夜网站 | 黄色片在线免费看 | 无码人妻aⅴ一区二区三区玉蒲团 | 亚洲欧美自拍偷拍 | 黑丝袜av| 手机在线看片你懂的 | 日韩一区在线看 | 激情午夜网 | 成人在线你懂的 | 夜夜夜夜夜操 | 9999re| 国产精品国产三级国产a | 亚洲天堂免费在线 | 美足av电影 | 欧美天天射 |