反编译exe软件_【娱乐向】exe逆向工程(破译《游戏开发课》老师的成绩程序)...
生活随笔
收集整理的這篇文章主要介紹了
反编译exe软件_【娱乐向】exe逆向工程(破译《游戏开发课》老师的成绩程序)...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第一幕
- 我們的游戲老師有一個自己的網站,他很喜歡在他網站上發布各種各樣的消息,也包括我們的成績。
- 我們第一次小測的成績他就放了一個鏈接,鏈接里面是個exe文件,只要你輸入了你的學號,就可以查到你的成績。
- 但是由于大家是知道互相的學號的,所以互相就能查到各自的成績,所以引起了不滿。
第二幕
- 于是老師就發送了一個Passcode,讓我們使用Passcode來查詢成績。
- 這個passcode長成這樣
- 總共是8位數,全部都是數字。
- 我上看下看,都看不出這串數字和學號之間的關系。
第三幕
- 期中考的時候,老師就通過這個exe文件,讓我們查詢了我們的成績。
- 當時我是相當好奇
- 到底其他同學分數咋樣?
- 這個passcode和學號的關系是怎么樣?
- 由于太忙了,我沒有去深入調查。
期末
- 然而期末的時候,老師發了個小組作業成績和期末成績的成績單。
- 小組作業查出來是這個
- 期末成績是這個
- 這逗我玩呢????
- 于是我下定決心,得把它這exe拆了才行。
嘗試
- 我去網上搜了幾個軟件,lpspy,dnspy,Resource Hacker,全部以失敗告終。
- 他們都只能處理C#相關的包文件。
查找
- 很重要的關鍵詞在于逆向工程(reverse engineering) ,一旦知道了這個詞之后,你再去搜索結果,出來的工具會靠譜很多。
- 在查閱了大量資料只好,我發現IDA-pro可以將exe文件轉為匯編語言。
IDA-pro
- 安裝好IDA-pro之后,我馬上開始處理老師的文件。【教育用途】
- 因為這里是主流處理器和執行配置,所以默認選項即可。
- 等待處理結束后,出現了這樣的界面。
- 左邊是函數名稱,右邊則是大段的匯編代碼。
- 這里是一些關于函數窗口的解釋,來自于IDA的幫助文檔,但是對于理解這些代碼的幫助并不大。
直接觀察
結論1: 黑體的函數更重要
- 原因:我猜黑體的是執行了的函數,因為main也在里面。
結論2:老師沒有自己寫函數(除了main)
- 原因: 這一點其實讓我非常的意外。我原來的推測是老師是用了什么辦法,通過我們的學號生成了passcode,然后再進行輸入輸出的操作。這理應需要一個函數,但是在IDA顯示的函數表中,并沒有任何像是人寫的函數名。
- 當然,這也有可能是IDA本身就不會正確顯示函數名稱。
著手研究main函數
線索1:輸出
- 即使是匯編語言,輸出也會是可以辨別的,我很快的在main函數里找到了很多個輸出的地方。
- 這里感覺他應該是采用了一些變量來存儲這些字符串語句,但是具體我也不是太懂,我想看的主要是有關成績和的部分。
線索2:大量定義變量和賦值
- 在main的一開頭,有著一處顯然在大量定義變量。
- 那可以推測,在某處肯定進行了賦值和給分。
- 我認為顯然是一下這處。
- 我看到這里都是16進制數,我覺得可以將我的passcode轉成16進制,再進行比對,來確認這些是不是對應的passcode和分數。
- 下面這是我的轉換結果
- 額,一下就對上了,下面的分數也是對上的。
結論:
彩蛋
2. 老師的FinalExam_Mark里面沒有任何一個同學的真實成績。
小總結
- IDA pro是一個非常強大的反編譯軟件,它對于電腦病毒,惡意代碼,匯編,指令集等領域的研究有很大幫助。
- 我這里只看了看main函數,事實上函數窗口中有非常多系統預定義的函數,如果能把這些函數吃透,我們就基本可以理解編譯運行一個程序的時候,計算及內部究竟發生了什么。這可以很大程度的幫助我們理解程序語言,編譯器,還有和計算機組成原理相關的知識。
聲明
- 以上所謂的結論的其實都是我的推測,也許是錯的也說不定。
- 這篇博文主要是滿足大家的好奇心,僅供娛樂。如有冒犯,敬請原諒。
- 新年快樂,身體健康。
總結
以上是生活随笔為你收集整理的反编译exe软件_【娱乐向】exe逆向工程(破译《游戏开发课》老师的成绩程序)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win8系统硬盘怎么修复工具怎么用 wi
- 下一篇: 我军的激光演习系统太落后