標籤:

露米婭的軟體去廣告小實踐~

露米婭的軟體去廣告小實踐~

7 人贊了文章

在軟體逆向上,露米婭是三腳貓,偶爾會逛看雪論壇,但是什麼都不會…所以本文也是面向跟咱一樣的初學者的…

今天逛看雪論壇的時候,看到了這麼一個帖子,感覺不會太難,於是就準備自己動手嘗試一下啦~

[原創]QQ連連看單機版分析總結-『軟體逆向』-看雪安全論壇?

bbs.pediy.com圖標

但是其中最關鍵的思路(WriteProcessMemory下斷點)已經被咱看到了……

不過,除了這個思路之外,本文中其它的內容都是露米婭自己做的~


先隨便下載一個……qq連連看單機版|qq連連看單機版下載 中文版_ - pc6遊戲網

下載之後的內容

下載之後就是看到如上所示的內容了~

運行「QQ連連看單機版V1.2.exe」,結果……

煩人的廣告

先彈出了廣告……之後點擊繼續才是主程序……

是不是很懷念呢?

我們發現,目錄下有一個kyodai.exe,長得很像遊戲的主程序,但是直接雙擊,就會發現……

看來主程序被破壞了

用OD跟蹤kyodai.exe看看是怎麼回事

第一次調試,一路F8,就在00438177崩潰了

alt+F9(執行到用戶代碼)之後一路F8,就來到了這裡。第一次調試,一路F8,就在00438177崩潰了,在這裡F8之後程序直接終止。

看到

00438177 E8 B6D70100 call 00455932

一行,F7進入這個函數看看(大家先記住00438177這個地址)

哇,這裡顯然不可執行

一片狼藉……顯然這裡是有問題的。

為什麼廣告程序就可以正常運行遊戲呢~

顯然,廣告程序裡面會將這個主程序修復,由於露米婭之前就得到了看雪論壇的指點,所以已經知道這個程序是用WriteProcessMemory這個系統函數來寫入遊戲進程並修復代碼的了……

直接用OD打開廣告程序,ctrl+G輸入WriteProcessMemory

ctrl+G

F2下一個斷點

下斷點

之後,直接按F9運行程序,讓廣告程序運行起來

然後,就是點擊廣告程序中的繼續了~(不要忘記去掉廣告中的鉤……)

程序停在了WriteProcessMemory裡面

廣告程序斷在了我們剛才下的斷點處,看看堆棧里傳了什麼參數……

嗯?往主程序的0043 817A地址(是不是很熟悉?剛才不是叫你記住0043 8177這個地址了嘛~這個0043 817A地址屬於那個call指令的一部分)寫入了1個byte,buffer地址是00484E70。右鍵,在數據窗口中跟隨buffer地址。

00484E70裡面的byte是0

發現buffer裡面的值是0……

也就是說,廣告程序僅僅是會往0043 817A寫一個00而已。這樣,call的地址就會被修改,從而跳轉到正確的地址。

讓我們自己來試一下吧~

直接用OD打開kyodai.exe,數據窗口中ctrl+G到0043817A

修改前

選中後用鍵盤改成0……

call的地址也變了

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:逆向工程 |