160 - 33 Cruehead.1

環境
windows xp sp3

工具
exeinfo pe ollydbg

查殼
無殼的匯編程序(OD載入的出來的)

測試

當name輸入為數字時,會彈出兩次錯誤框。

OD載入搜字符串,發現有兩個地方:

0040134D  /$  6A 30         push 0x30                                ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
0040134F  |.  68 29214000   push Cruehead.00402129                   ; |Title = "Good work!"
00401354  |.  68 34214000   push Cruehead.00402134                   ; |Text = "Great work, mate!
Now try the next CrackMe!"
00401359  |.  FF75 08       push [arg.1]                             ; |hOwner
0040135C  |.  E8 D9000000   call <jmp.&USER32.MessageBoxA>           ; \MessageBoxA
00401361  \.  C3            retn
00401362  /$  6A 00         push 0x0                                 ; /BeepType = MB_OK
00401364  |.  E8 AD000000   call <jmp.&USER32.MessageBeep>           ; \MessageBeep
00401369  |.  6A 30         push 0x30                                ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
0040136B  |.  68 60214000   push Cruehead.00402160                   ; |Title = "No luck!"
00401370  |.  68 69214000   push Cruehead.00402169                   ; |Text = "No luck there, mate!"
00401375  |.  FF75 08       push [arg.1]                             ; |hOwner
00401378  |.  E8 BD000000   call <jmp.&USER32.MessageBoxA>           ; \MessageBoxA
0040137D  \.  C3            retn
0040137E  /$  8B7424 04     mov esi,dword ptr ss:[esp+0x4]
00401382  |.  56            push esi
00401383  |>  8A06          /mov al,byte ptr ds:[esi]
00401385  |.  84C0          |test al,al
00401387  |.  74 13         |je XCruehead.0040139C
00401389  |.  3C 41         |cmp al,0x41
0040138B  |.  72 1F         |jb XCruehead.004013AC
0040138D  |.  3C 5A         |cmp al,0x5A
0040138F  |.  73 03         |jnb XCruehead.00401394
00401391  |.  46            |inc esi
00401392  |.^ EB EF         |jmp XCruehead.00401383
00401394  |>  E8 39000000   |call Cruehead.004013D2
00401399  |.  46            |inc esi
0040139A  |.^ EB E7         \jmp XCruehead.00401383
0040139C  |>  5E            pop esi
0040139D  |.  E8 20000000   call Cruehead.004013C2
004013A2  |.  81F7 78560000 xor edi,0x5678
004013A8  |.  8BC7          mov eax,edi
004013AA  |.  EB 15         jmp XCruehead.004013C1
004013AC  |>  5E            pop esi
004013AD  |.  6A 30         push 0x30                                ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
004013AF  |.  68 60214000   push Cruehead.00402160                   ; |Title = "No luck!"
004013B4  |.  68 69214000   push Cruehead.00402169                   ; |Text = "No luck there, mate!"
004013B9  |.  FF75 08       push [arg.1]                             ; |hOwner
004013BC  |.  E8 79000000   call <jmp.&USER32.MessageBoxA>           ; \MessageBoxA
004013C1  \>  C3            retn

可以猜測出會有兩次判斷,當第一次錯誤時,彈出的錯誤消息框是[004013BC]的,然后再會彈出[00401378]的消息框。于是可以下斷點,看看第一次顯示錯誤消息框的函數是在哪里調用的。

004011E6   >  5B            pop ebx
004011E7   . |5F            pop edi
004011E8   . |5E            pop esi
004011E9   . |C9            leave
004011EA   . |C2 1000       retn 0x10
004011ED   > |6A 00         push 0x0                                 ; /lParam = NULL
004011EF   . |68 0A134000   push Cruehead.0040130A                   ; |DlgProc = Cruehead.0040130A
004011F4   . |FF75 08       push dword ptr ss:[ebp+0x8]              ; |hOwner
004011F7   . |68 1F214000   push Cruehead.0040211F                   ; |pTemplate = "DLG_ABOUT"
004011FC   . |FF35 CA204000 push dword ptr ds:[0x4020CA]             ; |hInst = 00400000
00401202   . |E8 99020000   call <jmp.&USER32.DialogBoxParamA>       ; \DialogBoxParamA
00401207   .^ EB DD         jmp XCruehead.004011E6
00401209   > |6A 00         push 0x0                                 ; /lParam = NULL
0040120B   . |68 53124000   push Cruehead.00401253                   ; |DlgProc = Cruehead.00401253
00401210   . |FF75 08       push dword ptr ss:[ebp+0x8]              ; |hOwner
00401213   . |68 15214000   push Cruehead.00402115                   ; |pTemplate = "DLG_REGIS"
00401218   . |FF35 CA204000 push dword ptr ds:[0x4020CA]             ; |hInst = 00400000
0040121E   . |E8 7D020000   call <jmp.&USER32.DialogBoxParamA>       ; \DialogBoxParamA
00401223   . |83F8 00       cmp eax,0x0
00401226   .^ 74 BE         je XCruehead.004011E6
00401228   . |68 8E214000   push Cruehead.0040218E                   ;  ASCII "123456",這是輸入的name
0040122D   . |E8 4C010000   call Cruehead.0040137E                   ;  第一個錯誤消息框彈出位置
00401232   . |50            push eax
00401233   . |68 7E214000   push Cruehead.0040217E                   ;  ASCII "12345",這是輸入的serial
00401238   . |E8 9B010000   call Cruehead.004013D8                   ;  第二個比較點
0040123D   . |83C4 04       add esp,0x4
00401240   . |58            pop eax
00401241   . |3BC3          cmp eax,ebx
00401243   . |74 07         je XCruehead.0040124C
00401245   . |E8 18010000   call Cruehead.00401362                   ;  第二次消息框彈出位置
0040124A   .^ EB 9A         jmp XCruehead.004011E6
0040124C   > |E8 FC000000   call Cruehead.0040134D                   ;  正確消息框彈出
00401251   .^\EB 93         jmp XCruehead.004011E6

這樣就可以在兩個關鍵call的位置下斷點分析了。
第一個call的分析:

0040137E  /$  8B7424 04     mov esi,dword ptr ss:[esp+0x4]
00401382  |.  56            push esi
00401383  |>  8A06          /mov al,byte ptr ds:[esi]
00401385  |.  84C0          |test al,al
00401387  |.  74 13         |je XCruehead.0040139C
00401389  |.  3C 41         |cmp al,0x41
0040138B  |.  72 1F         |jb XCruehead.004013AC                   ;  如果有比'A'小的就跳出循環,彈出錯誤
0040138D  |.  3C 5A         |cmp al,0x5A
0040138F  |.  73 03         |jnb XCruehead.00401394                  ;  如果有比'Z'大的就減0x20
00401391  |.  46            |inc esi
00401392  |.^ EB EF         |jmp XCruehead.00401383
00401394  |>  E8 39000000   |call Cruehead.004013D2                  ;  這里就是減0x20
00401399  |.  46            |inc esi
0040139A  |.^ EB E7         \jmp XCruehead.00401383
0040139C  |>  5E            pop esi
0040139D  |.  E8 20000000   call Cruehead.004013C2                   ;  這里是將字符串的每個字符的ascii值加起來
004013A2  |.  81F7 78560000 xor edi,0x5678
004013A8  |.  8BC7          mov eax,edi
004013AA  |.  EB 15         jmp XCruehead.004013C1
004013AC  |>  5E            pop esi
004013AD  |.  6A 30         push 0x30                                ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
004013AF  |.  68 60214000   push Cruehead.00402160                   ; |Title = "No luck!"
004013B4  |.  68 69214000   push Cruehead.00402169                   ; |Text = "No luck there, mate!"
004013B9  |.  FF75 08       push [arg.1]                             ; |hOwner
004013BC  |.  E8 79000000   call <jmp.&USER32.MessageBoxA>           ; \MessageBoxA
004013C1  \>  C3            retn
004013C2  /$  33FF          xor edi,edi
004013C4  |.  33DB          xor ebx,ebx
004013C6  |>  8A1E          /mov bl,byte ptr ds:[esi]
004013C8  |.  84DB          |test bl,bl
004013CA  |.  74 05         |je XCruehead.004013D1
004013CC  |.  03FB          |add edi,ebx
004013CE  |.  46            |inc esi
004013CF  |.^ EB F5         \jmp XCruehead.004013C6
004013D1  \>  C3            retn

其實就是按一定要求處理name然后再將name中每個字符加起來后異或0x5678

第二個call的分析:

004013D8  /$  33C0          xor eax,eax
004013DA  |.  33FF          xor edi,edi
004013DC  |.  33DB          xor ebx,ebx
004013DE  |.  8B7424 04     mov esi,dword ptr ss:[esp+0x4]
004013E2  |>  B0 0A         /mov al,0xA
004013E4  |.  8A1E          |mov bl,byte ptr ds:[esi]
004013E6  |.  84DB          |test bl,bl
004013E8  |.  74 0B         |je XCruehead.004013F5
004013EA  |.  80EB 30       |sub bl,0x30
004013ED  |.  0FAFF8        |imul edi,eax
004013F0  |.  03FB          |add edi,ebx
004013F2  |.  46            |inc esi
004013F3  |.^ EB ED         \jmp XCruehead.004013E2
004013F5  |>  81F7 34120000 xor edi,0x1234
004013FB  |.  8BDF          mov ebx,edi
004013FD  \.  C3            retn

這里是將serial的內容轉成16進制后與0x1234進行異或運算。

最后比較兩個call的返回值是否相同,不同的話會彈出第二個錯誤消息框。如果相同的話會彈出正確的消息框。

如:
name:1
serial:4661

就會彈出兩個消息框,一個錯誤的,一個正確的。

name:gnubd
serial:17724

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376398.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376398.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376398.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mac osx 10.10 pip 安裝問題

在mac osx 升級到 10.10(Yosemite)以后&#xff0c;用pip以及easy_install 安裝python包的時候&#xff0c;如果包需要編譯&#xff0c;就會編譯失敗&#xff0c;錯誤如下&#xff1a; build/temp.macosx-10.10-x86_64-2.7/greenlet.o -o build/lib.macosx-10.10-x86_64-2.7/gr…

英文系統上網頁內容亂碼的解決

今天隨便寫了一段html 代碼示例&#xff0c;代碼如下&#xff1a; <html lang"zh-cn"> <head> </head> <body> <h1>HTML 教程目錄</h1> <ul> <li><a href"#C1">第一章</a></li> <li…

160 - 34 Cruehead.3

環境 windows xp sp3 工具 1.exeinfo pe 2.ollydbg 3.WinHex 查殼 和上一個一樣&#xff0c;OD載入判斷出 測試 運行后發現是沒有任何提示&#xff0c;而且沒有輸入serial的窗口&#xff0c;通過任務管理器可以看出程序的名稱寫有“Uncracked”&#xff0c;可以猜測…

sed awk tr等文本處理命令

指定行范圍替換&#xff1a; sed -i "520,950s/\(.*\)\(HOST_CMD_.*\)\(,\)/\1{ \2, \"\2\" },/g" hostCmdMacro.h linux shell sed命令與轉義字符 A“2013/06/09“ sed “s#hello#$A#" sed 指定行范圍匹配 刪除文本中的重復行(sortuniq/awk/sed) 263…

160 - 35 cupofcoffe.1

環境 Windows xp sp3 工具 1.exeinfo PE 2.ollydbg 查殼 OD載入后可以看出是VB程序 測試 輸入&#xff1a;12345678 顯示的內容發生了改變&#xff0c;也不影響查找字符串。 004FEC14 > \8B4D E8 mov ecx,dword ptr ss:[ebp-0x18] 004FEC17 . 51 …

centos7 安裝mysql

http://my.oschina.net/u/919612/blog/310533 測試可用 隨后又想到了&#xff0c;做個iso鏡像&#xff0c;然后掛載在CDrom上&#xff0c;然后安裝JDK成功&#xff0c;但是mysql安裝失敗&#xff0c;可能由于只從官網上下載了server&#xff0c;而沒有解決依賴關系。 最后&…

ecshop后臺增加模板頁的方法

CShop的動態模板機制是一個非常靈活的系統,管理員可以在后臺根據自己的要求調整模板模塊的顯示位置。本文詳細講解了如何修改ECSHOP內部結構使得用戶可以添加自己的模板頁從而方便靈活的使用系統自帶的模板系統和廣告位系統。 如下圖所示 可以看到ECShop支持設置的模板一共如上…

160 - 36 cupofcoffe.2

環境 Winows xp sp3 工具 1.exeinfo PE 2.ollydbg 查殼 OD載入后看出是VB程序 測試 輸入&#xff1a;12345678 繼續OD搜字符串&#xff1a; 00521688 . 68 60054500 push cupofcof.00450560 ; UNICODE ".........." 0052168D …

使用VS2010 + VirtualDDK 調試驅動

總的說來比 WINDBG要簡單的多 可以看到詳細的調試內容 但是好像不知道怎么弄成一般的工程 待定今天玩了一下 感覺還是有點麻煩 網站&#xff1a; http://techird.blog.163.com/blog/static/1215640362011112385241568/ 轉載于:https://www.cnblogs.com/zcc1414/p/3982457.html…

160 - 37 CyberBlade.1

環境 Windows xp sp3 工具 1.exeinfo PE 2.ollydbg 查殼 OD載入是VB程序。 測試 OD載入直接搜字符串。 這個是當輸入為空時會彈出消息框告訴你要輸入9個字符。 0040E005 > \8B4D E4 mov ecx,dword ptr ss:[ebp-0x1C] 0040E008 . 51 push…

恢復回收站里一篇文章 --我的實習生涯

今天想恢復我回收站里的一篇日志竟然沒這功能&#xff0c;無奈只好ctrlv出來了。半年前的文章&#xff0c;現在已經就業了&#xff0c;工作挺開心的。。。原文如下: 今天是年前的最后一個周6&#xff0c;公司的SVN掉了&#xff0c;我就賣賣呆在CSDN上瞎轉轉&#xff0c;也寫寫…

Score Inflation USACO 3.1

完全背包足以,參照完全背包最優解就過了 /*ID: hubiao cavePROG: inflateLANG: C*/#include<iostream>#include<fstream> #include<cstring> #include<string>using namespace std;int main(){ifstream fin("inflate.in");ofstream fout(&qu…

160 - 38 CyberBlade.2

環境 Windows xp sp3 工具 1.VBExplorer 2.ollydbg 查殼 OD載入往上翻可以看出是vb程序&#xff0c;看到 00401042 .- FF25 60104100 jmp dword ptr ds:[<&MSVBVM50.MethCallEngine>] ; MSVBVM50.MethCallEngine 可以知道是p-code的了 測試…

160 - 39 damn

環境 Windows xp sp3 工具 1.exeinfo PE 2.ollydbg 查殼 OD加載就知道有殼了&#xff0c;可以esp定律直接脫掉 exeinfoPE查殼&#xff1a; 測試 點擊LOCKED圖片會彈出消息框&#xff0c;Register注冊按鈕無法點擊&#xff01; 猜測Register按鈕會在輸入正確的nam…

[轉載] Python3網絡爬蟲

這篇文章描述了使用python開發最小的網絡爬蟲的方法和步驟, 以及如何用fiddler來探索瀏覽器的行為來幫助爬蟲的開發. http://www.yiibai.com/python/python3-webbug-series4.html 轉載于:https://www.cnblogs.com/zhengran/p/4177944.html

不適用第三方變量,交換兩個數

異或實現&#xff1a; void foo(int *a,int *b){ *a*a^*b; *b*a^*b; *a*a^*b;}void main(){int a1,b2; foo(&a,&b); printf("%d.%d.%d",a,b); } 或者下例&#xff1a; void foo(int *a,int *b){ *a*a*b; *b*a-*b; *a*a-*b;}void main(){int a1,b2,c3; foo(&a…

Android系統原理與源碼分析(1):利用Java反射技術阻止通過按鈕關閉對話框

原文出處&#xff1a;博主宇宙的極客http://www.cnblogs.com/nokiaguy/archive/2010/07/27/1786482.html 眾所周知&#xff0c;AlertDialog類用于顯示對話框。關于AlertDialog的基本用法在這里就不詳細介紹了&#xff0c;網上有很多&#xff0c;讀者可以自己搜索。那么本文要介…

160 - 40 DaNiEl-RJ.1

環境 Windows xp sp3 工具 1.exeinfo PE 2.ollydbg 查殼 無殼Delphi程序 測試&#xff1a; 按照說明點到這個注冊窗口。 OD載入搜字符串&#xff0c;直接可以定位到這里 0042D4A8 /. 55 push ebp 0042D4A9 |. 8BEC mov ebp,esp 0042D4…

IOS詳解TableView——選項抽屜(天貓商品列表)

在之前的有篇文章講述了利用HeaderView來寫類似QQ好友列表的表視圖。 這里寫的天貓抽屜其實也可以用該方法實現&#xff0c;具體到細節每個人也有所不同。這里采用的是點擊cell對cell進行運動處理以展開“抽屜”。 最后完成的效果大概是這個樣子。 主要的環節&#xff1a; 點擊…

Unicode與JavaScript詳解 [很好的文章轉]

上個月&#xff0c;我做了一次分享&#xff0c;詳細介紹了Unicode字符集&#xff0c;以及JavaScript語言對它的支持。下面就是這次分享的講稿。 一、Unicode是什么&#xff1f; Unicode源于一個很簡單的想法&#xff1a;將全世界所有的字符包含在一個集合里&#xff0c;計算機只…