160 - 25 CodeZero.1

環境
Windows xp sp3

工具
exeinfope
OllyDBG

查殼
無殼的VB程序

測試
運行程序后出現Nag窗口,所以這次的目標是除Nag窗口和找到serial

程序運行后彈出Nag窗口,并且等待5秒后按鈕的標題改成“Continue..”,點擊后才會彈出輸入serial的窗口。

字符串搜索可以一下子知道serial的內容:

00405721   .  68 A4264000   push CodeZero.004026A4                   ;  UNICODE "55555"
00405726   .  E8 3BBAFFFF   call <jmp.&MSVBVM50.__vbaStrCmp>
0040572B   .  8BF0          mov esi,eax
0040572D   .  8D4D E8       lea ecx,dword ptr ss:[ebp-0x18]
00405730   .  F7DE          neg esi
00405732   .  1BF6          sbb esi,esi
00405734   .  46            inc esi
00405735   .  F7DE          neg esi
00405737   .  E8 18BAFFFF   call <jmp.&MSVBVM50.__vbaFreeStr>
0040573C   .  8D4D E4       lea ecx,dword ptr ss:[ebp-0x1C]
0040573F   .  E8 0ABAFFFF   call <jmp.&MSVBVM50.__vbaFreeObj>
00405744   .  6A 0A         push 0xA
00405746   .  66:3BF3       cmp si,bx
00405749   .  58            pop eax
0040574A   .  B9 04000280   mov ecx,0x80020004
0040574F   .  6A 08         push 0x8
00405751   .  894D AC       mov dword ptr ss:[ebp-0x54],ecx
00405754   .  5E            pop esi
00405755   .  894D BC       mov dword ptr ss:[ebp-0x44],ecx
00405758   .  8945 A4       mov dword ptr ss:[ebp-0x5C],eax
0040575B   .  8945 B4       mov dword ptr ss:[ebp-0x4C],eax
0040575E   .  C745 8C 68264>mov dword ptr ss:[ebp-0x74],CodeZero.004>;  UNICODE "VB Crack-Me 1.0 by CodeZero"
00405765   .  8975 84       mov dword ptr ss:[ebp-0x7C],esi
00405768   .  8D55 84       lea edx,dword ptr ss:[ebp-0x7C]
0040576B   .  8D4D C4       lea ecx,dword ptr ss:[ebp-0x3C]
0040576E   .  74 2A         je XCodeZero.0040579A
00405770   .  E8 CDB9FFFF   call <jmp.&MSVBVM50.__vbaVarDup>
00405775   .  8D55 94       lea edx,dword ptr ss:[ebp-0x6C]
00405778   .  8D4D D4       lea ecx,dword ptr ss:[ebp-0x2C]
0040577B   .  C745 9C B4264>mov dword ptr ss:[ebp-0x64],CodeZero.004>;  UNICODE "Congratulations! you've really made it :-)"
00405782   .  8975 94       mov dword ptr ss:[ebp-0x6C],esi
00405785   .  E8 B8B9FFFF   call <jmp.&MSVBVM50.__vbaVarDup>
0040578A   .  8D45 A4       lea eax,dword ptr ss:[ebp-0x5C]
0040578D   .  50            push eax
0040578E   .  8D45 B4       lea eax,dword ptr ss:[ebp-0x4C]
00405791   .  50            push eax
00405792   .  8D45 C4       lea eax,dword ptr ss:[ebp-0x3C]
00405795   .  50            push eax
00405796   .  6A 40         push 0x40
00405798   .  EB 28         jmp XCodeZero.004057C2
0040579A   >  E8 A3B9FFFF   call <jmp.&MSVBVM50.__vbaVarDup>
0040579F   .  C745 9C 10274>mov dword ptr ss:[ebp-0x64],CodeZero.004>;  UNICODE "Invalid unlock code, please try again."
004057A6   >  8D55 94       lea edx,dword ptr ss:[ebp-0x6C]
004057A9   .  8D4D D4       lea ecx,dword ptr ss:[ebp-0x2C]
004057AC   .  8975 94       mov dword ptr ss:[ebp-0x6C],esi
004057AF   .  E8 8EB9FFFF   call <jmp.&MSVBVM50.__vbaVarDup>

字符串明文比較

剩下來就是去除Nag窗口了:
OD打開程序后讓程序運行起來,等顯示“continue..”后對.text段下內存訪問斷點,然后讓程序運行,多按幾次F9就可以來到這里。

00402330   .  816C24 04 570>sub dword ptr ss:[esp+0x4],0x57
00402338   .  E9 85360000   jmp CodeZero.004059C2       ; 用來顯示輸入serial窗口
0040233D   .  816C24 04 330>sub dword ptr ss:[esp+0x4],0x33
00402345      E9 7B370000   jmp CodeZero.00405AC5       ; 用來顯示Nag窗口的“50040234A   .  816C24 04 3F0>sub dword ptr ss:[esp+0x4],0x3F
00402352      E9 77380000   jmp CodeZero.00405BCE       ; 用來顯示Nag窗口的“400402357   .  816C24 04 430>sub dword ptr ss:[esp+0x4],0x43
0040235F      E9 73390000   jmp CodeZero.00405CD7       ; 用來顯示Nag窗口的“300402364   .  816C24 04 470>sub dword ptr ss:[esp+0x4],0x47
0040236C      E9 6F3A0000   jmp CodeZero.00405DE0       ; 用來顯示Nag窗口的“200402371   .  816C24 04 4B0>sub dword ptr ss:[esp+0x4],0x4B
00402379      E9 6B3B0000   jmp CodeZero.00405EE9       ; 用來顯示Nag窗口的“10040237E   .  816C24 04 530>sub dword ptr ss:[esp+0x4],0x53
00402386      E9 673C0000   jmp CodeZero.00405FF2       ; 用來顯示Nag窗口的“continue..”

會發現即使在上面的指令里下了斷點也無法阻擋Nag窗口的出現,表面Nag窗口的指令比這些還要早就執行了。

觀察這些jmp所跳到的地方,發現[004059C2]是最小的,如果跟到[004059C2],會發現這段指令上面還有很多指令。

0040595C  |.  57            push edi
0040595D  |.  50            push eax
0040595E  |.  E8 F7B7FFFF   call <jmp.&MSVBVM50.__vbaHresultCheckObj>
00405963  |>  833D 38704000>cmp dword ptr ds:[0x407038],0x0
0040596A  |.  75 0F         jnz XCodeZero.0040597B
0040596C  |.  68 38704000   push CodeZero.00407038
00405971  |.  68 B01D4000   push CodeZero.00401DB0
00405976  |.  E8 B5B7FFFF   call <jmp.&MSVBVM50.__vbaNew2>
0040597B  |>  8B35 38704000 mov esi,dword ptr ds:[0x407038]
00405981      6A FF         push -0x1
00405983      56            push esi
00405984      8B06          mov eax,dword ptr ds:[esi]
00405986      FF90 BC010000 call dword ptr ds:[eax+0x1BC]          ; 這里是生成Nag窗口的地方
0040598C  |.  85C0          test eax,eax
0040598E  |.  7D 11         jge XCodeZero.004059A1
00405990  |.  68 BC010000   push 0x1BC
00405995  |.  68 C8274000   push CodeZero.004027C8
0040599A  |.  56            push esi
0040599B  |.  50            push eax
0040599C  |.  E8 B9B7FFFF   call <jmp.&MSVBVM50.__vbaHresultCheckObj>
004059A1  |>  8365 FC 00    and [local.1],0x0
004059A5  |.  8B45 08       mov eax,[arg.1]
004059A8  |.  50            push eax
004059A9  |.  8B08          mov ecx,dword ptr ds:[eax]
004059AB  |.  FF51 08       call dword ptr ds:[ecx+0x8]
004059AE  |.  8B4D EC       mov ecx,[local.5]
004059B1  |.  8B45 FC       mov eax,[local.1]
004059B4  |.  5F            pop edi
004059B5  |.  5E            pop esi
004059B6  |.  64:890D 00000>mov dword ptr fs:[0],ecx
004059BD  |.  5B            pop ebx
004059BE  |.  C9            leave
004059BF  \.  C2 0400       retn 0x4
004059C2   >  55            push ebp                   ; 這里往下是生成輸入serial窗口的地方
004059C3   .  8BEC          mov ebp,esp

[004059C2]上面的指令具體又是什么時候實現的呢?
可以找到大多數每段指令開始的地方看一看

push ebp

于是找到了這個:

0040583D  /> \55            push ebp

然后就跟到了這里來:

00401D88   .  816C24 04 330>sub dword ptr ss:[esp+0x4],0x33
00401D90   .  E9 5F380000   jmp CodeZero.004055F4    ; 這個是響應點擊“Check”
00401D95   .  816C24 04 370>sub dword ptr ss:[esp+0x4],0x37
00401D9D   .  E9 9B3A0000   jmp CodeZero.0040583D    ; 這個是響應點擊“About”
00401DA2   .  816C24 04 3F0>sub dword ptr ss:[esp+0x4],0x3F
00401DAA   .  E9 563B0000   jmp CodeZero.00405905    ; 這個是跳到生成Nag窗口的

現在就可以去除Nag窗口了,只需要把:

0040583D  /> \55            push ebp

改為:

00405905      C2 0400       retn 0x4

然后再將:

00402345      E9 7B370000   jmp CodeZero.00405AC5    ; 顯示“5”

改為:

00402345     /E9 78360000   jmp CodeZero.004059C2    ; 顯示輸入serial的窗口

patch后就可以去除Nag窗口了。
而serial則是“55555”

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

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

相關文章

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

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

6.數組和Hash表

當顯示多條結果時&#xff0c;存儲在變量中非常智能&#xff0c;變量類型會自動轉換為一個數組。 在下面的例子中&#xff0c;使用GetType()可以看到$a變量已經不是我們常見的string或int類型&#xff0c;而是Object類型&#xff0c;使用-is操作符來判斷是否是個數組&#xff0…

160 - 26 Colormaster

環境 Windows xp sp3 查殼 無殼的VB程序 測試&#xff1a; 輸入 Name:123456 Serial:12345 字符串搜索&#xff0c;找到判斷位置。 判斷Name的長度要大于等于5&#xff1a; 00402CBC . 33C9 xor ecx,ecx 00402CBE . 83F8 04 cmp eax,0x4 00…

Android 菜單(OptionMenu)大全 建立你自己的菜單

菜單是用戶界面中最常見的元素之一&#xff0c;使用非常頻繁&#xff0c;在Android中&#xff0c;菜單被分為如下三種&#xff0c;選項菜單&#xff08;OptionsMenu&#xff09;、上下文菜單&#xff08;ContextMenu&#xff09;和子菜單&#xff08;SubMenu&#xff09;&#…

160 - 27 Cosh.1

環境 Windows XP sp3 工具 exeinfope ollydbg 查殼 無殼的MFC程序 測試 彈出這個&#xff1a; 是一個CD-CHECK保護的程序。 字符串搜索&#xff0c;一下子就能來到這里&#xff1a; 0040121A . 68 9C304000 push Cosh_1.0040309C …

什么時候加上android.intent.category.DEFAULT

1、要弄清楚這個問題&#xff0c;首先需要弄明白什么是implicit(隱藏) intent什么是explicit(明確) intent。 Explicit Intent明確的指定了要啟動的Acitivity &#xff0c;比如以下Java代碼&#xff1a; Intent intent new Intent(this, B.class) Implicit Intent沒有明確的指…

[BZOJ 2165] 大樓 【DP + 倍增 + 二進制】

題目鏈接&#xff1a;BZOJ - 2165 題目分析&#xff1a; 這道題我讀了題之后就想不出來怎么做&#xff0c;題解也找不到&#xff0c;于是就請教了黃學長&#xff0c;黃學長立刻秒掉了這道題&#xff0c;然后我再看他的題解才寫出來。。Orz 使用 DP 倍增 &#xff0c;用狀態 f[…

oracle創建表空間

注意點&#xff1a; 1.如果在PL/SQL 等工具里打開的話&#xff0c;直接修改下面的代碼中[斜體加粗部分]執行 2.確保路徑存在&#xff0c;比如【D:\oracle\oradata\Oracle9i\】也就是你要保存文件的路徑存在 /*分為四步 */ /*第1步&#xff1a;創建臨時表空間 */ create tempor…

160 - 28 CoSH.2

環境 Windows xp sp3 工具 exeinfope ollydbg 查殼 無殼的MFC程序 測試 輸入 Nmae:123456 Serial:12345 點擊“CHECK”后彈出錯誤提示的消息框&#xff0c;然后程序自己結束掉 依然是字符串搜索&#xff1a; 004014DB . 8B1D FC214000 mov ebx,dword ptr ds…

負載均衡情況下獲取真實ip的方法

公司用了硬件負載均衡&#xff0c;最近發現日志中的用戶ip都為負載均衡器的ip&#xff0c;業務需要所以要改為用戶真實ip&#xff0c;下面記錄一下&#xff01; 1、打開文件&#xff1a;/etc/httpd/conf/httd.conf。2、在文件中查找&#xff1a;”CustomLog”,找到如下配置塊: …

ASP.NET MVC5 + EF6 入門教程 (5) Model和Entity Framework

文章來源&#xff1a; Slark.NET-博客園 http://www.cnblogs.com/slark/p/mvc-5-ef-6-get-started-model.html 上一節&#xff1a;ASP.NET MVC 5 入門教程 (4) View和ViewBag 下一節&#xff1a;ASP.NET MVC5 EF6 入門教程 (6) View中的Razor使用 源碼下載&#xff1a;點我下…

160 - 29 cosh.3

環境 Windows xp sp3 工具 exeinfope ollydbg 查殼 無殼的MFC程序 測試 字符串搜索&#xff1a; 004014F5 |. E8 AA030000 call <jmp.&MFC42.#CWnd::GetWindowTextLengthA_> 004014FA |. 8945 EC mov [local.5],eax 004014FD |. 837D EC 0…

hdu--4902--線段樹

題意 前面一段廢話 這題 最有意思的應該是出題人 是clj 這題的時限放的太寬了 給了15s 我也是醉了 區間更新。 1 #include <iostream>2 #include <algorithm>3 using namespace std;4 5 const int size 200010;6 int a[size];7 struct data8 {9 int L , R ,…

(五) 面向對象類設計原則

1. 開閉原則&#xff08;the Open Closed Principle OCP&#xff09; 一個模塊在擴展性方面應該是開放的而在更改性方面應該是封閉的。因此在進行面向對象設計時要盡量考慮接口封裝機制、抽象機制和多態技術。該原則同樣適合于非面向對象設計的方法&#xff0c;是軟件工程 設計…

160 - 30 cracking4all.1

環境 Windows XP sp3 工具 exeinfope ollydbg 查殼 無殼的VB程序 測試 這個serial藏得比較里面&#xff0c;多點幾下才能看到 字符串搜索&#xff1a; 00403338 . 50 push eax ; /var18 00403339 . 51 …

java2s.com

http://www.java2s.com/Code/JavaAPI/CatalogJavaAPI.htm轉載于:https://www.cnblogs.com/reborn2012/p/3326445.html

MVC5 + EF6 入門完整教程

MVC5 EF6 入門完整教程 原文:MVC5 EF6 入門完整教程第0課 從0開始 ASP.NET MVC開發模式和傳統的WebForm開發模式相比&#xff0c;增加了很多"約定"。 直接講這些 "約定" 會讓人困惑&#xff0c;而且東西太多容易忘記。 和微軟官方教程不同&#xff0c…

160 - 31 cracking4all.2

環境 Windows xp sp3 工具 exeinfope ollydbg 查殼 無殼VB程序 測試 輸入1234567 OD載入字符串搜素&#xff0c;往上翻就看到這里&#xff0c;我截取部分片段&#xff1a; 00402C26 . 8D55 98 lea edx,dword ptr ss:[ebp-0x68] ; 取serial長度…

stm32的DFU使用方法

stm32的dfu看上去是個很高級的東西&#xff0c;似乎可以通過USB給內部flash、外部spi flash、外部nor等東西刷寫數據、把數據讀出來&#xff0c;但是用了一下感覺確實有點麻煩。 先不管原理是怎樣的&#xff0c;使用方法是這樣&#xff1a; 1、先下載這個Dfuse&#xff0c;然后…

160 - 32 genocide1

環境 Windows xp sp3 工具 upx exeinfope ollydbg 查殼 發現是upx殼&#xff0c;手脫的話會不干凈&#xff0c;影響OD分析。 所以就直接用 upx -d 脫了 手脫&#xff1a; upx -d: 用upx -d 脫的版本進行分析。 第一次運行時顯示這個&#xff1a; 缺少Reg.dat…