MIPS逆向工程入門:從babymips實(shí)戰(zhàn)解析
1. 逆向工程入門從攻防世界babymips開始最近在逆向工程學(xué)習(xí)社區(qū)里babymips這道題目經(jīng)常被提及。作為MIPS架構(gòu)的入門級(jí)逆向題目它完美展現(xiàn)了逆向工程的基礎(chǔ)思維模式和常用技術(shù)路線。我第一次接觸這道題時(shí)花了整整兩天時(shí)間才完全理解其中的精妙之處今天就把我的解題過程和思考分享給大家。babymips是攻防世界(CTF比賽平臺(tái))中的一道經(jīng)典逆向題目難度評(píng)級(jí)為新手級(jí)。但千萬別被baby這個(gè)詞迷惑這道題涵蓋了MIPS架構(gòu)特性分析、靜態(tài)反匯編、動(dòng)態(tài)調(diào)試、算法逆向等多個(gè)核心技能點(diǎn)。通過這道題你可以建立起逆向工程的基本方法論為后續(xù)更復(fù)雜的逆向挑戰(zhàn)打下堅(jiān)實(shí)基礎(chǔ)。2. MIPS架構(gòu)基礎(chǔ)認(rèn)知2.1 MIPS與x86的關(guān)鍵差異MIPS是一種精簡(jiǎn)指令集(RISC)架構(gòu)與我們常見的x86架構(gòu)有幾個(gè)顯著區(qū)別固定長(zhǎng)度指令所有指令都是32位長(zhǎng)度延遲槽機(jī)制分支指令后的下一條指令總會(huì)執(zhí)行寄存器命名使用$符號(hào)前綴如$t0、$a0等調(diào)用約定前4個(gè)參數(shù)通過$a0-$a3傳遞返回值在$v0提示在逆向MIPS程序時(shí)這些特性會(huì)直接影響代碼邏輯的理解特別是延遲槽機(jī)制常常會(huì)讓初學(xué)者感到困惑。2.2 常用工具準(zhǔn)備針對(duì)babymips這道題我們需要準(zhǔn)備以下工具鏈IDA Pro主力的靜態(tài)分析工具建議使用7.0以上版本qemu用于模擬MIPS環(huán)境的動(dòng)態(tài)調(diào)試工具gdb-multiarch支持多架構(gòu)的調(diào)試器binutils-mipsMIPS交叉編譯工具鏈安裝命令示例sudo apt install qemu qemu-user gdb-multiarch binutils-mips-linux-gnu3. 題目靜態(tài)分析3.1 初始文件檢查首先對(duì)題目文件進(jìn)行基礎(chǔ)檢查file babymips # 輸出ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1, statically linked, stripped checksec --filebabymips # 輸出No RELRO/No canary found/NX disabled/No PIE從輸出可以看出這是一個(gè)靜態(tài)鏈接的MIPS32架構(gòu)ELF文件且沒有開啟任何保護(hù)機(jī)制。這意味著沒有地址隨機(jī)化(PIE)函數(shù)地址固定??蓤?zhí)行(NX disabled)可能存在shellcode注入機(jī)會(huì)靜態(tài)鏈接導(dǎo)致文件體積較大但所有庫(kù)函數(shù)都在程序中3.2 IDA靜態(tài)分析將文件載入IDA后我們需要特別注意以下幾點(diǎn)識(shí)別main函數(shù) 由于文件被strip過我們需要通過入口點(diǎn)(_start)逐步跟蹤找到main函數(shù)。在MIPS程序中main通常會(huì)被__libc_start_main調(diào)用。關(guān)鍵字符串定位 在字符串窗口搜索correct、wrong等提示信息可以快速定位關(guān)鍵判斷邏輯。函數(shù)調(diào)用分析 注意$a0-$a3寄存器的使用這些通常保存函數(shù)參數(shù)。在靜態(tài)分析時(shí)需要特別關(guān)注這些寄存器的賦值來源。3.3 核心算法逆向通過靜態(tài)分析我們發(fā)現(xiàn)程序的核心邏輯是讀取用戶輸入(最大長(zhǎng)度0x20)對(duì)輸入進(jìn)行逐字符變換將變換結(jié)果與內(nèi)置數(shù)據(jù)比較變換算法的偽代碼大致如下for i in range(len(input)): temp (input[i] ^ 0x20) 0x10 if temp ! secret[i]: return Wrong return Correct4. 動(dòng)態(tài)調(diào)試技巧4.1 qemu環(huán)境搭建由于本地通常是x86環(huán)境我們需要使用qemu模擬MIPS運(yùn)行環(huán)境qemu-mips -g 1234 ./babymips然后在另一個(gè)終端使用gdb連接gdb-multiarch ./babymips (gdb) target remote :12344.2 關(guān)鍵斷點(diǎn)設(shè)置在動(dòng)態(tài)調(diào)試時(shí)這些斷點(diǎn)特別有用輸入函數(shù)斷點(diǎn)追蹤用戶輸入存儲(chǔ)位置算法循環(huán)開始觀察字符處理過程比較函數(shù)查看最終比對(duì)數(shù)據(jù)設(shè)置斷點(diǎn)示例(gdb) b *0x00400A10 # 算法開始地址 (gdb) b *0x00400A8C # 比較函數(shù)調(diào)用4.3 寄存器監(jiān)控技巧MIPS架構(gòu)下這些寄存器需要特別關(guān)注$t0-$t9臨時(shí)寄存器常用于算法計(jì)算$s0-$s7保存寄存器常用于存儲(chǔ)中間結(jié)果$a0-$a3函數(shù)參數(shù)傳遞$v0-$v1函數(shù)返回值使用gdb命令監(jiān)控寄存器值(gdb) info registers (gdb) p/x $t05. 解題完整過程5.1 輸入驗(yàn)證分析通過靜態(tài)分析發(fā)現(xiàn)程序要求輸入長(zhǎng)度為0x1F(31)個(gè)字符。動(dòng)態(tài)調(diào)試可以驗(yàn)證這一點(diǎn)(gdb) x/s 0x00410B20 Input your flag: (gdb) x/10i 0x004009A0 # 可以看到fgets調(diào)用讀取0x20字節(jié)5.2 算法逆向?qū)崿F(xiàn)根據(jù)逆向出的算法我們可以編寫對(duì)應(yīng)的解密腳本secret [0x52,0xFD,0x16,0xA4,0x89,0xBD,0x92,0x80, 0x13,0x41,0x54,0xA0,0x8D,0x45,0x18,0x81, 0xDE,0xFC,0x95,0xF0,0x16,0x79,0x1A,0x15, 0x5B,0x75,0x1F,0x00] flag for c in secret: flag chr((c - 0x10) ^ 0x20) print(flag)5.3 最終flag獲取運(yùn)行解密腳本后我們得到完整flagCTF{This_Is_MIPS_Reverse_Basics}6. 常見問題與解決6.1 qemu運(yùn)行報(bào)錯(cuò)處理錯(cuò)誤現(xiàn)象qemu: uncaught target signal 11 (Segmentation fault)解決方案檢查文件權(quán)限確??蓤?zhí)行權(quán)限已設(shè)置使用完整路徑qemu-mips /full/path/to/babymips嘗試靜態(tài)鏈接版本qemu-mips-static6.2 IDA反匯編異常問題描述 IDA無法正確識(shí)別某些函數(shù)或顯示錯(cuò)誤指令。解決方法手動(dòng)創(chuàng)建函數(shù)(快捷鍵P)調(diào)整分析選項(xiàng)Options → General → Analysis使用mipsrop插件輔助分析6.3 動(dòng)態(tài)調(diào)試斷點(diǎn)失效調(diào)試時(shí)發(fā)現(xiàn)斷點(diǎn)不觸發(fā)可能因?yàn)榈刂吩O(shè)置錯(cuò)誤確保使用正確的內(nèi)存地址延遲槽影響MIPS分支指令的下一條總會(huì)執(zhí)行靜態(tài)鏈接干擾某些庫(kù)函數(shù)內(nèi)部跳轉(zhuǎn)復(fù)雜7. 擴(kuò)展學(xué)習(xí)建議完成babymips后可以嘗試這些進(jìn)階練習(xí)修改算法自己實(shí)現(xiàn)類似的變換算法并逆向添加保護(hù)為程序添加簡(jiǎn)單的反調(diào)試機(jī)制架構(gòu)對(duì)比用同一算法實(shí)現(xiàn)x86和ARM版本并比較推薦后續(xù)挑戰(zhàn)題目攻防世界mipsbombCTFtimemips_rev_101HackTheBoxMIPSBox (需要會(huì)員)逆向工程最重要的是培養(yǎng)系統(tǒng)性思維。每道題目都應(yīng)該完整記錄靜態(tài)分析過程動(dòng)態(tài)調(diào)試路徑算法逆向思路遇到的坑和解決方案這樣積累下來你的逆向能力會(huì)呈指數(shù)級(jí)增長(zhǎng)。babymips只是開始MIPS架構(gòu)在路由器、物聯(lián)網(wǎng)設(shè)備中廣泛應(yīng)用掌握這些技能對(duì)IoT安全研究也大有裨益。

相關(guān)新聞

Windows滲透測(cè)試中的反彈Shell技術(shù)解析與實(shí)戰(zhàn)

Windows滲透測(cè)試中的反彈Shell技術(shù)解析與實(shí)戰(zhàn)

1. Windows滲透測(cè)試中的反彈Shell技術(shù)解析在安全評(píng)估和滲透測(cè)試工作中,反彈Shell(Reverse Shell)是最常用的技術(shù)手段之一。與常規(guī)Shell不同,反彈Shell的特點(diǎn)是讓目標(biāo)主機(jī)主動(dòng)連接攻擊者控制的服務(wù)器,這種方式能有效繞過…

2026/8/4 1:42:12 閱讀更多
嵌入式開發(fā)必知:12種核心通信協(xié)議詳解與實(shí)戰(zhàn)選型指南

嵌入式開發(fā)必知:12種核心通信協(xié)議詳解與實(shí)戰(zhàn)選型指南

嵌入式開發(fā),說到底就是讓各種芯片、傳感器、模塊之間“說話”。而“說話”的規(guī)則,就是通信協(xié)議。今天這篇文章,我們不談虛的,直接梳理嵌入式領(lǐng)域最常用、最核心的12種通信協(xié)議。無論你是剛?cè)胄械男率?amp;#xff0c;還是需要快速回顧…

2026/8/4 1:42:12 閱讀更多
2026年網(wǎng)路架構(gòu)師與國(guó)產(chǎn)化紅利:祝賀學(xué)員通關(guān)CCDE與H3CSE/華為認(rèn)證

2026年網(wǎng)路架構(gòu)師與國(guó)產(chǎn)化紅利:祝賀學(xué)員通關(guān)CCDE與H3CSE/華為認(rèn)證

各位開發(fā)者和網(wǎng)工兄弟們,今天作為社群老司機(jī),我非常激動(dòng)地來跟大家分享幾位學(xué)員的備考戰(zhàn)果。這幾個(gè)月大環(huán)境不好,他們白天在公司應(yīng)付各種繁雜的項(xiàng)目,晚上還要強(qiáng)撐著精神刷題。但今天,看著這一張張成績(jī)單,所…

2026/8/4 2:42:43 閱讀更多
虛幻引擎GPU性能優(yōu)化:從幀時(shí)分析到渲染瓶頸突破

虛幻引擎GPU性能優(yōu)化:從幀時(shí)分析到渲染瓶頸突破

在游戲開發(fā)領(lǐng)域,尤其是使用虛幻引擎(Unreal Engine)進(jìn)行大型項(xiàng)目創(chuàng)作時(shí),性能優(yōu)化和視覺效果的平衡是永恒的主題。當(dāng)項(xiàng)目規(guī)模達(dá)到一定程度,例如構(gòu)建一個(gè)擁有復(fù)雜光照、大量模型和高密度植被的開放世界時(shí),渲染…

2026/8/4 2:42:43 閱讀更多
航天模擬項(xiàng)目技術(shù)解析:從環(huán)境配置到功能測(cè)試的完整實(shí)踐指南

航天模擬項(xiàng)目技術(shù)解析:從環(huán)境配置到功能測(cè)試的完整實(shí)踐指南

這次我們來看一個(gè)名為“粉絲空間站第一期(發(fā)射黑白D還有載人艙)”的項(xiàng)目。從標(biāo)題來看,這很可能是一個(gè)與航天模擬、游戲開發(fā)或3D建模相關(guān)的技術(shù)項(xiàng)目,涉及空間站、火箭發(fā)射等元素的構(gòu)建。這類項(xiàng)目通常吸引對(duì)航天、游戲引擎&#xff…

2026/8/4 2:42:43 閱讀更多
Unity實(shí)現(xiàn)UE4級(jí)湖水渲染:Shader Graph實(shí)戰(zhàn)與性能優(yōu)化

Unity實(shí)現(xiàn)UE4級(jí)湖水渲染:Shader Graph實(shí)戰(zhàn)與性能優(yōu)化

1. 項(xiàng)目概述:從UE4的驚艷到Unity的落地看到“Unity仿UE4湖水材質(zhì)”這個(gè)標(biāo)題,很多朋友的第一反應(yīng)可能是:UE4的水體渲染不是出了名的好嗎?為什么要用Unity去模仿?這恰恰是這個(gè)項(xiàng)目最核心的價(jià)值所在。UE4憑借其強(qiáng)大的渲染…

2026/8/4 2:42:43 閱讀更多
深度學(xué)習(xí)權(quán)重衰退原理與實(shí)踐指南

深度學(xué)習(xí)權(quán)重衰退原理與實(shí)踐指南

1. 權(quán)重衰退(Weight Decay)的本質(zhì)與作用權(quán)重衰退是深度學(xué)習(xí)中一種經(jīng)典的參數(shù)正則化技術(shù),它的核心思想是通過在損失函數(shù)中添加一個(gè)與權(quán)重平方成正比的懲罰項(xiàng),來抑制模型參數(shù)的無限制增長(zhǎng)。這種看似簡(jiǎn)單的操作背后,蘊(yùn)含著…

2026/8/4 2:42:43 閱讀更多
2026年北京經(jīng)開區(qū)人工智能行業(yè)大模型應(yīng)用落地支持項(xiàng)目申報(bào)指南

2026年北京經(jīng)開區(qū)人工智能行業(yè)大模型應(yīng)用落地支持項(xiàng)目申報(bào)指南

一、政策依據(jù)根據(jù)《北京經(jīng)濟(jì)技術(shù)開發(fā)區(qū)關(guān)于加快打造AI原生產(chǎn)業(yè)創(chuàng)新高地的若干政策》(京技管發(fā)〔2024〕29號(hào))中第四條支持行業(yè)大模型應(yīng)用落地,“對(duì)企業(yè)自主研發(fā)、公開發(fā)布,具有較好市場(chǎng)應(yīng)用效果的人工智能行業(yè)大模型,經(jīng)…

2026/8/4 2:32:42 閱讀更多
清華大學(xué)重磅EST:植物自導(dǎo)電閃蒸焦耳熱600°C/2600°C兩步法!稀土超積累植物秒級(jí)轉(zhuǎn)化為CeO?-石墨烯電催化劑!

清華大學(xué)重磅EST:植物自導(dǎo)電閃蒸焦耳熱600°C/2600°C兩步法!稀土超積累植物秒級(jí)轉(zhuǎn)化為CeO?-石墨烯電催化劑!

通訊作者:鄧兵、劉建國(guó)通訊單位:清華大學(xué)DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清潔能源技術(shù)與電子器件不可或缺的核心原料,然而傳統(tǒng)提取方式依賴能耗高、排放大的采礦與強(qiáng)…

2026/8/4 0:01:30 閱讀更多
貴州師范大學(xué)JCIS:混合焓調(diào)控設(shè)計(jì)PtCoNiCuCr高熵合金!ORR半波電位0.89 V/質(zhì)量活性2.4倍Pt/C!

貴州師范大學(xué)JCIS:混合焓調(diào)控設(shè)計(jì)PtCoNiCuCr高熵合金!ORR半波電位0.89 V/質(zhì)量活性2.4倍Pt/C!

研究背景質(zhì)子交換膜燃料電池(PEMFCs)因其高能量轉(zhuǎn)換效率和清潔零排放特性備受關(guān)注,然而陰極氧還原反應(yīng)(ORR)動(dòng)力學(xué)遲緩、鉑催化劑成本高昂且耐久性不足的問題嚴(yán)重制約了其商業(yè)化進(jìn)程。將 Pt 與 3d 過渡金屬合金化可調(diào)控…

2026/8/4 0:01:30 閱讀更多
福州大學(xué)/清華大學(xué)AFM:脈沖焦耳熱900°C/1s合成Co?Cu催化劑,寬電位NH?法拉第效率~100%,MEA穩(wěn)定300h

福州大學(xué)/清華大學(xué)AFM:脈沖焦耳熱900°C/1s合成Co?Cu催化劑,寬電位NH?法拉第效率~100%,MEA穩(wěn)定300h

通訊作者:萬宇馳、張久俊、呂瑞濤通訊單位:福州大學(xué) 、清華大學(xué)DOI:https://doi.org/10.1002/adfm.76112核心導(dǎo)讀:本文提出"分步升級(jí)"廢硝酸鹽處理新路線——利用廢水中的金屬離子經(jīng)快速焦耳熱(40V&#xff…

2026/8/4 0:01:30 閱讀更多
MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案 【免費(fèi)下載鏈接】MoneyPrinterPlus AI一鍵批量生成各類短視頻,自動(dòng)批量混剪短視頻,自動(dòng)把視頻發(fā)布到抖音,快手,小紅書,視頻號(hào)上,賺錢從來沒有這么容易過! 支持本地語音模型chatTTS,fasterwhisper,…

2026/8/3 7:44:46 閱讀更多
3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南 【免費(fèi)下載鏈接】GetQzonehistory 獲取QQ空間發(fā)布的歷史說說 項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過,那些年發(fā)過的QQ空間說說,那些記錄青春的文字…

2026/8/3 12:53:38 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號(hào)分配電路板。該型號(hào)(0100-02186)的核心特點(diǎn)如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號(hào)路由與分配功能。連接控制…

2026/8/3 19:34:52 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機(jī),適用于自動(dòng)化設(shè)備及通用機(jī)械驅(qū)動(dòng)。該型號(hào)(FFMN-32L-10-T0 40AX)的核心特點(diǎn)如下:三相交流異步電動(dòng)機(jī)。額定…

2026/8/3 19:34:54 閱讀更多