文書處理大師 3.0 破解~~~附序號產生器 (17千字)
名稱:文書處理大師(TextFile) 3.0
下載:http://www.esoftware.com.cn/file/utility/reader/2002032101.shtml
簡介:
主要是對文字和資料庫的各種處理,如:在每一行之前(或某個位址)加上某一字串,強大的替換功能,在多檔案中查詢的功能,處理從網頁中複製貼上來的文字中的特殊字元,挺有用的一些功能
限制:
未註冊的“文書處理大師”使用上會有一些限制,一是會禁用某一功能,這一被禁用的功能是隨機抽出來的,重新開啟程式後,初禁用的功能可能會變為另一個。所以說未註冊的使用者也是可以完全使用本程式的功能的,只是在使用在有一些不便。
為何釋出序號產生器:
(Readme中原文)“文字處理大師”其實對未註冊版並沒有太多的限制,但是還是有極少數.分子.釋出它的破解版。我們必須說明的是,這些破解都是不完全的,破解人僅僅是做到將“未註冊”這個提示及操作灰顯去掉而已,我們的資料處理和加密是密不可分的破解人去掉了這些也就去掉了某一些的功能,並且有可能觸發“文字處理大師”的陷井,所以在此提醒各位使用者切勿使用盜版以免資料破壞。
開始~~~~~~~~程式是用delphi開發的,我不大喜歡delphi的軟體,老覺得它重複執行一些無用的命令,毫無效率,也許是作者故意放的垃圾程式碼.進入後程式顯示[未註冊],點註冊,此程式註冊有點特別,填入資料後無確定鍵可按,直接退出程式後再進入,如正確程式顯示[正式版]
破解思路:如果你一開始就將它反彙編(未加殼)查詢以上特徵字串的話,你會看到Code 2的程式碼,仔細除錯可以找到比較的地方,不過比較的資料全為0,通常你會去除錯00524255和0052425F兩個地方,因為下面有跳轉,這樣你會什麼都找不到,或者你會爆破,但你看了作者的話後還會這樣做嗎?在很多東西還是未知數的情況下只能用動態的bpm老方法了,除錯過程中一不小心讓我看到了GetPrivateProfileString函式,呵呵,程式在讀INI檔案,不過還是挺難追的,可能是我機器裡裝了太多東西影響了除錯吧.終於讓我確定了它的核心地方,請先看Code
1和Code 2兩個地方,在Code 2的地方往上一點你可以看到"sys1.ini"字串(我沒貼出來),不用說Code 2是程式啟動時執行的,Code
1是程式退出時執行的,因為我們還沒有註冊,當然在Code 2處是看不到比較的啦.好啦往下看~~
==Code 1==================================================================
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004CF749(C)
|
:004CF7B8 E84F6D0500 call 0052650C
<---這裡是核心
:004CF7BD 8B45F8
mov eax, dword ptr [ebp-08]
:004CF7C0 50
push eax
:004CF7C1 8D55F0
lea edx, dword ptr [ebp-10]
:004CF7C4 A138CE5200 mov eax,
dword ptr [0052CE38]
:004CF7C9 8B8000030000 mov eax, dword
ptr [eax+00000300]
:004CF7CF E8B478F7FF call 00447088
:004CF7D4 8B55F0
mov edx, dword ptr [ebp-10]
:004CF7D7 58
pop eax
:004CF7D8 E88B56F3FF call 00404E68
:004CF7DD 755A
jne 004CF839
:004CF7DF 8D55EC
lea edx, dword ptr [ebp-14]
:004CF7E2 A138CE5200 mov eax,
dword ptr [0052CE38]
:004CF7E7 8B8000030000 mov eax, dword
ptr [eax+00000300]
:004CF7ED E89678F7FF call 00447088
:004CF7F2 8B45EC
mov eax, dword ptr [ebp-14]
:004CF7F5 50
push eax
:004CF7F6 A1ACBA5200 mov eax,
dword ptr [0052BAAC]
:004CF7FB 8B00
mov eax, dword ptr [eax]
* Possible StringData Ref from Code Obj ->"註冊碼"
|
:004CF7FD B978F84C00 mov ecx,
004CF878
* Possible StringData Ref from Code Obj ->"註冊"
|
:004CF802 BA88F84C00 mov edx,
004CF888
:004CF807 8B18
mov ebx, dword ptr [eax]
:004CF809 FF5304
call [ebx+04]
:004CF80C 8D55E8
lea edx, dword ptr [ebp-18]
:004CF80F A138CE5200 mov eax,
dword ptr [0052CE38]
:004CF814 8B80F8020000 mov eax, dword
ptr [eax+000002F8]
:004CF81A E86978F7FF call 00447088
:004CF81F 8B45E8
mov eax, dword ptr [ebp-18]
:004CF822 50
push eax
:004CF823 A1ACBA5200 mov eax,
dword ptr [0052BAAC]
:004CF828 8B00
mov eax, dword ptr [eax]
* Possible StringData Ref from Code Obj ->"使用者名稱"
|
:004CF82A B998F84C00 mov ecx,
004CF898
* Possible StringData Ref from Code Obj ->"註冊"
|
:004CF82F BA88F84C00 mov edx,
004CF888
:004CF834 8B18
mov ebx, dword ptr [eax]
:004CF836 FF5304
call [ebx+04]
==Code 2==================================================================
* Possible StringData Ref from Code Obj ->"使用者名稱"
|
:00524218 B954475200 mov ecx,
00524754
* Possible StringData Ref from Code Obj ->"註冊"
|
:0052421D BA64475200 mov edx,
00524764
:00524222 A110825300 mov eax,
dword ptr [00538210]
:00524227 8B18
mov ebx, dword ptr [eax]
:00524229 FF13
call dword ptr [ebx]
:0052422B 6A00
push 00000000
:0052422D 8D45F8
lea eax, dword ptr [ebp-08]
:00524230 50
push eax
* Possible StringData Ref from Code Obj ->"註冊碼"
|
:00524231 B974475200 mov ecx,
00524774
* Possible StringData Ref from Code Obj ->"註冊"
|
:00524236 BA64475200 mov edx,
00524764
:0052423B A110825300 mov eax,
dword ptr [00538210]
:00524240 8B18
mov ebx, dword ptr [eax]
:00524242 FF13
call dword ptr [ebx]
:00524244 8D55E4
lea edx, dword ptr [ebp-1C]
:00524247 8B45FC
mov eax, dword ptr [ebp-04]
:0052424A E8BD220000 call 0052650C
<---這裡才是核心
:0052424F 8B45E4
mov eax, dword ptr [ebp-1C]
:00524252 8B55F8
mov edx, dword ptr [ebp-08]
:00524255 E80E0CEEFF call 00404E68
:0052425A 7511
jne 0052426D
:0052425C 8B45FC
mov eax, dword ptr [ebp-04]
:0052425F E8C00AEEFF call 00404D24
:00524264 83F802
cmp eax, 00000002
:00524267 0F8D2E020000 jnl 0052449B
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0052425A(C)
|
:0052426D 8D55E0
lea edx, dword ptr [ebp-20]
:00524270 8BC6
mov eax, esi
:00524272 E8112EF2FF call 00447088
:00524277 8D45E0
lea eax, dword ptr [ebp-20]
* Possible StringData Ref from Code Obj ->" - [未註冊]"
==Step 1=================================================================
注意在除錯過程中我是先找到核心部分才找到Code 1和Code 2的,我們先進來看看
* Referenced by a CALL at Addresses:
|:004CF7B8 , :0052424A <------=====:-)
|
:0052650C 55
push ebp
:0052650D 8BEC
mov ebp, esp
:0052650F 83C4F8
add esp, FFFFFFF8
:00526512 53
push ebx
:00526513 56
push esi
:00526514 57
push edi
:00526515 33C9
xor ecx, ecx
:00526517 894DF8
mov dword ptr [ebp-08], ecx
:0052651A 8BDA
mov ebx, edx
:0052651C 8945FC
mov dword ptr [ebp-04], eax
:0052651F 8B45FC
mov eax, dword ptr [ebp-04]
:00526522 E8E5E9EDFF call 00404F0C
:00526527 33C0
xor eax, eax
:00526529 55
push ebp
:0052652A 68AA655200 push 005265AA
:0052652F 64FF30
push dword ptr fs:[eax]
:00526532 648920
mov dword ptr fs:[eax], esp
:00526535 8BC3
mov eax, ebx
:00526537 8B55FC
mov edx, dword ptr [ebp-04]
:0052653A E881E5EDFF call 00404AC0
:0052653F 8BC3
mov eax, ebx
:00526541 E826E5EDFF call 00404A6C
:00526546 8B45FC
mov eax, dword ptr [ebp-04]
:00526549 E8D6E7EDFF call 00404D24
:0052654E 8BF0
mov esi, eax
:00526550 85F6
test esi, esi
:00526552 7E29
jle 0052657D
:00526554 BF01000000 mov edi,
00000001
-------------------------------------------------------------------
這一小段就是算出註冊碼的地方,請在此處設斷,我的註冊名 Sam Von
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0052657B(C)
|
:00526559 8B45FC
mov eax, dword ptr [ebp-04]
:0052655C 8A4438FF mov
al, byte ptr [eax+edi-01]<---取註冊名的第一位
:00526560 346E
xor al, 6E <---xor掉,al=3D
:00526562 25FF000000 and eax,
000000FF
:00526567 8D55F8
lea edx, dword ptr [ebp-08]
:0052656A E89D30EEFF call 0040960C
<---進去,請先跳到Step 2處
:0052656F 8B55F8
mov edx, dword ptr [ebp-08]
:00526572 8BC3
mov eax, ebx
:00526574 E8B3E7EDFF call 00404D2C
<---儲存註冊碼
:00526579 47
inc edi
:0052657A 4E
dec esi <---迴圈n次,n是註冊名的長度
:0052657B 75DC
jne 00526559
------------------------------------------------------------------
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00526552(C)
|
這裡下d *ebx就可看到最後得到的字串
:0052657D 53
push ebx <---"61153785610"這個是正確的註冊碼嗎?不!
:0052657E 8B03
mov eax, dword ptr [ebx]
:00526580 B906000000 mov ecx,
00000006
:00526585 BA01000000 mov edx,
00000001
:0052658A E8EDE9EDFF call 00404F7C
<---裡面就是比較的地方,看上面ecx=6,不管你上面
:0052658F 33C0
xor eax, eax 的結果是多長,程式最多取6位,自己跟進去看看
:00526591 5A
pop edx 我的註冊碼是611537
:00526592 59
pop ecx
:00526593 59
pop ecx
:00526594 648910
mov dword ptr fs:[eax], edx
:00526597 68B1655200 push 005265B1
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:005265AF(U)
|
:0052659C 8D45F8
lea eax, dword ptr [ebp-08]
:0052659F BA02000000 mov edx,
00000002
:005265A4 E8E7E4EDFF call 00404A90
:005265A9 C3
ret
==Step 2=================================================================
為了節約版面,之前的一大段我認為是垃圾的程式碼略掉,如果你不先在0052656A處設斷而在這裡設斷的話,你會發現程式會經常呼叫這個地方.
0187:0040A156 B90A000000 MOV ECX,0A
0187:0040A15B 8D759F LEA
ESI,[EBP-61]
0187:0040A15E 31D2 XOR
EDX,EDX
0187:0040A160 F7F1 DIV
ECX <---這時eax=3D,相當於註冊名的第一位
0187:0040A162 80C230 ADD
DL,30 <---dl=1,
0187:0040A165 80FA3A CMP
DL,3A
0187:0040A168 7203 JC
0040A16D
0187:0040A16A 80C207 ADD
DL,07
0187:0040A16D 4E DEC
ESI
0187:0040A16E 8816 MOV
[ESI],DL <---儲存,d esi可看到字元"1"
0187:0040A170 09C0 OR
EAX,EAX <---如果eax不為0的話就往上跳
0187:0040A172 75EA JNZ
0040A15E <---註冊名的第一位算出了字串"61"
0187:0040A174 8D4D9F LEA
ECX,[EBP-61]
0187:0040A177 29F1 SUB
ECX,ESI
0187:0040A179 8B55DC MOV
EDX,[EBP-24]
0187:0040A17C 83FA10 CMP
EDX,BYTE +10
0187:0040A17F 7601 JNA
0040A182
0187:0040A181 C3 RET
從這裡返回後再經過一段垃圾,我們回到了Step 1處,需要注意的是,在除錯時,程式會經過很多次迴圈,通常第一次迴圈完後就可以找到它儲存註冊碼的地址,但有些程式的註冊碼是一部分一部分產生的,它儲存的地址在第n次迴圈時可能會變,特別是delphi做的軟體,我試過好幾個都是這樣,最好是在它儲存註冊碼的Call處設斷,不要每次都用F10帶過,這樣很容易跟丟的.現在我們回到Step
1
==End====================================================================
其實程式的演算法並不難,只不過不容易找到而已,下面講一點小技巧:
=========================================================================
象delphi這樣的程式有很多過程好象都是沒用的(個人認為),上面的Step 2是經過了好大一段程式碼才找到的,我在第一次除錯時看到記憶體裡的不少資料,如我發貼問過的-663098319(25
64 00 00),總認為它們會參於運算,但最終運算就一點關係都沒有,那在第一次除錯時當我們發現某個Call裡做的事情基本可以確定與演算法無關,我們就把它記在紙上,以後再遇上時就用F10代過,這樣可以省不少功夫,也不會被程式搞暈了頭.如果要確定一個Call有無作用,一般可在進入Call之前看看各暫存器指向的地址是否指向我們的註冊名或註冊碼等,另外象Step
1中我的註冊名第一位"S" xor 6E=3D,這個3D一定要留意,看到它的出現,就離成功很近了.
如下這一段基本無用,只是將註冊碼儲存而已!
:00404D2C 85D2
test edx, edx
:00404D2E 743F
je 00404D6F
:00404D30 8B08
mov ecx, dword ptr [eax]
:00404D32 85C9
test ecx, ecx
:00404D34 0F8486FDFFFF je 00404AC0
:00404D3A 53
push ebx
:00404D3B 56
push esi
:00404D3C 57
push edi
:00404D3D 89C3
mov ebx, eax
:00404D3F 89D6
mov esi, edx
:00404D41 8B79FC
mov edi, dword ptr [ecx-04]
:00404D44 8B56FC
mov edx, dword ptr [esi-04]
:00404D47 01FA
add edx, edi
:00404D49 39CE
cmp esi, ecx
:00404D4B 7417
je 00404D64
:00404D4D E856030000 call 004050A8
:00404D52 89F0
mov eax, esi
:00404D54 8B4EFC
mov ecx, dword ptr [esi-04]
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00404D6D(U)
|
:00404D57 8B13
mov edx, dword ptr [ebx]
:00404D59 01FA
add edx, edi
:00404D5B E8A8DCFFFF call 00402A08
<---進去看看,請看Call 1
:00404D60 5F
pop edi
:00404D61 5E
pop esi
:00404D62 5B
pop ebx
:00404D63 C3
ret
==Call 1================================================================
* Referenced by a CALL at Addresses:
|:004027BD , :00402F37 , :004030F2 , :0040310C , :00404ADB
|:00404B78 , :00404D16 , :00404D5B , :00404DAE , :00404DBD
|:00404E40 , :00404F49 , :00404FED , :00405048 , :00405055
|:004050F8 , :0040536C , :0040537A , :004053BF , :00405527
|:0040577F , :00405868 , :00406216 , :00406385 , :004093FC
|:00409432 , :0040956C , :00409C0C , :0040B499 , :0041931C
|:004194AA , :00419920 , :0041AB0C , :0041AB2A , :0041B517
|:0041B7A0 , :0041C04E , :0041C1E5 , :00422AC1 , :00424206
|:004267EF , :004269D5 , :00428BC4 , :00429CAA , :004355E3
|:0043F71A , :004404BA , :00481F9B , :00481FB8 , :0048B6B7
|:0048C6B8 , :00498F72 , :0049CA50 , :0049CB36 , :004A1E59
|:004A1EA8 , :004A1F54 , :004A48D7 , :004A4955 , :004A505F
|:004A50AC , :004A56DE , :004A56F9 , :004A8107 , :004A87DF
|:004B71D1 , :004B73AC , :004B7874 , :004B788A , :004B7D13
|:004B9601 , :004BB6D6 , :004BB7B6 , :0050760C , :0050A913
|:0050ACCA , :0050AE4E , :0050B1D3 , :0050B1F7 , :0050C057
|:0050C1B1 , :0050C1CB , :0050C2FE , :0050C34A , :0050C90F
|:0050E871 , :0051375D <-----=====哇~~~~~~~~~~~~~
|
:00402A08 56
push esi
:00402A09 57
push edi
:00402A0A 89C6
mov esi, eax
:00402A0C 89D7
mov edi, edx
:00402A0E 89C8
mov eax, ecx
:00402A10 39F7
cmp edi, esi
:00402A12 7713
ja 00402A27
:00402A14 742F
je 00402A45
:00402A16 C1F902
sar ecx, 02
:00402A19 782A
js 00402A45
:00402A1B F3
repz
:00402A1C A5
movsd
:00402A1D 89C1
mov ecx, eax
:00402A1F 83E103
and ecx, 00000003
:00402A22 F3
repz <---看清楚這個Call裡的內容後就可確定它有無用處了.
:00402A23 A4
movsb
==KeyGen==================================================================
附上序號產生器,將下面程式碼儲存為.rek檔案,用序號產生器編寫器編譯,序號產生器編寫器1.65測試透過.
支援中文名
.data
szHomePage db "http://www.365hz.net",0
szEmail db "mailto:ljyljx@163.com",0
szErrMess db "請輸入註冊名!",0
szTemp db 100 dup(0)
szBuffer db 100 dup(0)
.code
mov ebx,eax
mov eax,0
mov ecx,50
lea edi,szTemp
rep stosw
invoke lstrlen,ebx
push eax
lea edi,szTemp
mov ebp,esp
mov esi,ebp
Start:
xor eax,eax
mov al,byte ptr [ebx]
xor al,6Eh
PRO0:
xor edx,edx
mov ecx,0Ah
div ecx
add dl,30h
cmp dl,3Ah
jc PRO1
add dl,7
PRO1:
dec esi
mov [esi],byte ptr dl
or eax,eax
jnz PRO0
inc ebx
mov ecx,ebp
sub ecx,esi
rep movsb
mov eax,dword ptr [ebp]
dec eax
mov [ebp],dword ptr eax
jnz Start
lea esi,szTemp
lea edi,szBuffer
mov ecx,6
rep movsb
lea eax,szBuffer
;==Code End====================================================
_/_/_/
_/ _/_/_/ _/_/_/ _/_/
_/_/ _/ _/ _/ _/ _/
_/ _/ _/ _/ _/ _/
_/_/_/ _/_/_/ _/ _/ _/
Sam.com
4:54 2002-3-24
相關文章
- Pexplorer 1.70 完全破解(KeyFile&Name+Code),附序號產生器~~~~~~~~~
(17千字)2002-04-03
- AlgoLab PtVector的破解及序號產生器的編寫 (17千字)2001-05-04Go
- Resource
Builder 1.1.0 完全破解~~附彙編序號產生器 (10千字)2015-11-15UI
- supercapture3.0的版序號產生器!
(4千字)2002-04-23APT
- 音樂處理acoustica2.0註冊碼破解及序號產生器 (8千字)2002-04-06
- Kalua Cocktails 1.1完全破解,內附彙編序號產生器(用序號產生器編寫器,並有它的使用教程)
(22千字)2002-02-27AI
- winzip序號產生器 (1千字)2001-04-12
- Windows優化大師v3.0-v3.4的序號產生器原始碼2015-11-15Windows優化原始碼
- NetTalk破解與序號產生器(高手勿進) (10千字)2001-09-20
- 序號產生器制分析: (1千字)2001-11-19
- 破解accoustica
2.21(帶序號產生器)----讓高手見笑了:) (11千字)2002-03-31
- 網頁加密器(HTMLEncryptor1.1)破解及序號產生器 (1千字)2001-04-22網頁加密HTML
- 破解QQ圖形留言器3.0(不是OICQ圖形留言系統)及序號產生器編寫!! (6千字)2001-07-15
- 一個CrackMe的破解以及序號產生器的製作
(4千字)2001-08-16
- 3DAxy貪吃蛇 AxySnake 破解與序號產生器 (21千字)2015-11-153D
- winzip的通用序號產生器 (2千字)2001-12-10
- xplorer2之破解和序號產生器2004-12-05
- 010
Editorv1.3破解(序號產生器)2004-05-17
- 序號產生器合集2024-03-17
- SWF探索者XP 1.2(swfexplorer)破解+分析+序號產生器
(18千字)2002-04-14
- UltraEdit-32 8.10.1.0的破解及序號產生器的生成 (15千字)2001-05-15
- KEYGENNING4NEWBIES #7破解過程+序號產生器 (6千字)2001-08-21
- GIF Movie Gear v3.0.2 破解小談(附序號產生器原始碼)2015-11-15原始碼
- 美萍安全衛士V8.45序號產生器制作分析過程,及序號產生器! (11千字)2001-10-28
- Gif2Swf Ver 2.1 TC20序號產生器 && MASM32序號產生器 (4千字)2001-12-10ASM
- 2D動畫製作軟體:Moho Pro 14 for Mac 附序號產生器 圖文完整破解教程2023-11-27動畫Mac
- 貼彩虹狗破解工具的序號產生器 (727字)2001-07-01
- 《中華壓縮 6.01》註冊碼破解及序號產生器 (14千字)2001-08-19
- 《AceReader V4.5》破文+序號產生器原始碼 (12千字)2015-11-15原始碼
- IrfanView 序號產生器分析(初級版)
(13千字)2015-11-15View
- 製作mIRC6.02序號產生器(給別人寫的初學者序號產生器教材) (14千字)2015-11-15
- 成語速查 v3.0-3.2破文加序號產生器原始碼,簡單-高手看到不要笑
(8千字)2003-01-22原始碼
- 做不來序號產生器,只好暴破Windows優化大師V4.3 (4千字)2001-11-02Windows優化
- 續未完成破解,寫出它的序號產生器,3k。。。 (8千字)2001-07-09
- EmEditor V3.29和它的序號產生器 (12千字)2015-11-15
- Advanced Dialer v2.5演算法分析(附序號產生器) (3千字)2002-04-17演算法
- Myeclipse 6.5 序號產生器2020-04-06Eclipse
- hellfire2000破解過程及序號產生器的編寫(上) (4千字)2001-01-19