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