小甲鱼 OllyDbg 教程系列 (三) :PJ 软件功能限制
?
小甲魚OllyDbg教程:https://www.bilibili.com/video/av6889190?p=8
https://www.freebuf.com/articles/system/87723.html
程序下載地址:https://pan.baidu.com/s/1OprawMSCXPZw1wuY5vxMmA 提取碼: tp9e
?
?
無殼的實例
目標:去除軟件功能限制
工具:OD
安裝好這款軟件打開如圖:
這款軟件有諸多功能限制,如:
當我們選擇Add Group,提示沒有注冊只能創(chuàng)建3個Group:
選擇Add,提示沒有注冊只能添加4個聯(lián)系人:
我們打開About PixtopianBook,彈出未注冊版本信息。
我們將其載入OD(建議下載一個原版OD#www.ollydbg.de#,我們嘗試手動配置忽略異常)如圖:
點擊運行后,并沒有出現(xiàn)程序界面,而是拋出了異常:
我們手動開啟忽略異常:
打開后選擇 exception:
勾選如上,再點擊Add lase exception。
配置完成后點擊OK。
配置完成后重新載入程序,點擊運行,成功打開了程序。
?
?
?
??正式開始!
?
1、Group
將軟件載入OD,點擊Add Group。
我們在其彈出消息框后暫停OD。
此時狀態(tài)欄顯示:暫停,我們此時需要返回到程序領空,快捷鍵Alt+F9。
然后點擊消息框?確定?此時狀態(tài)欄顯示:?返回到用戶
我們成功返回到程序領空,向上翻。
看到了一個MessageBox,這就是我們剛才確定的那個消息框。
向下我們將
這個命令將帶我們返回到調(diào)用CALL處。所以我們繼續(xù)向下執(zhí)行。
進行retn:
我們跳出了call,返回到了調(diào)用處、
我們看到:
1.這個Call就是我們剛才進入的Call,加入我們能跳過這個call,就能避免跳出消息框。
2.查看這個ascii碼,正是消息框的標題和內(nèi)容,在這里被壓入棧,等待調(diào)用。
3.這里有一個cmp,比較eax與3大小(即Group是否等于3),如果小于就跳轉到(JL)00408B34,如果已經(jīng)有3個Group了,就執(zhí)行call彈出未注冊消息框。
你一定已經(jīng)知道我們將要干什么了!
將JL(小于則跳轉)改為jmp(強制跳轉)。
這樣我們就成功跳過了GROUP驗證。
我們將其保存:
測試一下:
哈哈,已經(jīng)可以自由添加Group了!!是不是很有成就感啊!學習逆向成就感很重要哦。
?
?
2、聯(lián)系人
?
默認未注冊用戶只能添加四個聯(lián)系人,我們采取同樣方法:
1、彈出消息框后暫停
2、Alt+F9執(zhí)行到用戶代碼
3、點擊確定
跳轉到這個位置,我們向上翻,看到同樣的MessageBox,如下:
通過retn跳出call,回到調(diào)用處,向上翻:
1、這個call調(diào)用了MessageBox,彈出了消息框;
2、這句話同我們看到的一樣,確定程序在這里將其壓入棧;
3、比較eax與4的大小(聯(lián)系人是否已經(jīng)有4個),如果小于等于(JL)4個,那就跳過消息框,否則彈出未注冊消息框。
我們同樣修改jl為jmp,強制其跳轉:
保存后測試一下:
我們又成功搞定了一個功能!這個閹割版已經(jīng)成了注冊版,不過還有一些美中不足的地方。比如:
那我們就開始讓它從里到外都是注冊版!
?
3、更改版本信息
標題,版本文字在代碼區(qū)是找不到的,我們直接在內(nèi)存中找
輸入查找關鍵字UNREGISTERED:
如果ASCII沒有搜索到就用UNICODE
(這里ASCII也可以搜索到,不過不是版本信息,UNICODE下搜索到版本信息,點擊確定):
記錄下004D4830,在dump面板跳轉:
跳轉之后成功找到需要修改的內(nèi)容:
我們選擇要修改的內(nèi)容,右鍵編輯:
編輯為自己想寫的字符,如下:
?
?
4、DIY標題
同樣是在內(nèi)存中查找,在彈出的搜索框里輸入關鍵字:(UNREGISTERED VER
(一般情況下是不知道要搜索的文字是ascii還是unicode,我們會都嘗試搜索一次。
記下004E4BE6,在dump窗口跟隨:
找到需要修改的字符然后編輯:
確定后如下圖所示:
?
?
5、更改提示注冊文字
同理,我們在內(nèi)存中搜索:
首先嘗試UNICODE,沒有搜索到結果。
再嘗試ASCII搜索:
成功搜到了字符串:
記錄下位置48F974,并跳轉到該處:
用同樣的方法編輯ASCII碼:
編輯完成后如下:
在所有工作做完之后,不要忘記保存:
保存后我們查看效果:
?
?
6、結尾
我們?nèi)园l(fā)現(xiàn)了一些美中不足的地方。
在進入程序時,首先是歡迎信息:
幾秒后變?yōu)?#xff1a;
我們想讓它更加簡潔,一直顯示welcome信息,該怎么操作呢?
那我們開始進行最后一步!!
通過上面的操作我們已經(jīng)知道了注冊文字在48F974處,在dump(數(shù)據(jù)窗口)窗口右鍵跳轉到48F974
我們需要知道程序哪一段調(diào)用了這段字符串。
我們右鍵選擇查找參考(Ctrl+R)(個人覺得做漢化翻譯得有點問題,這個命令的英文是Find references,意思應該是查找引用,參考這個詞不太合適):
找到一處引用,我們雙擊進入:
我們來到如圖所示的代碼位置:
發(fā)現(xiàn)上面有一處cmp和jnz(cmp與jnz組合代表:如果不相等,則跳轉),如果ebp等于907,則將這串字符壓入棧(可以猜測,907代表未注冊),我們根據(jù)跳轉向上翻:
向上翻到這里:
又有一處cmp和jnz,意思是如果ebp不等于906,就要跳轉回0040C22F處。
(我們可以猜測,906代表注冊過)
這個程序我們已經(jīng)完全弄清楚了,我們直接在0040C235的jnz處進行強制跳轉,讓其不會將這串字符壓入棧:
修改后,我們最后一次保存:
打開:
整款軟件已經(jīng)沒有限制。。。。。
?
?
?
總結
以上是生活随笔為你收集整理的小甲鱼 OllyDbg 教程系列 (三) :PJ 软件功能限制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 程序的抽样分析器 - Py
- 下一篇: DOS 命令、必会的 10个 DOS 命