我在 Day2 的文章裡有講到暫存器(e.g. eax, ebx),可能對初學者而言相對陌生。這篇主要來介紹這些暫存器代表的意義與使用時機。 為什麼要使用暫存器...
多數組合語言指令(instructions)需透過運算元(operand)來存取資料[可以把運算元想像成容器]。有一些指令不需要運算元即可存取資料,而另一些指令...
昨天我們知道:暫存器定址、立即定址、記憶體定址,是CPU 透過匯流排與記憶體互動時的不同方法。今天,來說明記憶體的定址方式。 記憶體定址 分成三類,直接存取、直...
記憶體在電腦中扮演極重要的角色。生活中,每次想多開幾個瀏覽器,電腦就開始 lag 甚至最後當機、跑不動,與記憶體的使用息息相關。本篇中,會說明程式在記憶體中的配...
學習一門新的程式語言,大多會從 Hello world 切入。完成後,總覺得離這門語言更親近一步XD Day2,我會講解如何使用組合語言寫 Hello worl...
昨天介紹跨平台的神器(IDA Pro),今天介紹個人主要在 Linux 使用的逆向工具 - Radare2 Radare2 介紹 Wiki Radare2(...
今天來正式介紹一下 Intel x86 的指令。雖然前面已經偷渡了很多次XD,不過這裡分門別類的描述各個指令的使用時機。有點多,不過還是請讀者慢慢服用。 複製資...
今天來介紹另一款 Linux 逆向工具,我主要拿來動態分析使用。 GDB 介紹 Wiki GNU偵錯器(英語:GNU Debugger,縮寫:GDB),是...
工欲善其事,必先利其器。今天要介紹資安界的女神(對我而言) - IDA Pro。IDA Pro 是跨平台的逆向工具,Windows、MacOS、Linux 都有...
今天介紹 Mac 專用的逆向工具 - Hopper Disassembler。我使用的試用版,雖然半小時後就會自動斷開、也不能儲存更動過的地方,不過仍不失為一個...
介紹 Syscall (system call),中文翻成系統呼叫,可以把它理解成系統的 API (Application Programming Interf...
今天的重頭戲,正是逆向昨天剛寫好的 Hello world,從反方向觀察程式碼的長相。如果運用得宜,你可以更了解程式的具體行為。在生活中,逆向工程使用時機就好比...
惡名昭彰的 WannaCry 讓 Windows 使用者欲哭無淚。今天來逆向 WannaCry,看這隻病毒到底有什麼實際行為?為什麼新聞說有人買下特定的網域,就...
這張圖是 Hello world 執行後,歷經的過程。Reference User space v.s. Kernel space 這裡要先辨別,作業系統的 U...
WannaCry 還沒逆完,把最後一天的內容拿出來擋一下。請讀者見諒XD今天不會講解技術,會推薦基礎的逆向工程資源。以下是我覺得不錯的教材,推薦給讀者。 Roa...
看日常分享: AwesomeCS FB 看技術文章: AwesomeCS Wiki 筆者最近在閱讀 aaaddress1 的大作: Windows...
前言 嗨大家好,昨天的練習應該不難。請看下面的解答: //第一題:請問下面 console.log 會出現哪個顏色? let color = ["re...
今天,準備要開始逆向程式碼。在介紹工具之前,先來解說逆向工程的邏輯。基本上,對於逆向,有很多現成的工具可以直接套用,但許多有其極限(當然,有工具可以提升效率,我...
引言我有說到,因為好奇,才分享逆向工程的文章。今天就要來揭秘電腦是如何通過重重關卡,才能識別並執行程式設計師所寫的程式碼。不囉唆,先上圖, Reference...
今天介紹入門的 CTF 題目,可以檢驗過去的學習知識是否夠紮實(當然某些題目可能需要通靈XD)。基本上,會挑一些基礎的、可以解釋的題目當作練習題,並且把它寫成...
昨天我們討論到程式的編譯過程,今天就來將理論化為實際。透過手把手教學,我會使用 C 語言講解程式碼是如何一步步變成電腦能理解的語言。 首先,我們回顧這張圖: R...
今天介紹簡單的 Buffer Overflow 題目。 Buffer Overflow 是什麼? 根據Wiki: (Buffer Overflow) 緩衝區...
Day14 我們說到的驗證程式,透過 strings 搜尋就可以找到。於是我們想要提升逆向的成本,何不將驗證方式改掉?改成駭客想不到的方式? 實作 原本的程式太...
因為是函式呼叫所以能觀察到 main() 裡面去 call 其他 function 。今天介紹呼叫單一函數、函數裡僅有單一參數、雙參數、函數中再呼叫其他函數的情...
今天開始練基礎功,逆向我們常見的條件判斷式。包括:if、if-else、if-else-if。這些判斷式用高階語言寫都不難,但如果變成組合語言呢?請各位讀者挑戰...
reversing kr 是一個很不錯的練習逆向的地方。 reversing .kr 介紹 This site tests your ability to...
昨天有嘗試將驗證字串編碼,但還是容易被逆向找到程式邏輯並繞過。今天嘗試透過 Fuzzing 將程式位元反轉使得 Debugger 無法逆向。 目標: 如下圖,B...
今天逆向並找出循環的特徵。包括常見的 for、while、do-while、break、continue。今天換一套逆向工具,使用 Hopper Disasse...
前言 今天會嘗試使用 Ghidra 這個逆向工具來逆向昨天那支很簡單的 Hello world 程式,流程其實意外的不複雜 XD,那我們就開始吧~ 逆向工具 最...
今天準備逆向並找出陣列的特徵。包括陣列基本特徵、使用 for loop 遍歷陣列元素、二維陣列。 基本特徵 可以看到數字 10h, 20h, 30h 被 mo...