軟體破解:暴力修改軟體執行機制或者分析軟體相關演算法使免費使用商業
軟體。
逆向工程是反彙編程式而分析出軟體的原始碼。
逆向工程包括:分析軟體,分析閉源軟體的原始碼,分析源軟體的互操作性,
分析編譯器產生的程式碼來驗證編譯器的效能和正確性(軟體註冊)
方法/步驟
10.1
軟體破解
軟體破解:暴力修改軟體執行機制或者分析軟體相關演算法使免費使用商業
軟體。
逆向工程是反彙編程式而分析出軟體的原始碼。
逆向工程包括:分析軟體,分析閉源軟體的原始碼,分析源軟體的互操作性,
分析編譯器產生的程式碼來驗證編譯器的效能和正確性(軟體註冊)
今天我們要舉例的軟體是是一個郵件伺服器所用的軟體:
WebEasyMail
,
中文標準版本價格如下
使用者數
標準版本價格
(
人民幣
)
250
使用者
530
元
500
使用者
930
元
1000
使用者
1530
元
2000
使用者
2130
元
5000
使用者
2930
元
無限制使用者
3930
元
這些是標準版的價格
530+930+1530+2130+2930+3930
=
11980
如果破了標準版
我們就等於
破了一個價值
11980
元的軟體
不過我們今天要破的企業版
企業版是這個軟體的高階版本
也是最好的版本
但是企業版的沒有報價,
估計無限制使用者的企業版
要
10
萬元
首先下載這個軟體的企業版
這裡是官方的下載地址
,
然
後
安裝。
檢測殼
殼的概念:所謂“殼”就是專門壓縮的工具。
這裡的壓縮並不是我們平時使用的
RAR
、
ZIP
這些工具的壓縮,殼的壓縮指
的是針對
exe
、
com
、和
dll
等程式檔案進行壓縮,在程式中加入一段如同保護
層的程式碼,使原程式檔案程式碼失去本來面目,從而保護程式不被非法修改和反
編譯,這段如同保護層的程式碼,與自然界動植物的殼在功能上有很多相似的地
方,所以我們就形象地稱之為程式的殼。
1
、殼的作用:
保護程式不被非法修改和反編譯。
對程式專門進行壓縮,以減小檔案大小,方便傳播和儲存。
2
、殼和壓縮軟體的壓縮的區別是:
壓縮軟體只能夠壓縮程式
而經過殼壓縮後的
exe
、
com
和
dll
等程式檔案可以跟正常的程式一樣執行
3
、下面來介紹一個檢測殼的軟體
PEID v0.92
這個軟體可以檢測出
450
種殼
新版中增加病毒掃描功能,是目前各類查殼工具中,效能最強的。
另外還可識別出
EXE
檔案是用什麼語言編寫的
VC++
、
Delphi
、
VB
或
Delphi
等。
支援資料夾批量掃描
我們用
PEID
對
easymail.exe
進行掃描
找到殼的型別了
UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
說明是
UPX
的殼
脫殼
1
、概念:對一個加了殼的程式,去除其中無關的干擾資訊和保護限制,把他的
殼脫去,解除偽裝,還原軟體本來的面目。這個過程就叫做脫殼。
2
、脫殼成功的標誌
脫殼後的檔案正常執行,功能沒有損耗。
還有一般脫殼後的檔案長度都會大於原檔案的長度。
即使同一個檔案,採用不同的脫殼軟體進行脫殼,由於脫殼軟體的
機理不通,脫出來的檔案大小也不盡相同。
3
、關於脫殼有手動脫殼和自動脫殼
自動脫殼就是用專門的脫殼機脫
很簡單
按幾下就
OK
了
手動脫殼相對自動脫殼
需要的技術含量微高
4
、工具:
UPX SHELL
的外殼軟體
UPX SHELL v3.09 UPX
外殼程式!
目的讓
UPX
的脫殼加殼傻瓜化
注意:
1
、如果程式沒有加殼
那麼我們就可以省去第二步的脫殼了,直接對軟體
進行分析了。
2
、脫殼後的軟體可用
PEID
軟體識別出
EXE
檔案是用什麼語言編寫的。
嘗試註冊
執行程式
WebEasyMail,
嘗試註冊
,
獲取註冊相關資訊通過嘗試註冊
我們發
現一個關鍵的字串“序列號輸入錯誤”
反彙編(
W32Dasm
)
反彙編就是把可執行的二進位制檔案轉為彙編程式碼
,
進而可以研究該程式
我們平時寫程式用的都是這樣那樣的語言
.
但是計算機是不認這種語言的
.
所以在程式釋出前就要進行彙編
,
把你的程式彙編成計算機能夠識別的二進位制
程式碼後再交由計算機機執行
.
反彙編就是彙編的逆過程
,
將二進位制程式碼轉換成原
來的程式語句
.
作用
:
把軟體的程式碼從
EXE
中解析出來
.
通常編寫程式是利用高階語言如
C
,
Pascal
等語言進行程式設計的,後再經過編譯程式生成可以被計算機系統直接執行
的執行檔案。反彙編即是指將這些執行檔案反編譯還原成組合語言或其他高階
語言。但通常反編譯出來的程式與原程式會存在許多不同,雖然執行效果相同,
但程式程式碼會發生很大的變化,非程式設計高手很難讀懂。
另外,有許多程式也可以進行逆向操作即反編譯以求修改,例如
Flash
的
檔案生成的
SWF
檔案,也可以被反彙編成
Flash
原碼,但會發現與原程式有很
大變化
反彙編一般用到的軟體
都是
W32Dasm
,
W32dasm
對於新手
易於上手
操作
簡單,
W32Dasm
有很多版本
這裡我推薦使用
W32Dasm
無極版
1
、我們現在反彙編
WebEasyMail
的程式檔案
easymail.exe
2
、然後看看
PE
資訊
--
字串參考,在搜尋欄中輸入“序列號輸入錯誤”
解析漢化(
eXeScope
)
通過
eXeScope
這個軟體來檢視未能在
w32dasm
中正確顯示的字串資訊。
1
、沒搜尋到,原因不識別漢字,所以使用
eXeScope v6.50
更改字型,更改選單,更改對話方塊的排列,重寫可執行檔案的資源,包括
(EXE
,
DLL
,
OCX
)
等。
是方便強大的漢化工具,
可以直接修改用
VC++
及
DELPHI
編制的程式的資源,包括選單、對話方塊、字串表等新版可以直接檢視
加殼文
件的資源。
2
、在
eXeScope v6.50
中檔案開啟
easymail.exe
,選擇資源—字串找到
關鍵字序列號輸入錯誤對應的編號。
3
、我們找到如下字串符
122,"
序列號輸入錯誤
"
123,"
恭喜您成為
WebEasyMail
正式使用者中的一員
! "
124,
註冊成功
125,
失敗
重點是
122
確定註冊程式碼位置
再次返回
w32dasm
查詢
122
得到
Possible Reference to String Resource ID=00122: "?
鰺
e
?"
在查詢中找
Possible Reference to String Resource ID=00122:
對應的
組合語言。
mov a,b
把
b
的值賦給
a
,使
a
=
b
call
:呼叫子程式
,子程式以
ret
結為
ret
:返回主程式
je
或
jz
:若相等則跳轉
jne
或
jnz
:若不相等則跳轉
push xx
:
xx
壓棧
pop xx
:
xx
出棧
棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的
儲存區。裡面的變數通常是區域性變數、函式引數等。
我們記住除錯斷點的這個地址
除錯(
ollydbg
)
用到的軟體是
ollydbg
測試程式
1
、
開啟
WebEasyMail
2
、
點選右鍵選擇“前往”
==
》表達輸入
406F01
地址
3
、
設定斷點
4
、
執行
5
、
註冊觀察提示資訊
6
、
F8
單步跳過,觀察提示資訊,能看到註冊碼,
7
、
好了我們找到了
註冊碼
ASCII
後面的
8
、
用註冊碼在執行成功。
但是這個並不是我們的主要目的,我們還要做出屬於自己的註冊機,相信這個
是很多人夢寐以求的事情
步驟八:製作註冊機(
KEYMAKE
)
註冊機我們需要的是一個
KEYMAKE
的軟體
因為
2.0
是演示版而且停止更新了,所以我們用
1.73
版
注意事項
因為2.0是演示版而且停止更新了,所以我們用1.73版