AVI-GIF V1.0.9 漢化版的演算法跟蹤
AVI-GIF V1.0.9 漢化版的演算法跟蹤
軟體大小:
619 KB
軟體語言: 簡體中文
軟體類別: 漢化補丁 / 共享版 / 影像轉換
應用平臺: Win9x/NT/2000/XP
下載頁面:
http://www.skycn.com/soft/7228.html
軟體介紹:
AVI-GIF 是一套影像轉換器,它可以將 AVI轉換成GIF.GIF轉換成AVI影像格式,您的AVI影片若有好看的片段,但苦無轉檔案程式轉換成GIF的話,AVI-GIF是一個不錯的選擇。
【作者宣告】:本人是個初學者,只是感興趣,沒有其它目的。失誤之處敬請諸位大俠賜教!
【破解工具】:0llydbg_cn
v1.09 TRW2000 V1.22
【過 程】:
這個軟體的演算法比較簡單,但是斷點不好下,試了幾個常用的API都沒有中斷.只好用TRW2000跟到這裡,然後再用0llydbg繼續跟蹤.
填好:使用者名稱 fxyang ; 試驗碼 7894561230123456
跟蹤過程如下:
004ACDEB
MOV EAX, DWORD PTR SS:[EBP-1C] ; EAX <== SS:[12FC70]=DF0AD8,(ASCII
"fxyang")
004ACDEE LEA EDX, DWORD PTR SS:[EBP-8]
004ACDF1
CALL AVIGIF0.0040894C ;
處理使用者名稱
004ACDF6 LEA EDX, DWORD PTR SS:[EBP-20]
004ACDF9
MOV EAX, DWORD PTR SS:[EBP-4]
004ACDFC MOV
EAX, DWORD PTR DS:[EAX+390>
; EAX <==DS:[DE2EEC]=00DF0000,(ASCII
"tIH")
004ACE02 CALL AVIGIF0.004382F4
004ACE07
MOV EAX, DWORD PTR SS:[EBP-20] ; EAX <== SS:[12FC6C]=00E053B4,("7894561230123456")
004ACE0A
LEA EDX, DWORD PTR SS:[EBP-C]
004ACE0D CALL
AVIGIF0.0040894C ; 處理試驗碼的,因為沒有看到別的限制,不進了
004ACE12 CMP
DWORD PTR SS:[EBP-8], 0 ; SS:[12FC84]=00DFBFC0,(ASCII"fxyang")
004ACE16
JE AVIGIF0.004ACFC8
004ACE1C LEA
EAX, DWORD PTR SS:[EBP-24]
004ACE1F PUSH EAX
004ACE20
MOV ECX, DWORD PTR SS:[EBP-8] ; ECX<==SS:[12FC84]=00DFBFC0,(ASCII"fxyang")
004ACE23
MOV EDX, 21C6918E
; EDX =21C6918E (賦值)
004ACE28 MOV EAX,
DWORD PTR SS:[EBP-4]
004ACE2B CALL AVIGIF0.004ACC08
; <==計算註冊碼的CALL***
004ACE30 MOV
EDX, DWORD PTR SS:[EBP-24]
; EDX
<== SS:[EBP-24]=00E053F4,(ASCII "1074552978-1272341746-1843791096")得到的真註冊碼
004ACE33
MOV EAX, DWORD PTR SS:[EBP-C]
;
EAX <==SS:[12FC80]=00E053D4,(ASCII "7894561230123456")輸入的試驗碼
004ACE36
CALL AVIGIF0.004048F0
; 註冊碼的比較CALL
004ACE3B JNZ AVIGIF0.004ACF93
; 關鍵跳轉,爆破點
004ACE41
LEA EDX, DWORD PTR SS:[EBP-2C]
004ACE44 XOR
EAX, EAX
======================================
CALL AVIGIF0.004ACC08 ; <==計算註冊碼的CALL***
--------------------------------------
004ACC08
PUSH EBP
004ACC09 MOV EBP, ESP
004ACC0B
PUSH 0
004ACC0D PUSH 0
004ACC0F PUSH
0
004ACC11 PUSH 0
004ACC13 PUSH
0
004ACC15 PUSH EBX
; 計算部分開始
004ACC16
PUSH ESI
004ACC17 PUSH EDI
004ACC18
MOV [LOCAL.2], ECX ; SS:[12FC3C]=00DFBFC0,(ASCII"fxyang")
004ACC1B
MOV [LOCAL.1], EDX ; SS:[12FC40]<==EDX
=21C6918E (賦值)
004ACC1E MOV EAX, [LOCAL.2] ;
EAX<==SS:[12FC3C]=00DFBFC0,(ASCII"fxyang")
004ACC21 CALL
AVIGIF0.00404994
004ACC26 XOR EAX, EAX
004ACC28
PUSH EBP
004ACC29 PUSH AVIGIF0.004ACD9A
004ACC2E
PUSH DWORD PTR FS:[EAX]
004ACC31 MOV
DWORD PTR FS:[EAX], ESP
004ACC34 LEA EAX, [LOCAL.3]
004ACC37
CALL AVIGIF0.004044F4
004ACC3C XOR ESI,
ESI
004ACC3E CMP [LOCAL.1], 0
004ACC42 JE
AVIGIF0.004ACD74
004ACC48 CMP [LOCAL.2], 0
004ACC4C
JE AVIGIF0.004ACD74
004ACC52 MOV
EAX, [LOCAL.2] ; EAX<==SS:[12FC3C]=00DFBFC0,(ASCII"fxyang")
004ACC55
CALL AVIGIF0.004047AC
004ACC5A MOV EBX,
EAX ; EBX=6
004ACC5C
TEST EBX, EBX
004ACC5E JLE SHORT AVIGIF0.004ACC86
004ACC60
MOV EDI, 1
; EDI=1 (賦值) 第一次計算
004ACC65 /MOV
EAX, [LOCAL.2] ; EAX<==SS:[12FC3C]=00DFBFC0,(ASCII"fxyang")
004ACC68
|CALL AVIGIF0.004047AC ; 取長度的CALL
004ACC6D
|IMUL [LOCAL.1] ; EAX=EAX*SS:[12FC40]=6*21C6918E=CAA76954
004ACC70
|ADD ESI, EAX
; ESI=ESI+EAX=0+CAA76954
004ACC72 |MOV EAX, [LOCAL.2]
; EAX<==SS:[12FC3C]=00DFBFC0,(ASCII"fxyang")
004ACC75
|MOVZX EAX, BYTE PTR DS:[EAX+EDI>; EAX<==DS:[DFBFC0]=66
('f')
004ACC7A |IMUL EAX, EAX, 2CE
; EAX=EAX*2CE=66*2CE=11E14
004ACC80 |ADD
ESI, EAX ; ESI=ESI+EAX=CAA76954+11E14=CAA88768
004ACC82
|INC EDI
004ACC83 |DEC EBX
; 計算的次數
004ACC84
\JNZ SHORT AVIGIF0.004ACC65
; //這段計算是把使用者名稱各位的hex值*2CE+使用者名稱長度平方*21C6918E,得到的值==>ESI
004ACC86
MOV EAX, ESI
; EAX<==ESI=BFF39F6E (上面的值)
004ACC88 CDQ
004ACC89
XOR EAX, EDX
; EAX=EAX XOR EDX=BFF39F6E XOR FFFFFFFF=400C6091
004ACC8B
SUB EAX, EDX
; EAX=EAX SUB EDX=400C6091-FFFFFFFF=400C6091+1=400C6092
004ACC8D
LEA EDX, [LOCAL.3]
004ACC90 CALL AVIGIF0.00408A00
; <==使用者名稱經過第一次計算後的值 MOD A 直到商=0
餘數往前排就得到一組新的值
004ACC95 LEA EAX, [LOCAL.3]
004ACC98 PUSH
EAX
004ACC99 MOV EAX, [LOCAL.3] ;
EAX <==SS:[12FC38]=00DFE338,(ASCII "1074552978")
004ACC9C
CALL AVIGIF0.004047AC
004ACCA1 MOV EDX,
EAX ; EDX=A
(1074552978)
004ACCA3 SUB EDX, 0A
004ACCA6 MOV
ECX, 0A
004ACCAB MOV EAX, [LOCAL.3] ;
EAX <==SS:[12FC38]=00DFE338,(ASCII "1074552978")
004ACCAE
CALL AVIGIF0.00404A04
004ACCB3 MOV EAX,
[LOCAL.2] ; EAX<== SS:[12FC3C]=00DFBFC0,(ASCII "fxyang")
004ACCB6
CALL AVIGIF0.004047AC ;
取使用者名稱長度的CALL
004ACCBB MOV EBX, EAX
004ACCBD TEST
EBX, EBX
004ACCBF JLE SHORT AVIGIF0.004ACCE8
004ACCC1
MOV EDI, 1
; 第二次計算
004ACCC6 /MOV EAX,
[LOCAL.2] ; EAX<== SS:[12FC3C]=00DFBFC0,(ASCII "fxyang")
004ACCC9
|CALL AVIGIF0.004047AC ;
取使用者名稱長度的CALL
004ACCCE |MOV EDX, [LOCAL.2] ;
EDX<== SS:[12FC3C]=00DFBFC0,(ASCII "fxyang")
004ACCD1 |MOVZX
EDX, BYTE PTR DS:[EDX+EDI>; 用EDI做指標來取使用者名稱的各位
004ACCD6 |IMUL
EDX, [LOCAL.1] ; EDX=EDX*SS:[12FC40]=66*21C6918E=751DFE94
004ACCDA
|IMUL EDX, EDX, 7BC
; EDX=EDX*7BC=751DFE94*7BC=D3FD00B0
004ACCE0 |ADD
ESI, EDX ; ESI=ESI+EDX=BFF39F6E+D3FD00B0=93F0A01E
004ACCE2
|SUB ESI, EAX
; ESI=ESI-EAX=93F0A01E-6=93F0A018
004ACCE4 |INC
EDI
; EDI++
004ACCE5 |DEC EBX
; EBX--
004ACCE6
\JNZ SHORT AVIGIF0.004ACCC6
; //使用者名稱經過第一次計算後的值+使用者名稱各位hex值*21C6918E*7BC-使用者名稱長度的平方==>ESI
004ACCE8
PUSH [LOCAL.3]
; SS:[12FC38]=00DEE29O,(ASCII "1074552978")
004ACCEB
PUSH AVIGIF0.004ACDB4
004ACCF0 MOV EAX,
ESI ; EAX<==ESI=4BD664F2
004ACCF2
CDQ
004ACCF3 XOR EAX, EDX
004ACCF5 SUB
EAX, EDX
004ACCF7 LEA EDX, [LOCAL.4]
004ACCFA
CALL AVIGIF0.00408A00
; 再一次進行<==使用者名稱經過第2次計算後的值 MOD A 直到商=0 餘數往前排就得到一組新的值
004ACCFF PUSH
[LOCAL.4]
; SS:[12FC34]=00DFA848,(ASCII "1272341746")
004ACD02
LEA EAX, [LOCAL.3]
004ACD05 MOV EDX,
3
004ACD0A CALL AVIGIF0.0040486C ; 這個call把上面二次的註冊碼用"-"連線起來
004ACD0F
MOV EAX, [LOCAL.2] ; EAX <==SS:[12FC3C]=00DFBFC0,(ASCII
"fxyang")
004ACD12 CALL AVIGIF0.004047AC
; 取使用者名稱長度的CALL
004ACD17 MOV
EBX, EAX
; EAX=6
004ACD19 TEST EBX, EBX
004ACD1B JLE
SHORT AVIGIF0.004ACD4A
004ACD1D MOV EDI,
1 ;
第三次計算
004ACD22 /MOV EAX, [LOCAL.2] ; EAX
<==SS:[12FC3C]=00DFBFC0,(ASCII "fxyang")
004ACD25 |CALL
AVIGIF0.004047AC ; 取使用者名稱長度的CALL
004ACD2A
|MOV EDX, [LOCAL.2] ; EDX <==SS:[12FC3C]=00DFBFC0,(ASCII
"fxyang")
004ACD2D |MOVZX EDX, BYTE PTR DS:[EDX+EDI>;
用EDI做指標來取使用者名稱的各位
004ACD32 |IMUL EDX
; EAX=EAX*EDX=6*66=264
004ACD34
|IMUL EAX, EAX, 4C6
; EAX=EAX*4C6=264*4C6=B6958
004ACD3A |ADD ESI,
EAX ; ESI=ESI+EAX=4BD6642F(上次計算的值)+B6958
004ACD3C
|MOV EAX, [LOCAL.2]
;
EAX <==SS:[12FC3C]=00DFBFC0,(ASCII "fxyang")
004ACD3F |CALL
AVIGIF0.004047AC ; 取使用者名稱長度的CALL
004ACD44
|ADD ESI, EAX
; ESI=ESI+EAX=4BE1CE4A+6=4BE1CE50
004ACD46 |INC
EDI
; EDI++
004ACD47 |DEC EBX
; EBX--
004ACD48
\JNZ SHORT AVIGIF0.004ACD22
; //使用者名稱經過第2次計算後的值+使用者名稱各位hex值*使用者名稱的長度*4C6+使用者名稱長度的平方+21C6918E==>ESI
004ACD4A
ADD ESI, [LOCAL.1]
; ESI=ESI+SS:[12FC40]=4C1F736A+21C6918E=6DE604F8
004ACD4D PUSH
[LOCAL.3]
; SS:[12FC38]=00DFA0CO,(ASCII "1074552978-1272341746")
004ACD50
PUSH AVIGIF0.004ACDB4
004ACD55 MOV EAX,
ESI ; EAX
<==ESI=6DE604F8
004ACD57 CDQ
004ACD58 XOR EAX,
EDX
004ACD5A SUB EAX, EDX
004ACD5C LEA
EDX, [LOCAL.5]
004ACD5F CALL AVIGIF0.00408A00
; 再一次進行<==使用者名稱經過第3次計算後的值 MOD A 直到商=0
餘數往前排就得到一組新的值,
004ACD64 PUSH [LOCAL.5]
; SS:[12FC30]=00DFFFF0,(ASCII
"1843791096")
004ACD67 LEA EAX, [LOCAL.3]
004ACD6A
MOV EDX, 3
004ACD6F CALL AVIGIF0.0040486C
; 這個CALL 把得到的值用"-"連線起來
004ACD74
MOV EAX, [ARG.1]
; //到此註冊碼的計算和連線已完成
004ACD77 MOV EDX, [LOCAL.3]
; EDX=SS:[12FC38]=00EC53F4,(ASCII
"1074552978-1272341746-1843791096")
004ACD7A CALL AVIGIF0.00404548
004ACD7F
XOR EAX, EAX
004ACD81 POP EDX
004ACD82
POP ECX
004ACD83 POP ECX
004ACD84
MOV DWORD PTR FS:[EAX], EDX
004ACD87 PUSH
AVIGIF0.004ACDA1
004ACD8C LEA EAX, [LOCAL.5]
004ACD8F
MOV EDX, 4
004ACD94 CALL AVIGIF0.00404518
004ACD99
RETN
====================================================
CALL
AVIGIF0.00408A00
|
|
來到這裡: 註冊碼中間的處理過程
004094B2
MOV ECX, 0A
; ECX<==0A (賦值); Case 55 ('U') of switch
00409486
004094B7 LEA ESI, DWORD PTR SS:[EBP-61]
;
註冊碼經過第一次計算後在計算並變換
004094BA /XOR EDX, EDX
004094BC
|DIV ECX
; EAX =EAX/ECX=400C6092/A ==>EAX=667A341
EDX=8
004094BE |ADD DL, 30
; DL=DL+30 ,<==就是把DL的值變成hex值得到一個數字
004094C1
|CMP DL, 3A
; 比較值的範圍30-39
004094C4 |JB
SHORT AVIGIF0.004094C9
004094C6 |ADD DL, 7
004094C9
|DEC ESI
004094CA |MOV BYTE PTR DS:[ESI],
DL
; 得到的數字放到DS:[ESI]=DS:[12EB7A]處並往前排
004094CC
|OR EAX, EAX
; /DS:[ESI] (ASCII "1074552978")
004094CE
\JNZ SHORT AVIGIF0.004094BA
; //使用者名稱經過第一次計算後的值
MOD A 直到商=0 餘數往前排就得到一組新的值
004094D0 LEA ECX, DWORD PTR SS:[EBP-61]
004094D3
SUB ECX, ESI
; ESI=0012EB71,(ASCII "1074552978") ||(ASCII
"1272341746")||(ASCII "1843791096"
004094D5 MOV
EDX, [LOCAL.9] ; EDX<==FFFFFFFFF
004094D8
CMP EDX, 10
004094DB JBE SHORT AVIGIF0.004094DE
004094DD
RETN
*******************************************************************
註冊演算法的總結:由於試驗碼的檢查中沒有關於長度和形式的檢查,所以試驗碼隨便.
註冊碼是由三段數字組成設為: M-N-L
1.M (第一組)的計算方法:
1).把使用者名稱各位的hex值*2CE+使用者名稱長度平方*21C6918E
設為 B0 (長度取八位)
2).把B0 XOR FFFFFFFF 然後+1 設為
C0
3).C0 MOD A(常數) 直到商=0 餘數往前排就得到一組新的值=M
2.N (第二組)的計算方法:
1).第一次值C0+使用者名稱各位hex值*21C6918E*7BC-使用者名稱長度的平方 設為 B1 (長度取八位)
2).B1 MOD A(常數) 直到商=0 餘數往前排就得到一組新的值=N
3.L (第三組)的計算方法:
1).第2次值B1+使用者名稱各位hex值*使用者名稱的長度*4C6+使用者名稱長度的平方+21C6918E
設為 B2 (長度取八位)
2).B2 MOD A(常數) 直到商=0 餘數往前排就得到一組新的值=L
如:
使用者名稱 fxyang
註冊碼
1074552978-1272341746-1843791096
fxyang
2003.3.5
相關文章
- SuperCleaner V2.50 漢化版的演算法跟蹤2003-03-05演算法
- Revival 的演算法跟蹤2015-11-15演算法
- opencv的目標跟蹤演算法2021-09-09OpenCV演算法
- Storm的跟蹤演算法-異或2016-06-22ORM演算法
- 目標跟蹤演算法概述2020-04-06演算法
- 演算法分析__遞迴跟蹤2019-03-05演算法遞迴
- 目標跟蹤演算法分類2018-08-19演算法
- [zt] oracle跟蹤檔案與跟蹤事件2008-09-10Oracle事件
- oracle跟蹤檔案與跟蹤事件(zt)2007-03-16Oracle事件
- oracle跟蹤檔案和跟蹤事件(zt)2007-09-18Oracle事件
- Dream缺陷跟蹤系統 2.0版本2019-05-11
- 【跟蹤演算法】MOSSE論文翻譯2018-10-24演算法
- 基於行跟蹤的ROWDEPENDENCIES實現資訊變化跟蹤2015-05-04
- git的跟蹤分支和遠端跟蹤分支學習筆記2018-03-22Git筆記
- 基於MeanShift的目標跟蹤演算法、實現2017-12-10演算法
- SQL 的跟蹤方法trace2007-06-11SQL
- sqlnet跟蹤2016-12-04SQL
- ORACLE 跟蹤工具2014-05-27Oracle
- HP下對程式的跟蹤2009-02-27
- 跟蹤 sql 的trace檔案2011-08-11SQL
- 跟蹤使用者的SQL2011-04-07SQL
- 【Longkin】ASP.NET應用程式跟蹤---(一)跟蹤頁面2008-06-02ASP.NET
- 反跟蹤技術2021-01-05
- 【TRACE】Oracle跟蹤事件2015-09-01Oracle事件
- Oracle跟蹤會話2010-06-15Oracle會話
- Oracle 跟蹤事件【轉】2010-01-25Oracle事件
- Oracle跟蹤檔案2005-11-02Oracle
- 主力跟蹤戰法2024-10-16
- sp_trace_setfilter sqlserver篩選跟蹤或跟蹤過濾2020-04-05FilterSQLServer
- ORACLE 10046 設定跟蹤事件後無跟蹤檔案2010-09-30Oracle事件
- Instyler Ex-it!
漢化版 1.64 簡單演算法分析2015-11-15演算法
- [原創]演算法淺探――OpenCanvas
V2.24 漢化版2015-11-15演算法Canvas
- Mac好用的時間跟蹤器2020-10-09Mac
- git列出跟蹤的檔案列表2018-05-24Git
- Oracle 10046跟蹤的使用2015-12-23Oracle
- 幻影使用的反跟蹤技術2003-06-21
- 目標跟蹤演算法----KCF進階(基於KCF改進的演算法總結)2017-03-19演算法
- eclipse漢化方法&取消漢化退回英文版2020-10-18Eclipse