W32DASM8.93捉蟲記 湖北 wuhuashang
W32DASM8.93捉蟲記 湖北 wuhuashang
W32DASM是除錯修改程式的強大工具,作為SOFTICE的輔助工具W32DASM為CRACKER必備。
當前許多軟體採用註冊方式,輸入註冊號,若正確顯示"THANK YOU",否則顯示"INCORRECT PASSWORD",用W32DASM反編譯該軟體,然後查詢指定的錯誤資訊如"INCORRECT
PASSWORD"或其他因沒有註冊而顯示的某些提示資訊,假若被找到,對熟練的CRACKER而言,可能10分鐘後便完成破解,而對於沒有破解經驗的計算機愛好者,只要他有一點組合語言知識,再看一些別人用W32DASM破解的文章,用不了幾天,他便可以破解INTERNET網上的許多共享軟體;但是如果顯示的資訊並不是英文而是中文如"註冊號不正確",您試著也找......,您發現只要是中文資訊,W32DASM是沒法對中文反編譯的!
W32DASM不支援中文日文韓文的反編譯,把它看作BUG應該可以被修改,磨刀不誤砍柴工!.
我寫此文章不是教人破解軟體的加密資訊,而是寫出修改此軟體的BUG的過程,假設反編譯的中文軟體DEMO.EXE,輸入錯誤註冊號後顯示"無效的註冊號".
1.您可以用HEXEDIT修改為"ERRORPASS"(若被未知的軟體壓縮加密呢?),修改後最好登出或重新啟動計算機(記憶體有ERRORPASS字串)
2.啟動W32DASM,開啟DEMO.EXE,在32DASM反編譯約1-3秒鐘後CTRL+D切入SOFTICE
S DS:0 L FFFFFFFF "ERRORPA" (不要輸入為ERRORPASS,就是不要完整啦)
若沒有找到退出SOFTICE,重新開啟DEMO.EXE,大約3秒鐘後CTRL+D切入SOFTICE(依次類推),經過一翻鬥爭
在167:00610175處發現有"ERRORPASS"字串.
3.設定斷點BPM 167:610175,退出SOFTICE,W32DASM繼續編譯,馬上被SOFTICE攔截,分析:W32DASM能反編譯的字
符串的ASCII值在20H-7F之間,必然有CMP AX,20類似的比較,上下觀察並沒有該語句,退出SOFTICE,馬上又被 SOFTICE攔截下來,停止在CS:417241處:
.0041721A: 8B8530FFFFFF
mov eax,[ebp][0FFFFFF30]
.00417220: 85C0
test eax,eax
.00417222: 0F848B000000
je .0004172B3
.00417228: 8B93A5726000
mov edx,[ebx][0006072A5]
.0041722E: 8B8B081F6F00
mov ecx,[ebx][0006F1F08]
.00417234: 8D040A
lea eax,[edx][ecx]
.00417237: 8B9530FFFFFF
mov edx,[ebp][0FFFFFF30]
.0041723D: 0FBE0C10
movsx ecx,b,[eax][edx]
說明:D DS:EAX+EDX 好傢伙!原來正在讀入"ERRORPASS",可以猜想,W32DASM能識別的字串的ASCII碼為20-7D之間而中文的ASCII碼>A0
(是負數),改CS:417244 75 CC ==>90 90 ,中文資訊不就可以處理嗎?哈哈,別高興太早,會失敗得慘!記錄下CS:417241 83F9207C5C
.00417241: 83F920
cmp ecx,020 ;" "
.00417244: 7C5C
jl .0004172A2 -------- (1)
.00417246: 8B83A5726000
mov eax,[ebx][0006072A5]
.0041724C: 8B93081F6F00
mov edx,[ebx][0006F1F08]
.00417252: 8D0C10
lea ecx,[eax][edx]
.00417255: 8B8530FFFFFF
mov eax,[ebp][0FFFFFF30]
.0041725B: 0FBE1401
movsx edx,b,[ecx][eax]
.0041725F: 83FA7D
cmp edx,07D ;"}"
.00417262: 7F3E
jg .0004172A2
.00417264: 8B8BA5726000
mov ecx,[ebx][0006072A5]
.0041726A: 8B83081F6F00
mov eax,[ebx][0006F1F08]
.00417270: 8D1401
lea edx,[ecx][eax]
.00417273: 8B8D30FFFFFF
mov ecx,[ebp][0FFFFFF30]
.00417279: 0FBE440AFF
movsx eax,b,[edx][ecx][-0001]
.0041727E: 83F820
cmp eax,020 ;" "
說明:有敏感的比較,共有多少處要修改呢?您不是設定有斷點嗎?退出SOFTICE,必然又攔截下來,用筆記錄攔截的CS:IP.
.00417281: 7C23
jl .0004172A6 -------- (2)
.00417283: 8B93A5726000
mov edx,[ebx][0006072A5]
.00417289: 8B8B081F6F00
mov ecx,[ebx][0006F1F08]
.0041728F: 8D040A
lea eax,[edx][ecx]
.00417292: 8B9530FFFFFF
mov edx,[ebp][0FFFFFF30]
.00417298: 0FBE4C10FF
movsx ecx,b,[eax][edx][-0001]
.0041729D: 83F97D
cmp ecx,07D ;"}"
.004172A0: 7F04
jg .0004172A6
.004172A2: 33C0
xor eax,eax
.004172A4: EB05
jmps .0004172AB
.004172A6: B801000000
mov eax,000000001 ;" "
.004172AB: 898574FFFFFF
mov [ebp][0FFFFFF74],eax
.004172B1: EB4B
jmps .0004172FE
.004172B3: 8B93A5726000
mov edx,[ebx][0006072A5]
.004172B9: 8B8B081F6F00
mov ecx,[ebx][0006F1F08]
.004172BF: 8D040A
lea eax,[edx][ecx]
.004172C2: 8B9530FFFFFF
mov edx,[ebp][0FFFFFF30]
.004172C8: 0FBE0C10
movsx ecx,b,[eax][edx]
.004172CC: 83F920
cmp ecx,020 ;" "
.004172CF: 7C1E
jl .0004172EF -------- (3)
.004172D1: 8B83A5726000
mov eax,[ebx][0006072A5]
.004172D7: 8B93081F6F00
mov edx,[ebx][0006F1F08]
.004172DD: 8D0C10
lea ecx,[eax][edx]
......
00417392: 0FBE0431
movsx eax,b,[ecx][esi]
.00417396: 83F820
cmp eax,020 ;" "
.00417399: 7C25
jl .0004173C0 -------- (4)
.0041739B: 8B93A5726000
mov edx,[ebx][0006072A5]
.004173A1: 8B8B081F6F00
mov ecx,[ebx][0006F1F08]
.004173A7: 8D040A
lea eax,[edx][ecx]
.004173AA: 8B9530FFFFFF
mov edx,[ebp][0FFFFFF30]
.004173B0: 8D0C10
lea ecx,[eax][edx]
.004173B3: 0FBE0431
movsx eax,b,[ecx][esi]
.004173B7: 83F87D
cmp eax,07D ;"}"
.004173BA: 0F8E68FFFFFF
jle .000417328
.004173C0: 8B9530FFFFFF
mov edx,[ebp][0FFFFFF30]
.004173C6: 85D2
test edx,edx
.004173C8: 0F8483000000
je .000417451
.004173CE: 8B8BA5726000
mov ecx,[ebx][0006072A5]
.004173D4: 8B83081F6F00
mov eax,[ebx][0006F1F08]
.004173DA: 8D1401
lea edx,[ecx][eax]
.004173DD: 8B8D30FFFFFF
mov ecx,[ebp][0FFFFFF30]
.004173E3: 66833C0A20
cmp w,[edx][ecx],020 ;" "
此處的比較有點奇怪,為啥是CMP WORD PTR [EDX+ECX],20 而不是CMP BYTE PTR[EDX+ECX],20呢?而且有好幾個地方.
.004173E8: 7256
jb .000417440 -------- (5)
.004173EA: 8B83A5726000
mov eax,[ebx][0006072A5]
.004173F0: 8B93081F6F00
mov edx,[ebx][0006F1F08]
.004173F6: 8D0C10
lea ecx,[eax][edx]
......
.004173F9: 8B8530FFFFFF
mov eax,[ebp][0FFFFFF30]
.004173FF: 66833C017D
cmp w,[ecx][eax],07D ;"}"
.00417404: 773A
ja .000417440
.00417406: 8B93A5726000
mov edx,[ebx][0006072A5]
.0041740C: 8B8B081F6F00
mov ecx,[ebx][0006F1F08]
.00417412: 8D040A
lea eax,[edx][ecx]
.00417415: 8B9530FFFFFF
mov edx,[ebp][0FFFFFF30]
.0041741B: 66837C10FF20
cmp w,[eax][edx][-0001],020 ;" "
多好的比較方式,用此方法可以快速解決某些西文軟體不能輸入漢字的問題.不是嗎?
.00417421: 7221
jb .000417444 -------- (6)
.00417423: 8B8BA5726000
mov ecx,[ebx][0006072A5]
.00417429: 8B83081F6F00
mov eax,[ebx][0006F1F08]
.0041742F: 8D1401
lea edx,[ecx][eax]
.00417432: 8B8D30FFFFFF
mov ecx,[ebp][0FFFFFF30]
.00417438: 66837C0AFF7D
cmp w,[edx][ecx][-0001],07D ;"}"
.0041743E: 7704
ja .000417444
.00417440: 33C0
xor eax,eax
.00417442: EB05
jmps .000417449
.00417444: B801000000
mov eax,000000001 ;" "
.00417449: 898570FFFFFF
mov [ebp][0FFFFFF70],eax
.0041744F: EB47
jmps .000417498
.00417451: 8B93A5726000
mov edx,[ebx][0006072A5]
.00417457: 8B8B081F6F00
mov ecx,[ebx][0006F1F08]
.0041745D: 8D040A
lea eax,[edx][ecx]
......
00460556: 8A0418
mov al,[eax][ebx]
.00460559: 3C20
cmp al,020 ;" "
.0046055B: 7204
jb .000460561 -------- (7)
.0046055D: 3C7D
cmp al,07D ;"}"
.0046055F: 7613
jbe .000460574
.00460561: 68DE3D4C00
push 0004C3DDE ;" L=?
.00460566: 8D95C0FEFFFF
lea edx,[ebp][0FFFFFEC0]
.0046056C: 52
push edx
.0046056D: E8E8E60400
call .0004AEC5A
.00460572: EB2D
jmps .0004605A1
.00460574: 6A01
push 001
我試所有的類似 CMP xxxx,20
JB/JL xxxx (該行用90 90 替換)
經驗證發現許多應該顯示的字串也沒有顯示,慘慘慘!問題出在比較的方式不一樣.您可以用HEXEDIT開啟一個EXE檔案,所有被顯示字串末尾有一個位元組00H,當讀取字串完畢後讀入字元00H,此時JB/JL必然成立,必須正常跳轉,不能被改成NOP,所以改思路:
CMP WORD PTR [XXXX],20
JB/JL XXXX ==>90 90
CMP BYTE PTR[XXXX],20 { 對照(3)(4) (7)處} ===>20改00
JB/JL XXXX
==>JB改JE
完整記錄下要修改處的CS:IP或16進位制字串,用UNASPACK脫掉W32DASM的外殼,再用HEXEDIT(必須記錄被修改處的16進位制字串)或HACKVIEW修改,最後您去測試,中文資訊是不是全顯示出來了?
版權所有,請不要修改原內容
相關文章
- Web伺服器捉蟲速記2011-10-10Web伺服器
- [捉蟲記錄] access violation writing location _findnext2015-08-28
- 捉蟲記之dozer對映父類屬性被重寫2018-01-05
- [捉蟲記錄]關於Cascade Training Error的bug2015-08-26AIError
- 子執行緒 UI 問題捉蟲2022-02-07執行緒UI
- 【Xtrabackup捉蟲】Waiting for master thread to be suspended2017-11-13AIASTthread
- MySQL·捉蟲動態·唯一鍵約束失效2016-05-23MySql
- 給Chrome“捉蟲”16000個,Google開源bug自檢工具2019-02-10ChromeGo
- MySQL·捉蟲動態·DROPDATABASE外來鍵約束的GTIDBUG2016-05-23MySqlDatabaseTiDB
- Excel 2021&365 函式與公式應用大全 捉蟲2024-03-13Excel函式公式
- ChunJun 1.16 Release版本即將釋出,bug 捉蟲活動邀您參與!2023-03-01
- HDU-安卓程式開發之簡單儲存/內部儲存/外部儲存 & 捉蟲2020-12-04安卓
- 湖北哪裡有開發票|湖北哪裡可以開發票2020-11-13
- MySQL核心月報2014.10-MySQL· 捉蟲動態·binlog重放失敗2016-05-23MySql
- MySQL核心月報2015.03-MySQL·捉蟲動態·pidfile丟失問題分析2016-05-23MySql
- 東方玄幻捉寵手遊 《玄中記》正式亮相騰訊遊戲年度釋出會!2021-05-19遊戲
- 爬蟲筆記(一)2019-03-27爬蟲筆記
- 走進JVM,淺水也能捉魚2012-12-21JVM
- 3.24 爬蟲小週記2019-03-24爬蟲
- 3.26爬蟲小記2019-03-26爬蟲
- 3.22 爬蟲小記2019-03-22爬蟲
- python爬蟲日記012021-05-11Python爬蟲
- 爬蟲學習日記(六)2019-01-14爬蟲
- 爬蟲學習日記(八)2019-01-18爬蟲
- 爬蟲學習日記(七)2019-01-15爬蟲
- 爬蟲學習日記(二)2018-11-28爬蟲
- 爬蟲學習日記(一)2018-11-28爬蟲
- 爬蟲學習日記(五)2018-12-14爬蟲
- 爬蟲學習日記(三)2018-12-07爬蟲
- 我的爬蟲筆記(1)2017-11-03爬蟲筆記
- 資料庫核心月報-2015/09-MySQL·捉蟲動態·建表過程中crash造成重建表失敗2016-05-23資料庫MySql
- 湖北物聯網產業標準聯盟成立2018-05-14產業
- 隨記 | 方芳:“基於湖北省隨州市廣水市村鎮地質地貌山路調查”日記(一)2024-03-12
- Node系列-爬蟲踩坑筆記2018-10-21爬蟲筆記
- 分散式爬蟲學習筆記2017-08-13分散式爬蟲筆記
- 爬蟲學習日記(六)完成第一個爬蟲任務2019-01-10爬蟲
- 美國男子用無人機捉姦 跟拍妻子出軌全程2016-11-19無人機
- 爬蟲學習日記(十二)解析PDF2019-03-18爬蟲