某國產字型的破解兼最土的檢視UniCode編碼漢字方法兼壓縮資源釋放。 (7千字)
某某某某字型破解
Passion慢慢研究
2002-09-27
淘垃圾郵件的時候發現眾多廣告信中的一封是一款字型。去看了看,某某某某(國產,隱去名稱)的確比較美觀,奇怪的是作者居然將字型做成了限制時間執行需要註冊的形式。本人的印象中字型就是一個ttf檔案,哪還談得上什麼註冊可言?現在見到這東西,馬上來了興趣。於是動手。
某某某某.exe檔案必須先執行後,字型列表中才會出現這一款字型,因此必須從EXE檔案下手。直接反一下亂得很,看來加了殼,FI以及GTW看一看是ASPACK,而ASPACKDIE直接脫不太成功。於是用TRW2000載入,PNEWSEC後到Code段入口中斷,然後--倒黴的是TRW2000忽然沒有PEDUMP命令了!用MAKEPE提示輸入表重建錯誤,看來什麼都得手工來。
PNEWSEC到入口452F3C,將入口的PUSH EBP等改成JMP 452F3C作死迴圈狀,退出TRW,啟動Procdump,Full Dump該“某某某某.exe”,Rebuild
PE,再修改其入口為52F3C,儲存後用UltraEdit開啟,查剛才改的“E9 FB FF FF FF”,改回原來的“55 8B EC 83 C4”,儲存後正常執行,脫殼成功。
GTW已經說它是用Delphi編的了。用DeDe反,有倆Form,一個是主視窗,另外一個卻不是註冊視窗,而是一個含有系統托盤區PopupMenu的隱藏視窗。另外該程式八成是用Delphi
6寫的,因為窗體的dfm資源儲存的是UNICODE的形式,漢字全是#38544#34255#31383#21475的形式,沒法子,想了個歪主意,利用網頁來看它。
題外話:用網頁來看#21475形式的UNICODE內容的辦法如下:
*******************************************************
<html>
<head>
<title>NewPage1</title> <meta
http-equiv="Content-Type"
content="text/html; charset=UTF-16"> 關鍵是UTF-16
</HEAD>
<body>
<p>隐藏窗口
<p>使用必读'(&S)
<p>注册软件'[&R]'
<P>退出'(&X)'
</body>
</HTML>
*******************************************************
把上面的#38544#34255#31383#21475等貼進來,#號前加上&數字後加上;就基本行了,該網頁在IE中顯示出正確的漢字如下:
隱藏視窗
使用必讀'(&S)
註冊軟體'[&R]'
退出'(&X)'
--這是手頭沒工具時的應急法子。
好了,回到DFM檔案,
object
Regist: TMenuItem
Caption = #27880#20876#36719#20214'[&R]'
OnClick = RegistClick
end
這是“註冊軟體”選單,點選會彈出註冊視窗。對應的452C6C處的RegistClick程式碼如下:
00452C6C 53
push
ebx
00452C6D 8BD8
mov ebx, eax
* Reference to pointer to GlobalVar_00454C70
|
00452C6F A14C3F4500
mov eax, dword ptr [$00453F4C] { 註冊標誌; }
00452C74
833800 cmp
dword ptr [eax], +$00
00452C77 750C
jnz 00452C85
// 非0則表示未註冊。
* Possible String Reference to: '軟體已註冊.版權歸xx字業
'
|
00452C79 B8082D4500
mov eax, $00452D08
* Reference to : TMessageForm._PROC_0042B3BC()
// 已經註冊的話,彈出提示並Exit。
|
00452C7E
E83987FDFF call 0042B3BC
00452C83 5B
pop ebx
00452C84 C3
ret
00452C85
6A01 push
$01
00452C87 A1944C4500
mov eax, dword ptr [$00454C94]
00452C8C 50
push eax
00452C8D 6A0F
push $0F
* Reference to: Forms.Proc_00452174
|
00452C8F E8E0F4FFFF call
00452174
// 這裡會呼叫一個DLL的函式,動態跟蹤的時候才能看到。
* Reference to pointer to GlobalVar_00454C70
|
00452C94 8B154C3F4500 mov
edx, [$00453F4C] { 註冊標誌; }
00452C9A 8902
mov [edx], eax
00452C9C
33D2 xor
edx, edx
* Reference to pointer to GlobalVar_00454C48
|
00452C9E
A1103E4500 mov eax, dword
ptr [$00453E10]
00452CA3 8B0D944C4500
mov ecx, [$00454C94]
00452CA9 0FB60C11
movzx ecx, byte ptr [ecx+edx]
00452CAD
8908 mov
[eax], ecx
00452CAF 42
inc edx
00452CB0 83C004
add eax, +$04
00452CB3
83FA0A cmp
edx, +$0A
00452CB6 75EB
jnz 00452CA3
* Reference to pointer to GlobalVar_00454C70
|
00452CB8 A14C3F4500
mov eax, dword ptr [$00453F4C] { 註冊標誌; }
00452CBD
833800 cmp
dword ptr [eax], +$00
00452CC0 750F
jnz 00452CD1
* Possible String
Reference to: 'heng.dll'
|
00452CC2 68242D4500
push $00452D24
* Reference to: Unit_00406678.Proc_00406848
|
00452CC7 E87C3BFBFF
call 00406848
* Reference to GlobalVar_00454C90
|
00452CCC A3904C4500 mov
dword ptr [$00454C90], eax
00452CD1 B201
mov dl, $01
00452CD3
8BC3 mov
eax, ebx
* Reference to: Unit1.Proc_00452864
|
00452CD5
E88AFBFFFF call 00452864
* Reference to control Regist : TMenuItem
|
00452CDA
8B83FC020000 mov eax, [ebx+$02FC]
* Possible String Reference to: '註冊資訊'
|
00452CE0 BA382D4500
mov edx, $00452D38
*
Reference to: Menus.Proc_004427EC
|
00452CE5 E802FBFEFF
call 004427EC
* Reference
to pointer to GlobalVar_00454C70
|
00452CEA A14C3F4500
mov eax, dword ptr [$00453F4C] { 註冊標誌;
}
00452CEF 8338FF
cmp dword ptr [eax], -$01
00452CF2 7509
jnz 00452CFD
00452CF4
33D2 xor
edx, edx
00452CF6 8BC3
mov eax, ebx
* Reference to: Unit1.Proc_00452864
|
00452CF8 E867FBFFFF
call 00452864
00452CFD 5B
pop ebx
00452CFE C3
ret
中間看不見什麼敏感資訊,倒是有個神秘的CALL,經動態跟蹤看看,原來是Call
LIUYS!HblKey306
* Reference to: Forms.Proc_00452174
|
00452C8F
E8E0F4FFFF call 00452174
看來作者也有些防DeDe全反而採取的呼叫DLL來進行註冊的措施。看看SYSTEM目錄下,果然有個LIUYS,也有個輸出函式是HblKey306,要命的是又加了殼。--我對脫DLL的殼不太在行。抱著Try一Try的心態用ProcDump來一下,嘿嘿,脫出一個比原大79K大不少的150多K的DLL來,反反看,沒問題,運氣好又脫成了。
反一把,發現裡頭實在太長太複雜了。而且脫殼後的DLL連輸入函式也看不見,看來這步分析演算法不容易走通。
於是轉到從外邊動手。FormCreate事件裡呼叫了這個DLL中的HblKey306函式,並把返回值EAX放入[$00453F4C],如果這裡把返回值改作0,那麼這個軟體就註冊了。
***************************************
FormCreate事件如下:
00452A78 53
push ebx
…………
00452A9D 6A0F
push $0F
* Reference to: Forms.Proc_00452174
|
00452A9F E8D0F6FFFF
call 00452174 { LIUYS!KBLKEY306
} 看返回值是否註冊
* Reference to pointer to GlobalVar_00454C70
|
00452AA4 8B154C3F4500 mov
edx, [$00453F4C] { 註冊標誌; }
00452AAA 8902
mov [edx], eax //
EAX會返回是否註冊,0代表已經註冊。
// 改成
mov [edx], 0 就什麼事都沒了。
…………
00452BAA C3
ret
好了,暴力破解透過。但還是不夠爽。想想看,要用一種字型,居然還得啟動一個可執行的程式?要是能從裡頭淘出一個fon檔案就好了。下面來玩這個……
看看該字型的安裝目錄,並沒有什麼特殊的東西,連個DLL也不見一個(除了uninstall的)。回想ProcDump脫殼的時候,該exe檔案使用了兩個名字不太眼熟的DLL,一個是處理註冊問題的LIUYS.dll,那麼理論上另外一個就應該是包含字型資訊的DLL了,而且字型資訊差不多就是以資源的形式放在該DLL中的。
在SYSTEM目錄下找到這個HENG.DLL,一看一M多,八成加了殼(因為漢字字型檔案都是兩三M的)複製出來,用ExeScope一看,有個FONTDA他的資源,看來就是了,不過不能檢視。看來軟體作者比較偏好ASPack,所有的可執行的全部用這個壓縮加殼。
對付這個DLL不像上面的Procdump,光Dump一下用Exescope一看,資源仍然無法檢視,似乎還是沒有解壓縮。正沒法子的時候,想起了有個資源解壓縮的工具freeres,用它開啟,提示資源已經壓縮,是否解壓?解壓後儲存為xxxx.fon檔案,複製進Windows/Font目錄,開啟寫字板敲幾個字選選字型看看,嘿嘿,行了。
相關文章
- UNICODE碼轉漢字2016-04-26Unicode
- 某國產Office for Linux的破解(簡單,菜鳥水平) (4千字)2015-11-15Linux
- 輕鬆提取資源1.45破解心得
(7千字)2015-11-15
- java插入排序兼編碼注意2013-05-03Java排序
- 漢字通破解手記 (19千字)2000-09-06
- 檢視網頁是否壓縮gzip+編碼方式2017-06-12網頁
- 隱藏目錄的加密光碟(1)----兼談DeDe的使用 (14千字)2001-03-26加密
- RESTOOLS -- freeRes分析軟體壓縮資源的超級利器 (2千字)2001-10-03REST
- 中華壓縮V7.0破解手記 (4千字)2001-11-20
- 高效的資料壓縮編碼方式 Protobuf2018-05-31
- 檢測softice(delphi版),兼回答以前一位朋友函式createfile使用的提問 (1千字)2001-10-14函式
- Java 程式的破解方法 (8千字)2002-08-15Java
- 破解ClockWise 3.03 (7千字)2001-06-06
- 《中華壓縮 6.01》註冊碼破解及序號產生器 (14千字)2001-08-19
- 鬥地主v2.4密碼的最簡單破解――OllyDbg破解法 (1千字)2001-08-02密碼
- 批量解壓縮(Batch UnZip)1.0.5破解紀錄(VB6) (1千字)2001-04-27BAT
- BOOT0的主要程式碼兼Unix下彙編小節(轉)2007-08-16boot
- 電腦字型秀破解過程 (1千字)2001-03-18
- Unicdoe【真正的完整碼錶】對照表(二)漢字Unicode表2013-06-07Unicode
- 7z——擁有極高壓縮比的開源壓縮軟體2024-11-11
- Hardlock加密狗破解過程-----外殼型加密狗的破解方法 (7千字)2001-10-15加密
- 兼職,求教2024-06-24
- 破解壓縮檔案密碼rarcrack2016-12-09密碼
- 瘋狂單詞的破解方法! (3千字)2000-08-22
- vTuner Plus 3.0 線上註冊的破解方法一:爆破篇 (7千字)2002-06-16
- 快速破解CCProxy 4.30(7千字)2002-01-26
- BabyGame 破解方法及註冊碼錶 (1千字)2001-07-04GAM
- 交一篇作業---破解Hedit 2.0的註冊碼 (7千字)2001-09-30
- 《TxEdit 4.6》的註冊碼破解 (11千字)2001-07-28
- 請看小弟KeyFile保護的破解 (7千字)2001-02-01
- 兩個月的破解回顧以及7個軟體的破解! (3千字)2000-12-28
- 分析破解某個軟體公司出的理財東東!
(14千字)2015-11-15
- 全網最詳細的AbstractQueuedSynchronizer(AQS)原始碼剖析(二)資源的獲取和釋放2021-12-12AQS原始碼
- 數字媒體技術揭祕(續)——壓縮編碼2017-03-06
- 《WinImage v5.00.5007 註冊碼破解》 (7千字)2001-05-10
- 某國產彩票V3.0軟體的演算法分析
(22千字)2015-11-15演算法
- 在EMR中使用snappy壓縮的時候快速檢視壓縮前文字的內容2017-12-19APP
- gz檔案檢視,syslog系統壓縮的2024-10-03