160 - 19 Brad Soblesky.2

環境:

windows xp sp3


工具:

OD,exeinfope


查殼:

用exeinfope查殼,發現沒有殼而且是vc編譯的


隨便輸入一個name和serial,name = "12345" serial = "678910"

彈出錯誤窗口,OD載入后直接搜索字符串,然后反匯編窗口跟隨

文本字串參考位于 Brad_Sob:.text
地址       反匯編                                    文本字串
0040157D   push Brad_Sob.00404020                    ASCII "CrackMe"
00401582   push Brad_Sob.00404028                    ASCII "User Name must have at least 5 characters."
00401618   jmp XBrad_Sob.004015C7                    (初始 CPU 選擇)
0040161E   push Brad_Sob.00404054                    ASCII "%lu"
00401669   mov esi,Brad_Sob.00404058                 ASCII "Correct!!                     "
0040168E   mov esi,Brad_Sob.00404078                 ASCII "<BrD-SoB>                    "
004016B3   mov esi,Brad_Sob.00404098                 ASCII "Incorrect!!, Try Again."
004016D1   mov esi,Brad_Sob.004040B0                 ASCII "Correct way to go, You Got It."
004016F3   push Brad_Sob.004040D0                    ASCII "CrackMe"
00401765   push Brad_Sob.004040D8                    ASCII "CrackMe"
00401F75   push 0x10000                              UNICODE "=::=::\"

這一次看上去好像很復雜,其實仔細一分析是挺簡單的


004014DF  /.  55            push ebp
004014E0  |.  8BEC          mov ebp,esp
004014E2  |.  6A FF         push -0x1
004014E4  |.  68 8F204000   push Brad_Sob.0040208F                              ;  SE 處理程序安裝
004014E9  |.  64:A1 0000000>mov eax,dword ptr fs:[0]
004014EF  |.  50            push eax
004014F0  |.  64:8925 00000>mov dword ptr fs:[0],esp
004014F7  |.  81EC B4010000 sub esp,0x1B4
004014FD  |.  56            push esi
004014FE  |.  57            push edi
004014FF  |.  898D 40FEFFFF mov [local.112],ecx
00401505  |.  C745 F0 45632>mov [local.4],0x81276345
0040150C  |.  68 AC414000   push Brad_Sob.004041AC
00401511  |.  8D4D EC       lea ecx,[local.5]
00401514  |.  E8 77080000   call <jmp.&MFC42.#537>
00401519  |.  C745 FC 00000>mov [local.1],0x0
00401520  |.  68 B0414000   push Brad_Sob.004041B0
00401525  |.  8D4D E8       lea ecx,[local.6]
00401528  |.  E8 63080000   call <jmp.&MFC42.#537>
0040152D  |.  C645 FC 01    mov byte ptr ss:[ebp-0x4],0x1
00401531  |.  68 B4414000   push Brad_Sob.004041B4
00401536  |.  8D4D DC       lea ecx,[local.9]
00401539  |.  E8 52080000   call <jmp.&MFC42.#537>
0040153E  |.  C645 FC 02    mov byte ptr ss:[ebp-0x4],0x2
00401542  |.  8D45 EC       lea eax,[local.5]
00401545  |.  50            push eax
00401546  |.  68 E8030000   push 0x3E8
0040154B  |.  8B8D 40FEFFFF mov ecx,[local.112]
00401551  |.  E8 34080000   call <jmp.&MFC42.#3097>                             ;  讀Name
00401556  |.  8D4D E8       lea ecx,[local.6]
00401559  |.  51            push ecx
0040155A  |.  68 E9030000   push 0x3E9
0040155F  |.  8B8D 40FEFFFF mov ecx,[local.112]
00401565  |.  E8 20080000   call <jmp.&MFC42.#3097>                             ;  讀serial
0040156A  |.  8D4D EC       lea ecx,[local.5]
0040156D  |.  E8 DE020000   call Brad_Sob.00401850                              ;  讀Name的長度出來
00401572  |.  8945 E4       mov [local.7],eax
00401575  |.  837D E4 05    cmp [local.7],0x5                                   ;  serial最少5個字符
00401579  |.  7D 43         jge XBrad_Sob.004015BE
0040157B  |.  6A 40         push 0x40
0040157D  |.  68 20404000   push Brad_Sob.00404020                              ;  ASCII "CrackMe"
00401582  |.  68 28404000   push Brad_Sob.00404028                              ;  ASCII "User Name must have at least 5 characters."
00401587  |.  8B8D 40FEFFFF mov ecx,[local.112]
0040158D  |.  E8 F2070000   call <jmp.&MFC42.#4224>
00401592  |.  C645 FC 01    mov byte ptr ss:[ebp-0x4],0x1
00401596  |.  8D4D DC       lea ecx,[local.9]
00401599  |.  E8 C2070000   call <jmp.&MFC42.#800>
0040159E  |.  C645 FC 00    mov byte ptr ss:[ebp-0x4],0x0
004015A2  |.  8D4D E8       lea ecx,[local.6]
004015A5  |.  E8 B6070000   call <jmp.&MFC42.#800>
004015AA  |.  C745 FC FFFFF>mov [local.1],-0x1
004015B1  |.  8D4D EC       lea ecx,[local.5]
004015B4  |.  E8 A7070000   call <jmp.&MFC42.#800>
004015B9  |.  E9 F9010000   jmp Brad_Sob.004017B7
004015BE  |>  C745 E0 00000>mov [local.8],0x0                                   ;  初始化,i從0開始
004015C5  |.  EB 09         jmp XBrad_Sob.004015D0
004015C7  |>  8B55 E0       /mov edx,[local.8]
004015CA  |.  83C2 01       |add edx,0x1
004015CD  |.  8955 E0       |mov [local.8],edx                                  ;  取出來+1再放回去
004015D0  |>  8B45 E0        mov eax,[local.8]
004015D3  |.  3B45 E4       |cmp eax,[local.7]                                  ;  比較次數是Name的長度
004015D6  |.  7D 42         |jge XBrad_Sob.0040161A                             ;  跳出循環
004015D8  |.  8B4D E0       |mov ecx,[local.8]
004015DB  |.  51            |push ecx
004015DC  |.  8D4D EC       |lea ecx,[local.5]                                  ;  Name
004015DF  |.  E8 1C030000   |call Brad_Sob.00401900
004015E4  |.  0FBED0        |movsx edx,al                                       ;  al是第i個字符,i為循環次數
004015E7  |.  8B45 F0       |mov eax,[local.4]
004015EA  |.  03C2          |add eax,edx                                        ;  加上一個常量
004015EC  |.  8945 F0       |mov [local.4],eax
004015EF  |.  8B4D E0       |mov ecx,[local.8]                                  ;  i
004015F2  |.  C1E1 08       |shl ecx,0x8                                        ;  i*2^8
004015F5  |.  8B55 F0       |mov edx,[local.4]
004015F8  |.  33D1          |xor edx,ecx                                        ;  異或運算
004015FA  |.  8955 F0       |mov [local.4],edx
004015FD  |.  8B45 E0       |mov eax,[local.8]
00401600  |.  83C0 01       |add eax,0x1                                        ;  i+1
00401603  |.  8B4D E4       |mov ecx,[local.7]                                  ;  Name長度
00401606  |.  0FAF4D E0     |imul ecx,[local.8]                                 ;  Name長度*i
0040160A  |.  F7D1          |not ecx                                            ;  取反
0040160C  |.  0FAFC1        |imul eax,ecx                                       ;  *(i+1)
0040160F  |.  8B55 F0       |mov edx,[local.4]                                  ;  常量改變
00401612  |.  0FAFD0        |imul edx,eax
00401615  |.  8955 F0       |mov [local.4],edx
00401618  |.^ EB AD         \jmp XBrad_Sob.004015C7
0040161A  |>  8B45 F0       mov eax,[local.4]
0040161D  |.  50            push eax
0040161E  |.  68 54404000   push Brad_Sob.00404054                              ;  ASCII "%lu",這里可以看出是8進制表示
00401623  |.  8D4D DC       lea ecx,[local.9]
00401626  |.  51            push ecx
00401627  |.  E8 52070000   call <jmp.&MFC42.#2818>
0040162C  |.  83C4 0C       add esp,0xC                                         ;  ecx就是serial
0040162F  |.  8D4D DC       lea ecx,[local.9]
00401632  |.  E8 79020000   call Brad_Sob.004018B0
00401637  |.  50            push eax                                            ;  這是真正的serial
00401638  |.  8D4D E8       lea ecx,[local.6]                                   ;  輸入的serial
0040163B  |.  E8 80020000   call Brad_Sob.004018C0                              ;  這里顯然是比較
00401640  |.  85C0          test eax,eax
00401642  |.  0F85 FF000000 jnz Brad_Sob.00401747
00401648  |.  8D8D ACFEFFFF lea ecx,[local.85]
0040164E  |.  E8 19070000   call <jmp.&MFC42.#540>
00401653  |.  C645 FC 03    mov byte ptr ss:[ebp-0x4],0x3
00401657  |.  6A 66         push 0x66
00401659  |.  8D8D ACFEFFFF lea ecx,[local.85]
0040165F  |.  E8 02070000   call <jmp.&MFC42.#4160>
00401664  |.  B9 07000000   mov ecx,0x7
00401669  |.  BE 58404000   mov esi,Brad_Sob.00404058                           ;  ASCII "Correct!!                     "
0040166E  |.  8DBD 48FEFFFF lea edi,[local.110]
00401674  |.  F3:A5         rep movs dword ptr es:[edi],dword ptr ds:[esi]
00401676  |.  66:A5         movs word ptr es:[edi],word ptr ds:[esi]
00401678  |.  A4            movs byte ptr es:[edi],byte ptr ds:[esi]
00401679  |.  B9 11000000   mov ecx,0x11
0040167E  |.  33C0          xor eax,eax
00401680  |.  8DBD 67FEFFFF lea edi,dword ptr ss:[ebp-0x199]
00401686  |.  F3:AB         rep stos dword ptr es:[edi]
00401688  |.  AA            stos byte ptr es:[edi]
00401689  |.  B9 07000000   mov ecx,0x7
0040168E  |.  BE 78404000   mov esi,Brad_Sob.00404078                           ;  ASCII "<BrD-SoB>                    "
00401693  |.  8DBD 14FFFFFF lea edi,[local.59]
00401699  |.  F3:A5         rep movs dword ptr es:[edi],dword ptr ds:[esi]
0040169B  |.  66:A5         movs word ptr es:[edi],word ptr ds:[esi]
0040169D  |.  B9 11000000   mov ecx,0x11
004016A2  |.  33C0          xor eax,eax
004016A4  |.  8DBD 32FFFFFF lea edi,dword ptr ss:[ebp-0xCE]
004016AA  |.  F3:AB         rep stos dword ptr es:[edi]
004016AC  |.  66:AB         stos word ptr es:[edi]
004016AE  |.  B9 06000000   mov ecx,0x6
004016B3  |.  BE 98404000   mov esi,Brad_Sob.00404098                           ;  ASCII "Incorrect!!, Try Again."
004016B8  |.  8DBD 78FFFFFF lea edi,[local.34]
004016BE  |.  F3:A5         rep movs dword ptr es:[edi],dword ptr ds:[esi]
004016C0  |.  B9 13000000   mov ecx,0x13
004016C5  |.  33C0          xor eax,eax
004016C7  |.  8D7D 90       lea edi,[local.28]
004016CA  |.  F3:AB         rep stos dword ptr es:[edi]
004016CC  |.  B9 07000000   mov ecx,0x7
004016D1  |.  BE B0404000   mov esi,Brad_Sob.004040B0                           ;  ASCII "Correct way to go, You Got It."
004016D6  |.  8DBD B0FEFFFF lea edi,[local.84]
004016DC  |.  F3:A5         rep movs dword ptr es:[edi],dword ptr ds:[esi]
004016DE  |.  66:A5         movs word ptr es:[edi],word ptr ds:[esi]
004016E0  |.  A4            movs byte ptr es:[edi],byte ptr ds:[esi]
004016E1  |.  B9 11000000   mov ecx,0x11
004016E6  |.  33C0          xor eax,eax
004016E8  |.  8DBD CFFEFFFF lea edi,dword ptr ss:[ebp-0x131]
004016EE  |.  F3:AB         rep stos dword ptr es:[edi]
004016F0  |.  AA            stos byte ptr es:[edi]
004016F1  |.  6A 40         push 0x40
004016F3  |.  68 D0404000   push Brad_Sob.004040D0                              ;  ASCII "CrackMe"
004016F8  |.  8D8D ACFEFFFF lea ecx,[local.85]
004016FE  |.  E8 AD010000   call Brad_Sob.004018B0
00401703  |.  50            push eax
00401704  |.  8B8D 40FEFFFF mov ecx,[local.112]
0040170A  |.  E8 75060000   call <jmp.&MFC42.#4224>
0040170F  |.  C645 FC 02    mov byte ptr ss:[ebp-0x4],0x2
00401713  |.  8D8D ACFEFFFF lea ecx,[local.85]
00401719  |.  E8 42060000   call <jmp.&MFC42.#800>
0040171E  |.  C645 FC 01    mov byte ptr ss:[ebp-0x4],0x1
00401722  |.  8D4D DC       lea ecx,[local.9]
00401725  |.  E8 36060000   call <jmp.&MFC42.#800>
0040172A  |.  C645 FC 00    mov byte ptr ss:[ebp-0x4],0x0
0040172E  |.  8D4D E8       lea ecx,[local.6]
00401731  |.  E8 2A060000   call <jmp.&MFC42.#800>
00401736  |.  C745 FC FFFFF>mov [local.1],-0x1
0040173D  |.  8D4D EC       lea ecx,[local.5]
00401740  |.  E8 1B060000   call <jmp.&MFC42.#800>
00401745  |.  EB 70         jmp XBrad_Sob.004017B7
00401747  |>  8D8D 44FEFFFF lea ecx,[local.111]
0040174D  |.  E8 1A060000   call <jmp.&MFC42.#540>
00401752  |.  C645 FC 04    mov byte ptr ss:[ebp-0x4],0x4
00401756  |.  6A 67         push 0x67
00401758  |.  8D8D 44FEFFFF lea ecx,[local.111]
0040175E  |.  E8 03060000   call <jmp.&MFC42.#4160>
00401763  |.  6A 40         push 0x40
00401765  |.  68 D8404000   push Brad_Sob.004040D8                              ;  ASCII "CrackMe"
0040176A  |.  8D8D 44FEFFFF lea ecx,[local.111]
00401770  |.  E8 3B010000   call Brad_Sob.004018B0
00401775  |.  50            push eax
00401776  |.  8B8D 40FEFFFF mov ecx,[local.112]
0040177C  |.  E8 03060000   call <jmp.&MFC42.#4224>
00401781  |.  C645 FC 02    mov byte ptr ss:[ebp-0x4],0x2
00401785  |.  8D8D 44FEFFFF lea ecx,[local.111]
0040178B  |.  E8 D0050000   call <jmp.&MFC42.#800>
00401790  |.  C645 FC 01    mov byte ptr ss:[ebp-0x4],0x1
00401794  |.  8D4D DC       lea ecx,[local.9]
00401797  |.  E8 C4050000   call <jmp.&MFC42.#800>
0040179C  |.  C645 FC 00    mov byte ptr ss:[ebp-0x4],0x0
004017A0  |.  8D4D E8       lea ecx,[local.6]
004017A3  |.  E8 B8050000   call <jmp.&MFC42.#800>
004017A8  |.  C745 FC FFFFF>mov [local.1],-0x1
004017AF  |.  8D4D EC       lea ecx,[local.5]
004017B2  |.  E8 A9050000   call <jmp.&MFC42.#800>
004017B7  |>  8B4D F4       mov ecx,[local.3]
004017BA  |.  64:890D 00000>mov dword ptr fs:[0],ecx
004017C1  |.  5F            pop edi
004017C2  |.  5E            pop esi
004017C3  |.  8BE5          mov esp,ebp
004017C5  |.  5D            pop ebp
004017C6  \.  C3            retn

算法的主要思路是根據輸入的Name算出一個值,然后將這個值用8進制表示,表示結果就是serial。

具體的算法上面已經分析出。

var = 0x81276345;
for(int i = 0;i < name_len; i++){var += name[i];int k = i << 8;var ^= k;int t = name_len * i;t = ~t;t *= (i + 1);var *= t;}printf("%lu\n",var);

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

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

相關文章

微信公眾平臺開發(59)相冊

微信公眾平臺開發 微信公眾平臺開發模式 企業微信公眾平臺 萬能相冊 3G相冊作者&#xff1a;方倍工作室 地址&#xff1a;http://www.cnblogs.com/txw1958/p/weixin-59-albums.html 相冊(Photo album)又稱影集或照片集&#xff0c;是用來裝放相片的物品。相冊主要用來收藏和保…

BugFix系列---開篇介紹

這個系列的文章&#xff0c;主要目的在于積累總結實際開發中遇到的錯誤&#xff0c;記錄下來自己的解決思路&#xff0c;用來提升自己。 不出意外&#xff0c;應該會持續不斷的記錄更新&#xff0c;在整個開發openstack的過程中&#xff0c;抓住機會吸取開源界大牛的有點經驗&a…

160 - 20 BuLLeT.8

環境&#xff1a; Windows xp sp3 工具&#xff1a; exeinfope, ollydbg 查殼&#xff1a; 用exeinfope查殼&#xff0c;發現加了殼 -- WWPack32 ver 1.xx &#xff0c;用f8單步調試法&#xff0c;脫殼。 脫掉之后發現是delphi寫的 運行之后發現界面整潔&#xff0c;目標明…

hadoop學習筆記:zookeeper學習(上)

在前面的文章里我多次提到zookeeper對于分布式系統開發的重要性&#xff0c;因此對zookeeper的學習是非常必要的。本篇博文主要是講解zookeeper的安裝和zookeeper的一些基本的應用&#xff0c;同時我還會教大家如何安裝偽分布式&#xff0c;偽分布式不能在windows下實現&#x…

戀愛Linux(Fedora20)2——安裝Java運行環境(JDK)

因為Fedora20自帶OpenJDK&#xff0c;所以我們先刪除掉自帶的&#xff1a; 1)查看當前的jdk情況 # rpm -qa|grep jdk 2)卸載openjdk # yum -y remove java java-1.7.0-openjdk* 3)下載JDK(我用的是這個&#xff0c;大家用什么版本可以自行選擇)。 http://download.csdn.net/det…

160 - 21 Cabeca

環境&#xff1a; Windows xp sp3 工具&#xff1a; exeinfope ollydbg 查殼&#xff1a; 拿到程序后查殼&#xff0c;發現程序無殼&#xff0c;為Delphi寫的。 程序長成這個樣 輸入&#xff1a; Name:GNUBD Serial&#xff1a;1234567 Serial&#xff1a;76543…

JS函數重載解決方案

JS的函數定義可以指定形式參數名稱&#xff0c;多多少少我們會以為js至少可以支持參數個數不同的方法重載&#xff0c;然而遺憾的是這僅僅是一個假象&#xff0c;js所有的參數都是以arguments傳遞過去的&#xff0c;這個參數類似于數組&#xff0c;在函數調用的時候&#xff0c…

JS中replace替換全部元素的解決辦法

JavaScript中replace() 方法如果直接用str.replace("-","!") 只會替換第一個匹配的字符. 然而我們大多數需要替換的是全部匹配的元素&#xff0c;而JavaScript又沒有java中的replaceAll的方法&#xff0c;這個時候就需要特殊處理了。 String repace(new R…

160 - 22 CarLitoZ.1

環境 Windows xp sp3 工具 exeinfope Ollydbg 查殼 無殼的VB程序 測試 輸入“1234567” 顯示這個&#xff1a; 直接OD載入字符串搜索。 00402D20 > \55 push ebp 00402D21 . 8BEC mov ebp,esp 00402D23 . 83EC 0C sub e…

實戰MEF(4):搜索范圍

在前面的文章中&#xff0c;幾乎每個示例我們都會接觸到擴展類的搜索位置&#xff0c;我們也不妨想一下&#xff0c;既然是自動擴展&#xff0c;它肯定會有一個或者多人可供查找的位置&#xff0c;不然MEF框架怎么知道哪里有擴展組件呢&#xff1f; 就像我們用導航系統去查找某…

Android應用程序請求SurfaceFlinger服務創建Surface的過程分析

文章轉載至CSDN社區羅升陽的安卓之旅&#xff0c;原文地址&#xff1a;http://blog.csdn.net/luoshengyang/article/details/7884628 前面我們已經學習過Android應用程序與SurfaceFlinger服務的連接過程了。連接上SurfaceFlinger服務之后&#xff0c;Android應用程序就可以請求…

Oracle面試題(基礎篇)

1. Oracle跟SQL Server 2005的區別&#xff1f; 宏觀上&#xff1a; 1). 最大的區別在于平臺&#xff0c;oracle可以運行在不同的平臺上&#xff0c;sql server只能運行在windows平臺上&#xff0c;由于windows平臺的穩定性和安全性影響了sql server的穩定性和安全性 2). oracl…

160 - 23 Chafe.1

環境 Windows xp sp3 工具 exeinfope ollydbg 查殼 用exeinfoe查殼 測試 可以從左下角狀態欄看出serial是無效的 直接OD載入字符串搜索 00401274 |. /75 17 jnz XChafe_1.0040128D 00401276 |. |6A 00 push 0x0 ; /Ti…

fis 詳細介紹(mac版) - 12-26沒有弄完 - 暫停

fis可以讓fe進入角色&#xff0c;而不必擔心底層的架構&#xff0c;性能得到優化。僅需三條命令&#xff0c;即可解決所有前端開發要求fis是nodejs寫的&#xff0c;發布在vpn(&#xff1f;)上下載 www.nodejs.org&#xff0c;并安裝nodejs&#xff0c;其中包括npm安裝fis: sudo…

用文件模擬CMOS保存數據

Hi3520D 芯片的內置CMOS最多只有5個字節可以用&#xff0c;但是我需要保存的數據有很多。 其中一個解決辦法是&#xff1a;可以把其他需要保存的數據放到一個配置文件中。每次寫的時候寫到配置文件&#xff0c;用的時候再從配置文件讀出數據即可。 用文件寫&#xff1a; 1 stat…

160 - 24 Chafe.2

環境&#xff1a; Windows xp sp3 工具 exeinfope OllyDBG 查殼 用exeinfope查殼&#xff0c;發現是沒有殼的。 測試 可以看出是從紅色框框里面的內容判斷serial是否有效 OD載入&#xff0c;字符串搜索可以得到&#xff1a; 004011EC . 55 pus…

十個利用矩陣乘法解決的經典題目

轉載自 Matrix67: The Aha Moments 好像目前還沒有這方面題目的總結。這幾天連續看到四個問這類題目的人&#xff0c;今天在這里簡單寫一下。這里我們不介紹其它有關矩陣的知識&#xff0c;只介紹矩陣乘法和相關性質。 不要以為數學中的矩陣也是黑色屏幕上不斷變化的綠色…

[C++]搞清楚類中構造與析構的順序

定義一個類對象時&#xff0c;首先根據初始化列表初始化類的成員&#xff08;就算沒有顯式定義初始化列表&#xff0c;編譯器也會默認地初始化一次&#xff09;&#xff0c;然后運行構造函數。因此&#xff0c;類成員的構造函數必定先于類的構造函數運行。 class A { public:A(…

160 - 25 CodeZero.1

環境 Windows xp sp3 工具 exeinfope OllyDBG 查殼 無殼的VB程序 測試 運行程序后出現Nag窗口&#xff0c;所以這次的目標是除Nag窗口和找到serial 程序運行后彈出Nag窗口&#xff0c;并且等待5秒后按鈕的標題改成“Continue..”&#xff0c;點擊后才會彈出輸入seria…

WP8開發學習筆記動態修改啟動時導航的第一個頁面(如登錄前啟動頁為LoginPage,登錄后變為MainPage)...

很多時候我們需要在啟動程序的時候根據狀態改變初始導航頁面&#xff0c;比如程序在啟動的時候判斷用戶是否登錄&#xff0c; 如果未登錄則跳轉到LoginPage.xaml否則跳轉到MainPage界面。 這時候就要分析程序的啟動和導航的過程。 程序的啟動是App.xamlcs負責的。 App類的構造器…