crackcode程式碼分享筆記(一) (8千字)
crackcode程式碼分享筆記(一)
今天有些失眠,睡不著,所以閒著也是閒著。今天剛把crackcode下了,挺小的才11.5k。
把它反彙編了。想慢慢的把程式從頭讀一遍,估計不會很難吧!:)今天還行,看了一點點,
先和大家分享。我的組合語言也學的馬虎,如果你們覺註釋還能看得過去的,就將就將!
:00401000 53
push ebx
:00401001 55
push ebp
:00401002 56
push esi
:00401003 57
push edi
:00401004 6A00
push 00000000
* Possible StringData Ref from Data Obj ->"Crackcode 2000 -- Author:Ru Feng
"
->"(http:\\ocqpat.163.net)"
|
:00401006 68AC624000 push 004062AC
* Possible StringData Ref from Data Obj ->"Thank you for using the Crackcode!Let
"
->"us make the
keygen so easy!"
|
:0040100B 6868624000 push 00406268
:00401010 6A00
push 00000000
* Reference To: USER32.MessageBoxA, Ord:0000h
|
:00401012 FF15C0504000 Call dword ptr
[004050C0]
^^^^^^^^^^^^^^---》顯示作者的堂堂大名。
:00401018 BE20A44000 mov esi,
0040A420
:0040101D BF04010000 mov edi,
00000104
:00401022 56
push esi
:00401023 57
push edi
* Reference To: KERNEL32.GetCurrentDirectoryA, Ord:0000h
|
:00401024 FF1504504000 Call dword ptr
[00405004]
^^^^^^^^^^^^^^^---》取得當前的路徑。
* Possible StringData Ref from Data Obj ->"CRACKCODE.INI"
|
:0040102A 68DC604000 push 004060DC
* Possible StringData Ref from Data Obj ->"\"
|
:0040102F 6864624000 push 00406264
:00401034 56
push esi
:00401035 E8360A0000 call 00401A70
:0040103A 59
pop ecx
:0040103B 59
pop ecx
:0040103C 50
push eax
:0040103D E82E0A0000 call 00401A70
:00401042 59
pop ecx
:00401043 BD50674000 mov ebp,
00406750
:00401048 59
pop ecx
^^^^^^^^^^^^^^^^--》以上這段程式碼實現一個函式
strcat()比如獲得當前路徑為C:\crackcode;那麼
結果這段程式碼合併為:c:\crackcode\crackcode.ini
來看看00401A70中的程式碼:
:00401A70 8B4C2404 mov
ecx, dword ptr [esp+04]
^^^^^^^^---》ECX獲得指向路徑字串
ECX=40A620
:00401A74 57
push edi
:00401A75 F7C103000000 test ecx, 00000003
:00401A7B 740F
je 00401A8C
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401A8A(C)
|
:00401A7D 8A01
mov al, byte ptr [ecx]
:00401A7F 41
inc ecx
:00401A80 84C0
test al, al
:00401A82 743B
je 00401ABF
:00401A84 F7C103000000 test ecx, 00000003
:00401A8A 75F1
jne 00401A7D
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00401A7B(C), :00401AA2(C), :00401ABD(U)
|
:00401A8C 8B01
mov eax, dword ptr [ecx]
:00401A8E BAFFFEFE7E mov edx,
7EFEFEFF
:00401A93 03D0
add edx, eax
:00401A95 83F0FF
xor eax, FFFFFFFF
:00401A98 33C2
xor eax, edx
:00401A9A 83C104
add ecx, 00000004
:00401A9D A900010181 test eax,
81010100
:00401AA2 74E8
je 00401A8C
^^^^^^^^^^^^^^^^--》這段程式碼是迴圈取四個字元
確定到那四個字元為結尾
:00401AA4 8B41FC
mov eax, dword ptr [ecx-04]
:00401AA7 84C0
test al, al
:00401AA9 7423
je 00401ACE
:00401AAB 84E4
test ah, ah
:00401AAD 741A
je 00401AC9
:00401AAF A90000FF00 test eax,
00FF0000
:00401AB4 740E
je 00401AC4
:00401AB6 A9000000FF test eax,
FF000000
:00401ABB 7402
je 00401ABF
:00401ABD EBCD
jmp 00401A8C
^^^^^^^^^^^^^^^--》這段程式碼為確定最後四個字元
中有多少個字元。分別跳到下面相應的程式
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00401A82(C), :00401ABB(C)
|
:00401ABF 8D79FF
lea edi, dword ptr [ecx-01]
:00401AC2 EB0D
jmp 00401AD1
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401AB4(C)
|
:00401AC4 8D79FE
lea edi, dword ptr [ecx-02]
:00401AC7 EB08
jmp 00401AD1
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401AAD(C)
|
:00401AC9 8D79FD
lea edi, dword ptr [ecx-03]
:00401ACC EB03
jmp 00401AD1
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401AA9(C)
|
==============下面的程式碼和也以上程式碼相似,不再作解釋=======
:00401ACE 8D79FC
lea edi, dword ptr [ecx-04]
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00401A65(U), :00401AC2(U), :00401AC7(U), :00401ACC(U)
|
:00401AD1 8B4C240C mov
ecx, dword ptr [esp+0C]
:00401AD5 F7C103000000 test ecx, 00000003
:00401ADB 7419
je 00401AF6
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401AED(C)
|
:00401ADD 8A11
mov dl, byte ptr [ecx]
:00401ADF 41
inc ecx
:00401AE0 84D2
test dl, dl
:00401AE2 7464
je 00401B48
:00401AE4 8817
mov byte ptr [edi], dl
:00401AE6 47
inc edi
:00401AE7 F7C103000000 test ecx, 00000003
:00401AED 75EE
jne 00401ADD
:00401AEF EB05
jmp 00401AF6
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00401B0E(C), :00401B28(U)
|
:00401AF1 8917
mov dword ptr [edi], edx
:00401AF3 83C704
add edi, 00000004
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00401ADB(C), :00401AEF(U)
|
:00401AF6 BAFFFEFE7E mov edx,
7EFEFEFF
:00401AFB 8B01
mov eax, dword ptr [ecx]
:00401AFD 03D0
add edx, eax
:00401AFF 83F0FF
xor eax, FFFFFFFF
:00401B02 33C2
xor eax, edx
:00401B04 8B11
mov edx, dword ptr [ecx]
:00401B06 83C104
add ecx, 00000004
:00401B09 A900010181 test eax,
81010100
:00401B0E 74E1
je 00401AF1
:00401B10 84D2
test dl, dl
:00401B12 7434
je 00401B48
:00401B14 84F6
test dh, dh
:00401B16 7427
je 00401B3F
:00401B18 F7C20000FF00 test edx, 00FF0000
:00401B1E 7412
je 00401B32
:00401B20 F7C2000000FF test edx, FF000000
:00401B26 7402
je 00401B2A
:00401B28 EBC7
jmp 00401AF1
==================================
小結: 希望大家能不能幫我解答,以上程式碼中不明白的地方。
1、:00401A75 F7C103000000 test ecx,
00000003 --》為什麼要TEST??
2 對以下程式碼中為什麼要加上7EFEFEFF 然後再XOR FFFFFFFF,能不能告訴我原因?
:00401A8C 8B01
mov eax, dword ptr [ecx]
:00401A8E BAFFFEFE7E mov edx,
7EFEFEFF
:00401A93 03D0
add edx, eax
:00401A95 83F0FF
xor eax, FFFFFFFF
:00401A98 33C2
xor eax, edx
:00401A9A 83C104
add ecx, 00000004
:00401A9D A900010181 test eax,
81010100
:00401AA2 74E8
je 00401A8C
謝謝大家的幫助!!
今天就到這裡,就到這裡。。。。。。 (待續)豆豆蝦
2001.8.9 23:36完成
歷時:1個小時。
相關文章
- 噹噹蝦和豆豆蝦crackcode突破25位限制的分享筆記 (9千字)2001-08-24筆記
- winxp總管破解筆記(一) (8千字)2002-10-07筆記
- C++程式碼閱讀筆記(一)2019-07-30筆記
- 印象筆記 --- 方法分享筆記2018-11-22筆記
- 讀書筆記-程式碼整潔之道(一)2022-02-18筆記
- 好程式設計師web前端分享Vue學習筆記(一)2019-05-09程式設計師Web前端Vue筆記
- LearnVIORB程式碼框架筆記2019-04-10ORB框架筆記
- Lock98主程式脫殼筆記 (1千字)2015-11-15筆記
- 《第一行程式碼》讀書筆記三2017-10-08行程筆記
- python異常的一些程式碼筆記2024-05-10Python筆記
- YYModel程式碼分析筆記2016-06-07筆記
- js便籤筆記(10) - 分享:json.js原始碼解讀筆記2014-07-02筆記JSON原始碼
- Linux 筆記分享一:Linux 簡介2019-01-03Linux筆記
- 分享一個canvas程式碼22018-07-18Canvas
- Linux 筆記分享十五:原始碼包安裝2019-01-08Linux筆記原始碼
- Linux 筆記分享十六:指令碼安裝包2019-01-08Linux筆記指令碼
- 好程式設計師web前端培訓分享React學習筆記(一)2020-04-26程式設計師Web前端React筆記
- 《K8s原始碼解析》第一章閱讀筆記2020-09-02K8S原始碼筆記
- 《K8s 原始碼解析》第一章閱讀筆記2020-09-02K8S原始碼筆記
- js便籤筆記(10) - 分享:json2.js原始碼解讀筆記2014-07-03筆記JSON原始碼
- 《Java程式設計思想》筆記8.多型2019-01-19Java程式設計筆記多型
- Trojan Remover 4.3.0破解手記 (8千字)2001-08-31REM
- Java 程式的破解方法 (8千字)2002-08-15Java
- shell指令碼程式設計筆記2020-08-26指令碼程式設計筆記
- Python學習筆記—程式碼2019-02-16Python筆記
- 讀書筆記-乾淨程式碼2019-02-08筆記
- Chakra TypedArray程式碼實現筆記2017-08-08筆記
- JS匯出Excel 程式碼筆記2016-01-04JSExcel筆記
- 常用程式碼筆記-持續更新2012-08-17筆記
- 【深度學習】TensorFlow實現線性迴歸,程式碼演示。全md文件筆記(程式碼文件已分享)2024-02-27深度學習筆記
- 分享一段牛逼程式碼2022-12-07
- 字元編碼筆記:ASCII,Unicode和UTF-82014-12-11字元筆記ASCIIUnicode
- surfer 8 scripter 學習筆記(1)指令碼物件模型2013-05-11筆記指令碼物件模型
- 字元編碼筆記:ASCII,Unicode 和 UTF-82007-10-28字元筆記ASCIIUnicode
- shell程式設計學習筆記(一):編寫我的第一段程式碼2019-02-26程式設計筆記
- 《重構:改善既有程式碼的設計》讀書筆記(一)2018-09-23筆記
- Android Utils 之 Vector 學習筆記(一)—— VectorImpl 程式碼分析2018-07-11Android筆記
- 流媒體學習筆記----配置一個編碼程式 (轉)2007-08-17筆記