OD修改軟件文本字符串內容
軟件沒有殼的狀態下,可以修改軟件的資源,達到替換軟件內容的功能。下面演示如何使用OD修改內容。
要修改的軟件,運行效果如圖
要求把內容:“大家好” 修改成“你好嗎” 或者“我是古天樂”
一樣長度的文本很好修改,不一樣的長度的文本修改起來就要困難一點。
修改方法
“大家好” 修改成“你好嗎”
1.使用OD載入軟件,拖到最上面,在旁邊的注釋窗口,已經給我們顯示出來了內容了,那么我們就可以很方便的修改了。
修改之前,先看看程序運行的原理,這兒拿易語言演示。
信息框 (“大家好”, 0, “我是渣渣輝”, ),這段代碼,在機器執行的時候,把參數從右到左推入棧中
所以從上面的OD可以看到先PUSH的是“我是渣渣輝”
入棧后,就會調用相關命令,機器碼中是使用的CALL方法,如下圖,紅色標注的為CALL方法
既然知道了原理,那么我們就動手開始修改吧。我們的第一個目標是修改“大家好”為“你好嗎”
選擇 0040102C |. 68 8FD54700 push 測試.0047D58F ; ASCII "大家好"
這行數據,右鍵->在數據窗口中跟隨->立即數
可以在下面的HEX數據窗口看到已經跳到了指定的地址0047D58F,和上面機器碼push 測試.0047D58F 的十六進制數一樣
選擇要修改的內容,雙擊或者任意按鍵內容,會彈出一個窗口,這個窗口就可以修改數據了
我們在上面的ASCII窗口輸入要修改的內容:“你好嗎”
輸入內容顯示為亂碼,沒關系,點擊確定即可
【關于保持大小選項,取消勾選,則內容可以隨意長度,不過可能保存后會溢出,導致程序運行報錯的情況】
可以看到,內容已經成功的被修改成了你好嗎
這個時候運行程序,可以看到彈窗提示為“你好嗎”
“大家好” 修改成“我是古天樂”
上面的修改很簡單,只要長度一致就可以任意修改。如果長度不一致,盡管有些時候可以取消勾選保持大小,但是很容易報錯。可行的辦法則是在數據窗口找一塊空白的數據地址,鍵入內容。
首先找一塊空白的區域,可以看到程序尾部有一大段空白的區域,那么這兒就能隨意的填充內容。
按照上面的修改方法,修改內容
文本開始的地址為0048ED5F,這個則為數據地址,那么入棧也需要把這個數據推入
找到指令0040102C |. 68 8FD54700 push 測試.0047D58F ; ASCII "大家好"
雙擊修改匯編代碼,默認入棧的地址為0047D58F,我們需要修改成我們添加文本的地址:0048ED5F
修改好以后,點擊匯編,則修改成功
運行后成功,可以看到如下圖,提示被成功的修改了