flashget 1.40 的粗略分析和探討.[修改版] (9千字)
今天起來一看:上次貼的程式碼段貼上錯位置了,[筆記太亂樂:),時間又太晚了]
Aming Thank you!
F****g*t
1.40 的粗略分析和探討.[修改版]
先建立如下條件:
[HKEY_CURRENT_USER\Software\JetCar\JetCar\General]
"RegDisp",註冊框中顯示的名字
"RegName",有可能用於註冊校驗的使用者名稱.
"RegPass",註冊碼.
感謝Aming的帖子!他可真痴情!好男子就應該這樣![請有空多鍛鍊身體,以後有用!]
bpx 41C65A
:0041C65A 8B13
mov edx, dword ptr [ebx]
:0041C65C 8B42F8
mov eax, dword ptr [edx-08]
:0041C65F 83F82C
cmp eax, 0000002C
;此處有比較註冊碼長度的程式碼,應為0x2C,(44)
:0041C662 0F85D1000000
jne 0041C739
* Possible StringData Ref from Data
Obj ->"fgc-" ;此處比較註冊碼開頭可是為"fgc-" (4)
:0041C668 687C144F00
push 004F147C
:0041C66D 8BCB
mov ecx, ebx
:0041C66F E8CED70700 call 00499E42
:0041C674 85C0
test eax, eax
:0041C676 7506
jne 0041C67E
:0041C678 897C2410
mov dword ptr [esp+10], edi
:0041C67C
EB18 jmp
0041C696
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041C676(C)
* Possible StringData Ref from Data Obj ->"fgf-"
:0041C67E 6874144F00 push 004F1474
;此處比較註冊碼開頭是否為"fgf-" (4)
:0041C683 8BCB
mov ecx, ebx
:0041C685 E8B8D70700 call 00499E42
:0041C68A 85C0
test eax, eax
:0041C68C 0F85A7000000
jne 0041C739
:0041C692 89442410
mov dword ptr [esp+10], eax
所以,我們假設註冊碼型如:
fgc-a123b456c789d012e345f678g901h234i567j890
另外,作者有一個隱含的字串:"kevinhouhytzl"
其中"hytzl"是flashget舊版本的加密字串,好象是0.95還用著,其他的沒有嘗試.
以下這段程式碼在校驗a123和b456
;-------------------------------------------
:0041C6A8 8B4500
mov eax, dword ptr [ebp+00]
:0041C6AB 8BCF
mov ecx, edi
:0041C6AD 83C504
add ebp, 00000004
:0041C6B0
83E900 sub ecx,
00000000
:0041C6B3 8944241C
mov dword ptr [esp+1C], eax
:0041C6B7 741C
je 0041C6D5
:0041C6B9 49
dec ecx
:0041C6BA 7533
jne 0041C6EF
:0041C6BC 0FBE74241E
movsx esi, byte ptr [esp+1E]
:0041C6C1 0FBE54241F
movsx edx, byte ptr [esp+1F]
:0041C6C6
0FBECC movsx ecx,
ah
:0041C6C9 23F1
and esi, ecx
:0041C6CB 0FAFF2
imul esi, edx
:0041C6CE 0FBEC0
movsx eax, al
:0041C6D1 03F0
add esi, eax
:0041C6D3 EB1A
jmp 0041C6EF
:0041C6D5 8A4C241E
mov cl, byte ptr [esp+1E]
:0041C6D9 8AD4
mov dl, ah
:0041C6DB 33CA
xor ecx, edx
:0041C6DD 0FBE54241F movsx edx,
byte ptr [esp+1F]
:0041C6E2 83E17F
and ecx, 0000007F
:0041C6E5 0FAFCA
imul ecx, edx
:0041C6E8 0FBEC0
movsx eax, al
:0041C6EB
03C8 add
ecx, eax
:0041C6ED 8BF1
mov esi, ecx
:0041C6EF 8B442410
mov eax, dword ptr [esp+10]
:0041C6F3 85C0
test eax, eax
:0041C6F5 740C
je 0041C703
:0041C6F7 0FBE0D43F64E00 movsx
ecx, byte ptr [004EF643]
:0041C6FE 83FF02
cmp edi, 00000002
:0041C701 7407
je 0041C70A
:0041C703
0FBE8F40F64E00 movsx ecx, byte ptr [edi+004EF640]
:0041C70A 8BC6
mov eax, esi
:0041C70C 33D2
xor edx, edx
:0041C70E F7F1
div ecx
:0041C710 8BC7
mov eax, edi
:0041C712 83E800
sub eax, 00000000
:0041C715 740A
je 0041C721
:0041C717 48
dec eax
:0041C718
750B jne
0041C725
:0041C71A 83FA08
cmp edx, 00000008
:0041C71D 7511
jne 0041C730
:0041C71F EB04
jmp 0041C725
:0041C721 85D2
test edx, edx
:0041C723 750B
jne 0041C730
:0041C725 47
inc edi
:0041C726 83FF02
cmp edi, 00000002
:0041C729 7D23
jge 0041C74E
:0041C72B E978FFFFFF
jmp 0041C6A8
:0041C730 6AFF
push FFFFFFFF
:0041C732 8BCB
mov ecx, ebx
:0041C734 E8BC220800
call 0049E9F5
:0041C739 5F
pop edi
:0041C73A 5E
pop esi
:0041C73B 5D
pop ebp
:0041C73C 33C0
xor eax, eax
:0041C73E 5B
pop ebx
:0041C73F 8B4C2420
mov ecx, dword ptr [esp+20]
:0041C743 64890D00000000
mov dword ptr fs:[00000000], ecx
:0041C74A 83C42C
add esp, 0000002C
:0041C74D
C3
ret
a123=0x61,0x31,0x32,0x33,並取kevin中的"k"=0x6b
必須滿足:(((0x32^0x33)&0x7F)*0x34+0x61)%0x6B==0
b456=0x62,0x34,0x35,0x36,並取kevinhouhytzl中"e"=0x65
必須滿足:((0x34&0x35)*0x36+0x62)%0x65==0x08
鑑於Aming說的不便公開的情況,請自己計算應該是哪些字元吧! :-)
;-------------------------------------------
程式到這裡就不再校驗字串中其他部分.而是將記憶體標誌
4F7BD4=1,表示已註冊.然後開始執行,沒有廣告視窗.
但......
暗地裡有個動作: set privatetimer ,timerinterval=0xD98 即3480(d)
相當於執行到58分時,嘿嘿~~~~~~:
:0042A651 E88A83FEFF
call 004129E0
:0042A656 8BC8
mov ecx, eax
:0042A658 E8E31EFFFF
call 0041C540 ;比較
4F7BD4 記憶體標記
:0042A65D 85C0
test eax, eax ;註冊了嗎?
;-)
:0042A65F 7427
je 0042A688 ;沒有註冊的話就跳過去.
:0042A661 A1F87C4F00 mov eax,
dword ptr [004F7CF8] ;有的話就進行時間判斷.
:0042A666 3D980D0000
cmp eax, 00000D98 ;58分了嗎?
:0042A66B
750E jne
0042A67B ;不到時間的話,就增加計數值去
:0042A66D E86E83FEFF
call 004129E0
;到時間了![這個call沒有跟]
:0042A672 8BC8
mov ecx, eax
:0042A674 E8678FFFFF
call 004235E0
;隱含比較註冊碼中欄位,見下(A)
:0042A679 EB0D
jmp 0042A688 ;這個jmp似乎應該為
jmp 42A682,見下(B)
:0042A67B 3DA10D0000
cmp eax, 00000DA1 ;58分又過9秒了嗎? 這段程式碼由於上面的分析,可能永遠不會走到.
:0042A680 7406
je 0042A688 ;是則不再使用這個隱含timer
:0042A682
40
inc eax ;
:0042A683 A3F87C4F00
mov dword ptr [004F7CF8], eax
:0042A688
8BCF mov
ecx, edi
:0042A68A E895490700
call 0049F024
:0042A68F 8B4C242C
mov ecx, dword ptr [esp+2C]
:0042A693 5F
pop edi
:0042A694
5E
pop esi
:0042A695 5B
pop ebx
:0042A696 64890D00000000
mov dword ptr fs:[00000000], ecx
:0042A69D 83C42C
add esp, 0000002C
:0042A6A0
C20400 ret 0004
(A)只發現比較d012,從call 4235E0跟進,程式碼在下,不知道有無其他比較,請續進!:
如果不滿足d012這個的話,程式會在登錄檔中建立一個value,用你的regpass作為名字!!
很長哦!我沒有讓它這麼做.似乎下次啟動會檢測[當a123,d012滿足條件時],至於結果,
我也沒有嘗試,我好怕怕!他會幹什麼??????
(B)
見程式碼中的註釋,程式似乎並不比較計數值==0xDA1,也許是那個jmp錯了.kevinhou似乎
是想到58分9秒時不再計數了,但好象沒有走到哦,計數一旦到0xD98就會停止.
???
以下校驗d012
;-------------------------------------------
:00423618 0FBE44240E movsx eax,
byte ptr [esp+0E]
:0042361D 0FBED5
movsx edx, ch
:00423620 0BC2
or eax, edx
:00423622 0FBE54240F
movsx edx, byte ptr [esp+0F]
:00423627
0FAFC2 imul eax,
edx
:0042362A 0FBEC9
movsx ecx, cl
:0042362D 03C1
add eax, ecx
:0042362F 33D2
xor edx, edx
:00423631 0FBE0D43F64E00
movsx ecx, byte ptr [004EF643]
:00423638 F7F1
div ecx
:0042363A
8BCE mov
ecx, esi
:0042363C 85D2
test edx, edx
:0042363E 741E
je 0042365E
:00423640 E8B0B30700
call 0049E9F5
:00423645 8B16
mov edx, dword
ptr [esi]
:00423647 6A00
push 00000000
:00423649 52
push edx
:0042364A 68ACF14E00
push 004EF1AC
:0042364F 8BCF
mov ecx, edi
:00423651 E808700800 call 004AA65E
:00423656 5F
pop edi
:00423657 33C0
xor eax, eax
:00423659 5E
pop esi
:0042365A
83C408 add esp,
00000008
:0042365D C3
ret
d012=0x64,0x30,0x31,0x32,並取kevinhouhytzl中的"i"=0x69
必須滿足:((0x30|0x31)*0x32+0x64)%0x69==0
也請自行計算
;-------------------------------------------
未完成的任務:
1)註冊碼其餘欄位沒有比較,可能有其他timer![極有可能],我沒有時間跟了.
2)也可能他再完成特殊動作時再比較,比如,下載某個大體積的軟體時忽然做比較[給你少下幾個豆][不會這麼壞吧]
3)也可能他要到後續版本再出來比較.反正kevinhouhytzl這幾個字元都要用到.
4)也有可能在上面的(A)處寫入以regpass為名字的values再啟動後有花招,我也沒有跟.
5)也許下載一箇舊的flashget
1.30就會發現其他的比較程式碼,我也沒有跟.
6)改為fgf-開頭看看?
7)由於有以上的不確定因素,所以我暫時也沒有註冊,只是用
bpm 4F7BD4 來觀察它根據註冊情況的createwindow
強行改了4處跳轉,使主程式不顯示廣告視窗,要讓Site Explorer也不顯示的話,還應該改幾處.
請兄弟們跟進!趁星期天!
by oOOOo 2003/01
相關文章
- 網際快車(FlashGet)
V1.40 國際版2015-11-15
- [技術討論]科學基礎的分析和探討對話2010-09-01
- The JPEG Wizard 1.40破解 (4千字)2001-02-01
- 深入探討ROP 載荷分析2020-08-19
- Recover4All v1.03的破解探討 (7千字)2000-09-30
- Java9模組化特性及工具探討2017-11-21Java
- Java原始碼分析:深入探討Iterator模式2007-08-24Java原始碼模式
- Oracle資料庫伺服器IO高的分析方案和案例探討2017-04-12Oracle資料庫伺服器
- PatchGuard自效驗粗略分析2018-09-10
- Promise探討2019-01-02Promise
- 詞法分析(修改版)2015-10-10詞法分析
- flashget0.96去除廣告條方法 (3千字)2001-06-15
- ASPR1.2x新版本的脫殼初步探討 (5千字)2015-11-15
- C#中的介面和泛型集合探討2020-04-05C#泛型
- 探討父元件和兄弟元件的生命週期2019-04-20元件
- NSOperation的進階使用和簡單探討2018-11-24
- NSThead的進階使用和簡單探討2018-11-15
- 深入探討 Undefined2018-10-23Undefined
- IsPostBack深入探討2008-12-01
- 深入探討、理解Java的CLASSPATH2009-03-15Java
- 探討分析國產新遊《霓虹深淵》設計思路2020-08-04
- Android業務元件化之現狀分析與探討2016-09-09Android元件化
- px em rem 探討2018-03-07REM
- with as探討時小插曲2015-03-11
- Oracle Stream 深入探討2010-11-30Oracle
- JdonFramework程式碼探討2005-02-16Framework
- Open Session In View 探討2006-11-29SessionView
- 關於 js 物件 轉 字串 和 深拷貝 的 探討2019-02-16JS物件字串
- 探討遊戲藝術和遊戲設計的美學意境2022-07-01遊戲設計
- DHCP (Dynamic Host Configuration Protocol )協議的探討與分析2021-02-19Protocol協議
- 工業大資料分析平臺的應用價值探討2018-11-12大資料
- 開發者探討:獨立遊戲如何衡量和定義成功2022-04-13遊戲
- python建立elasticsearch索引的探討2018-11-12PythonElasticsearch索引
- 一起探討JavaScript的物件2018-09-19JavaScript物件
- RabbitMQ中三個TTL的探討2022-02-09MQ
- Web 框架的架構模式探討2018-05-23Web框架架構模式
- 關於mongo原子操作的探討2015-12-13Go
- 探討工廠模式的物件建立2010-01-17模式物件