露米婭的軟體去廣告小實踐~
7 人贊了文章
在軟體逆向上,露米婭是三腳貓,偶爾會逛看雪論壇,但是什麼都不會…所以本文也是面向跟咱一樣的初學者的…
今天逛看雪論壇的時候,看到了這麼一個帖子,感覺不會太難,於是就準備自己動手嘗試一下啦~
[原創]QQ連連看單機版分析總結-『軟體逆向』-看雪安全論壇但是其中最關鍵的思路(WriteProcessMemory下斷點)已經被咱看到了……
不過,除了這個思路之外,本文中其它的內容都是露米婭自己做的~
先隨便下載一個……qq連連看單機版|qq連連看單機版下載 中文版_ - pc6遊戲網
下載之後就是看到如上所示的內容了~
運行「QQ連連看單機版V1.2.exe」,結果……
先彈出了廣告……之後點擊繼續才是主程序……
我們發現,目錄下有一個kyodai.exe,長得很像遊戲的主程序,但是直接雙擊,就會發現……
用OD跟蹤kyodai.exe看看是怎麼回事
alt+F9(執行到用戶代碼)之後一路F8,就來到了這裡。第一次調試,一路F8,就在00438177崩潰了,在這裡F8之後程序直接終止。
看到
00438177 E8 B6D70100 call 00455932
一行,F7進入這個函數看看(大家先記住00438177這個地址)
一片狼藉……顯然這裡是有問題的。
為什麼廣告程序就可以正常運行遊戲呢~
顯然,廣告程序裡面會將這個主程序修復,由於露米婭之前就得到了看雪論壇的指點,所以已經知道這個程序是用WriteProcessMemory這個系統函數來寫入遊戲進程並修復代碼的了……
直接用OD打開廣告程序,ctrl+G輸入WriteProcessMemory
F2下一個斷點
之後,直接按F9運行程序,讓廣告程序運行起來
然後,就是點擊廣告程序中的繼續了~(不要忘記去掉廣告中的鉤……)
廣告程序斷在了我們剛才下的斷點處,看看堆棧里傳了什麼參數……
嗯?往主程序的0043 817A地址(是不是很熟悉?剛才不是叫你記住0043 8177這個地址了嘛~這個0043 817A地址屬於那個call指令的一部分)寫入了1個byte,buffer地址是00484E70。右鍵,在數據窗口中跟隨buffer地址。
發現buffer裡面的值是0……
也就是說,廣告程序僅僅是會往0043 817A寫一個00而已。這樣,call的地址就會被修改,從而跳轉到正確的地址。
讓我們自己來試一下吧~
直接用OD打開kyodai.exe,數據窗口中ctrl+G到0043817A
選中後用鍵盤改成0……
call的地址是不是不一樣了呢?
對比一下:
修改之前是
00438177 E8 B6D70100 call 00455932
修改之後是
00438177 E8 B6D70000 call 00445932
F9繼續運行
QQ連連看的窗口出現啦~
看來,我們已經掌握了修復主程序的方法~
隨便用一個帶有搜索十六進位功能的十六進位查看器(我用的MiniHex)打開kyodai.exe(這裡我複製了一個副本)搜索十六進位串E8B6D70100,就可以看到……
讓我們將其改成E8 B6 D7 00 00,保存……
雙擊運行……
修改成功啦~
這樣,不用運行廣告程序,直接運行修復後的程序就可以玩啦~
是不是很棒呢~
原帖的作者是用OllyDump配合ImportREC來完成的,比較麻煩,不過大家也可以試試,這在程序脫殼之中也很有用喔~
推薦閱讀:
※新手到大神反編譯unity3d遊戲系列教程【一】
※青蛙旅行 — Unity3d類安卓遊戲逆向分析初探
※cquery最近改動與libclang.so一位元組補丁
※linux逆向基礎
※狗神沙梓社評《iOS應用逆向與安全》:感謝劉培慶這樣的傻子們
TAG:逆向工程 |