160 - 5 ajj.2

環境:

Windows xp sp3


打開,輸入點東西到輸入框(這里把第一個輸出框稱為text1)里面,點一下注冊,什么反應都沒有。

到處都點一點,每張圖片都點一下,還是什么反應都沒有。


查殼:

發現這東西有個upx殼,把殼脫掉


脫掉后OD載入,有了上次的經驗,猜測這次也是一樣

在字符串中搜索成功的字眼。如果用插件搜索是可以找到成功注冊的內容的

如果不用插件的話,我是搜不到的。只有一些有趣的字符串:

00446AEB   ascii "FormCreate"
00446AFC   ascii "Timer1Timer"
00446B0E   ascii "Button1MouseDown"
00446B25   ascii "Panel1DblClick"
00446B3A   ascii "Edit2DblClick"
00446B4E   ascii "FormMouseMove"
00446B62   ascii "Image1MouseDown"
00446B78   ascii "Image2MouseDown"
00446B8E   ascii "Image3MouseDown"
00446BA4   ascii "Image4MouseDown"
00446BBA   ascii "Timer2Timer"
00446BCC   ascii "Button1Click"


突然間發現:

00446AE6     /1C6C4400      dd CKme002.00446C1C
00446AEA   . |0A            db 0A
00446AEB   . |46 6F 72 6D 4>ascii "FormCreate"
00446AF5     |12            db 12
00446AF6     |00            db 00
00446AF7     |286E4400      dd CKme002.00446E28
00446AFB   . |0B            db 0B
00446AFC   . |54 69 6D 65 7>ascii "Timer1Timer"
00446B07     |17            db 17
00446B08     |00            db 00
00446B09     |A46F4400      dd CKme002.00446FA4
00446B0D   . |10            db 10
00446B0E   . |42 75 74 74 6>ascii "Button1MouseDown"
00446B1E     |15            db 15
00446B1F     |00            db 00
00446B20     |DC6F4400      dd CKme002.00446FDC
00446B24   . |0E            db 0E
00446B25   . |50 61 6E 65 6>ascii "Panel1DblClick"
00446B33     |14            db 14
00446B34     |00            db 00
00446B35     |F86F4400      dd CKme002.00446FF8
00446B39   . |0D            db 0D
00446B3A   . |45 64 69 74 3>ascii "Edit2DblClick"
00446B47     |14            db 14
00446B48     |00            db 00
00446B49     |EC704400      dd CKme002.004470EC
00446B4D   . |0D            db 0D
00446B4E   . |46 6F 72 6D 4>ascii "FormMouseMove"
00446B5B     |16            db 16
00446B5C     |00            db 00
00446B5D     |34724400      dd CKme002.00447234
00446B61   . |0F            db 0F
00446B62   . |49 6D 61 67 6>ascii "Image1MouseDown"
00446B71     |16            db 16
00446B72     |00            db 00
00446B73     |A0724400      dd CKme002.004472A0
00446B77   . |0F            db 0F
00446B78   . |49 6D 61 67 6>ascii "Image2MouseDown"
00446B87     |16            db 16
00446B88     |00            db 00
00446B89     |0C734400      dd CKme002.0044730C
00446B8D   . |0F            db 0F
00446B8E   . |49 6D 61 67 6>ascii "Image3MouseDown"
00446B9D     |16            db 16
00446B9E     |00            db 00
00446B9F     |78734400      dd CKme002.00447378
00446BA3   . |0F            db 0F
00446BA4   . |49 6D 61 67 6>ascii "Image4MouseDown"
00446BB3     |12            db 12
00446BB4     |00            db 00
00446BB5     |E4734400      dd CKme002.004473E4
00446BB9   . |0B            db 0B
00446BBA   . |54 69 6D 65 7>ascii "Timer2Timer"


每個事件都有個函數


跟FormCreate進去看看:

00446AE6     /1C6C4400      dd CKme0023.00446C1C
00446AEA   . |0A            db 0A
00446AEB   . |46 6F 72 6D 4>ascii "FormCreate"


跟00446C1C看看:

一直往下翻看到一個這個:

00446D49  |.  BA EC6D4400   mov edx,CKme002.00446DEC                 ;  ASCII "X:\ajj.126.c0m\j\o\j\o\ok.txt"
00446D4E  |.  8D85 30FEFFFF lea eax,[local.116]
00446D54  |.  E8 EDE7FBFF   call CKme002.00405546
00446D59  |.  8D85 30FEFFFF lea eax,[local.116]
00446D5F  |.  E8 07EAFBFF   call CKme002.0040576B
00446D64  |.  E8 8BBAFBFF   call CKme002.004027F4
00446D69  |.  85C0          test eax,eax
00446D6B  |.  75 4B         jnz XCKme002.00446DB8
00446D6D  |.  8D55 FC       lea edx,[local.1]
00446D70  |.  8D85 30FEFFFF lea eax,[local.116]
00446D76  |.  E8 5DD1FBFF   call CKme002.00403ED8
00446D7B  |.  E8 44BAFBFF   call CKme002.004027C4
00446D80  |.  8B45 FC       mov eax,[local.1]
00446D83  |.  BA 146E4400   mov edx,CKme002.00446E14
00446D88  |.  E8 0BCFFBFF   call CKme002.00403C98
00446D8D  |.  74 0A         je XCKme002.00446D99
00446D8F  |.  C783 04030000>mov dword ptr ds:[ebx+0x304],0xC34
00446D99  |>  8D85 30FEFFFF lea eax,[local.116]
00446D9F  |.  E8 44E8FBFF   call CKme002.004055E8
00446DA4  |.  E8 1BBAFBFF   call CKme002.004027C4
00446DA9  |.  B2 01         mov dl,0x1
00446DAB  |.  8B83 F0020000 mov eax,dword ptr ds:[ebx+0x2F0]
00446DB1  |.  E8 EED1FDFF   call CKme002.00423FA4
00446DB6  |.  EB 0A         jmp XCKme002.00446DC2
00446DB8  |>  C783 04030000>mov dword ptr ds:[ebx+0x304],0xC34
00446DC2  |>  33C0          xor eax,eax
00446DC4  |.  5A            pop edx
00446DC5  |.  59            pop ecx
00446DC6  |.  59            pop ecx
00446DC7  |.  64:8910       mov dword ptr fs:[eax],edx
00446DCA  |.  68 DF6D4400   push CKme002.00446DDF
00446DCF  |>  8D45 FC       lea eax,[local.1]
00446DD2  |.  E8 31CBFBFF   call CKme002.00403908
00446DD7  \.  C3            retn

這是打開X盤里面的(……)的ok.txt文件嗎?我技術不佳,不知道哪里來的X盤,就算有打開了這個文件又有什么用呢?

先不管,跑到第二個--Timer1Timer這里看一看,翻了翻好像沒什么特別的東西。

反正Timer1都看了,也看看Timer2是干什么的:


004473E4   .  53            push ebx
004473E5   .  8BD8          mov ebx,eax
004473E7   .  81BB 04030000>cmp dword ptr ds:[ebx+0x304],0xC34          ; [ebx+0x304]的值不能為0xC34
004473F1   .  0F84 88000000 je CKme0021.0044747F
004473F7   .  81BB 08030000>cmp dword ptr ds:[ebx+0x308],0x230D         ; [ebx+0x308]的值不能為0x230D
00447401   .  74 7C         je XCKme0021.0044747F
00447403   .  81BB 10030000>cmp dword ptr ds:[ebx+0x310],0xF94          ; [ebx+0x310]的值要是0xF94
0044740D   .  75 70         jnz XCKme0021.0044747F
0044740F   .  8B83 18030000 mov eax,dword ptr ds:[ebx+0x318]       
00447415   .  3B83 14030000 cmp eax,dword ptr ds:[ebx+0x314]
0044741B   .  75 62         jnz XCKme0021.0044747F                      ; [ebx+0x318]和[ebx+0x314]的值要相同
0044741D   .  81BB 1C030000>cmp dword ptr ds:[ebx+0x31C],0x3E7          ; [ebx+0x31C]這里的值不能為 0x3E7
00447427   .  74 56         je XCKme0021.0044747F
00447429   .  33D2          xor edx,edx
0044742B   .  8B83 D8020000 mov eax,dword ptr ds:[ebx+0x2D8]
00447431   .  8B08          mov ecx,dword ptr ds:[eax]
00447433   .  FF51 5C       call dword ptr ds:[ecx+0x5C]
00447436   .  33D2          xor edx,edx
00447438   .  8B83 DC020000 mov eax,dword ptr ds:[ebx+0x2DC]
0044743E   .  8B08          mov ecx,dword ptr ds:[eax]
00447440   .  FF51 5C       call dword ptr ds:[ecx+0x5C]
00447443   .  33D2          xor edx,edx
00447445   .  8B83 E0020000 mov eax,dword ptr ds:[ebx+0x2E0]
0044744B   .  8B08          mov ecx,dword ptr ds:[eax]
0044744D   .  FF51 5C       call dword ptr ds:[ecx+0x5C]
00447450   .  33D2          xor edx,edx
00447452   .  8B83 E4020000 mov eax,dword ptr ds:[ebx+0x2E4]
00447458   .  8B08          mov ecx,dword ptr ds:[eax]
0044745A   .  FF51 5C       call dword ptr ds:[ecx+0x5C]
0044745D   .  A1 A8984400   mov eax,dword ptr ds:[0x4498A8]
00447462   .  83C0 70       add eax,0x70
00447465   .  BA 8C744400   mov edx,CKme0021.0044748C                ;  厲害厲害真厲害!佩服佩服真佩服!!
0044746A   .  E8 EDC4FBFF   call CKme0021.0040395C
0044746F   .  BA B8744400   mov edx,CKme0021.004474B8                ;  注冊了
00447474   .  8B83 EC020000 mov eax,dword ptr ds:[ebx+0x2EC]
0044747A   .  E8 3DCCFDFF   call CKme0021.004240BC
0044747F   >  5B            pop ebx
00447480   .  C3            retn

發現有好多個比較,比較后面居然有個成功注冊的地方(反正我這里不用插件找字符串的話是看不到這個注釋的)。

那上面就是檢測的地方咯,在004473E4下個斷點,跑起來,等一段時間后就停下來了,發現[ebx+304]這個位置是:961AFC

后面比較的數據也在后面。得到上面每個位置的值的要求后,就找找看哪里修改了這5個地方的值。

突然發現在FormCreate這個事件里面有幾個0xC34。

本來是沒有x盤的,要求又要是x盤,試一試把文件里的X改為D(希望沒有檢測),雖然這樣做不好

00446D49  |.  BA EC6D4400   mov edx,CKme0023.00446DEC                ;  D:\ajj.126.c0m\j\o\j\o\ok.txt
00446D4E  |.  8D85 30FEFFFF lea eax,[local.116]
00446D54  |.  E8 EDE7FBFF   call CKme0023.00405546
00446D59  |.  8D85 30FEFFFF lea eax,[local.116]
00446D5F  |.  E8 07EAFBFF   call CKme0023.0040576B
00446D64  |.  E8 8BBAFBFF   call CKme0023.004027F4                   ;  猜測用來判斷文件是否存在
00446D69  |.  85C0          test eax,eax                             ;  不存在就跳
00446D6B  |.  75 4B         jnz XCKme0023.00446DB8
00446D6D  |.  8D55 FC       lea edx,[local.1]
00446D70  |.  8D85 30FEFFFF lea eax,[local.116]
00446D76  |.  E8 5DD1FBFF   call CKme0023.00403ED8
00446D7B  |.  E8 44BAFBFF   call CKme0023.004027C4
00446D80  |.  8B45 FC       mov eax,[local.1]
00446D83  |.  BA 146E4400   mov edx,CKme0023.00446E14
00446D88  |.  E8 0BCFFBFF   call CKme0023.00403C98		     ; 這里跟進去看一看
00446D8D  |.  74 0A         je XCKme0023.00446D99                    ;  比較,等于就跳。
00446D8F  |.  C783 04030000>mov dword ptr ds:[ebx+0x304],0xC34
00446D99  |>  8D85 30FEFFFF lea eax,[local.116]
00446D9F  |.  E8 44E8FBFF   call CKme0023.004055E8
00446DA4  |.  E8 1BBAFBFF   call CKme0023.004027C4
00446DA9  |.  B2 01         mov dl,0x1
00446DAB  |.  8B83 F0020000 mov eax,dword ptr ds:[ebx+0x2F0]
00446DB1  |.  E8 EED1FDFF   call CKme0023.00423FA4
00446DB6  |.  EB 0A         jmp XCKme0023.00446DC2
00446DB8  |>  C783 04030000>mov dword ptr ds:[ebx+0x304],0xC34

00403C98:

00403C98  /$  53            push ebx
00403C99  |.  56            push esi
00403C9A  |.  57            push edi
00403C9B  |.  89C6          mov esi,eax                              ;  esi是文件指針
00403C9D  |.  89D7          mov edi,edx                              ;  edi是比較內容
00403C9F  |.  39D0          cmp eax,edx                              ;  指向的內容是一樣的,沒必要繼續下去
00403CA1  |.  0F84 8F000000 je CKme0023.00403D36
00403CA7  |.  85F6          test esi,esi                             ;  檢測指針是否為空
00403CA9  |.  74 68         je XCKme0023.00403D13
00403CAB  |.  85FF          test edi,edi
00403CAD  |.  74 6B         je XCKme0023.00403D1A
00403CAF  |.  8B46 FC       mov eax,dword ptr ds:[esi-0x4]           ;  文件長度
00403CB2  |.  8B57 FC       mov edx,dword ptr ds:[edi-0x4]           ;  13
00403CB5  |.  29D0          sub eax,edx                              ;  如果長度為13,eax是0,影響后面的ZF標志位
00403CB7  |.  77 02         ja XCKme0023.00403CBB
00403CB9  |.  01C2          add edx,eax
00403CBB  |>  52            push edx                                 ;  取小的那個長度
00403CBC  |.  C1EA 02       shr edx,0x2                              ;  /4設置循環次數
00403CBF  |.  74 26         je XCKme0023.00403CE7
00403CC1  |>  8B0E          /mov ecx,dword ptr ds:[esi]              ;  文件的內容
00403CC3  |.  8B1F          |mov ebx,dword ptr ds:[edi]              ;  內存的內容
00403CC5  |.  39D9          |cmp ecx,ebx                             ;  比較
00403CC7  |.  75 58         |jnz XCKme0023.00403D21                  ;  不等就跳
00403CC9  |.  4A            |dec edx                                 ;  循環次數減1
00403CCA  |.  74 15         |je XCKme0023.00403CE1                   ;  用來退出循環
00403CCC  |.  8B4E 04       |mov ecx,dword ptr ds:[esi+0x4]
00403CCF  |.  8B5F 04       |mov ebx,dword ptr ds:[edi+0x4]
00403CD2  |.  39D9          |cmp ecx,ebx
00403CD4  |.  75 4B         |jnz XCKme0023.00403D21
00403CD6  |.  83C6 08       |add esi,0x8
00403CD9  |.  83C7 08       |add edi,0x8
00403CDC  |.  4A            |dec edx
00403CDD  |.^ 75 E2         \jnz XCKme0023.00403CC1                  ;  觀察跳轉的位置,不對的時候跳到找找是哪個位置不對
00403CDF  |.  EB 06         jmp XCKme0023.00403CE7
00403CE1  |>  83C6 04       add esi,0x4                              ;  過早退出
00403CE4  |.  83C7 04       add edi,0x4
00403CE7  |>  5A            pop edx                                  ;  拿回長度
00403CE8  |.  83E2 03       and edx,0x3                              ;  和0x3比較,等于就跳
00403CEB  |.  74 22         je XCKme0023.00403D0F                    ;  用于確定剩下來的比較次數
00403CED  |.  8B0E          mov ecx,dword ptr ds:[esi]               ;  后面那一部分內容
00403CEF  |.  8B1F          mov ebx,dword ptr ds:[edi]
00403CF1  |.  38D9          cmp cl,bl
00403CF3  |.  75 41         jnz XCKme0023.00403D36
00403CF5  |.  4A            dec edx
00403CF6  |.  74 17         je XCKme0023.00403D0F
00403CF8  |.  38FD          cmp ch,bh
00403CFA  |.  75 3A         jnz XCKme0023.00403D36
00403CFC  |.  4A            dec edx
00403CFD  |.  74 10         je XCKme0023.00403D0F
00403CFF  |.  81E3 0000FF00 and ebx,0xFF0000
00403D05  |.  81E1 0000FF00 and ecx,0xFF0000
00403D0B  |.  39D9          cmp ecx,ebx
00403D0D  |.  75 27         jnz XCKme0023.00403D36
00403D0F  |>  01C0          add eax,eax                              ;  這里會使得ZF改變,如果文件是正確的內容,eax是0
00403D11  |.  EB 23         jmp XCKme0023.00403D36
00403D13  |>  8B57 FC       mov edx,dword ptr ds:[edi-0x4]
00403D16  |.  29D0          sub eax,edx
00403D18  |.  EB 1C         jmp XCKme0023.00403D36
00403D1A  |>  8B46 FC       mov eax,dword ptr ds:[esi-0x4]
00403D1D  |.  29D0          sub eax,edx
00403D1F  |.  EB 15         jmp XCKme0023.00403D36
00403D21  |>  5A            pop edx
00403D22  |.  38D9          cmp cl,bl
00403D24  |.  75 10         jnz XCKme0023.00403D36
00403D26  |.  38FD          cmp ch,bh
00403D28  |.  75 0C         jnz XCKme0023.00403D36
00403D2A  |.  C1E9 10       shr ecx,0x10
00403D2D  |.  C1EB 10       shr ebx,0x10
00403D30  |.  38D9          cmp cl,bl
00403D32  |.  75 02         jnz XCKme0023.00403D36
00403D34  |.  38FD          cmp ch,bh
00403D36  |>  5F            pop edi
00403D37  |.  5E            pop esi
00403D38  |.  5B            pop ebx
00403D39  \.  C3            retn

跟進去之后看到比較的內容地址是:00446E14 ,內容是:

00446E14 ?20 61 6A 6A D0 B4 B5 C4 43 4B 6D 65 D5 E6 C0 C3 ? ajj寫的CKme真爛
00446E24 ?21 FF FF ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??!

部分內容顯示不出來,也輸入不進去。那就用16進制編輯器填進去。填進去之后再OD載入文件,發現內存里面的[ebx+304]不是0xC34了(哈哈哈),

而且程序的界面又多了一個輸入框(這里稱為text2)。這個text2是輸入不了東西的,也點不了。但是的確是可以用的,因為有個:

Edit2DblClick

在這個事件上面下斷點,雙擊也是沒有反應。沒辦法,先看其他,那就看看FormMouseMove吧:

004470EC  /.  55            push ebp
004470ED  |.  8BEC          mov ebp,esp
004470EF  |.  6A 00         push 0x0
004470F1  |.  6A 00         push 0x0
004470F3  |.  53            push ebx
004470F4  |.  8BD8          mov ebx,eax
004470F6  |.  8B55 08       mov edx,[arg.1]
004470F9  |.  8B45 0C       mov eax,[arg.2]
004470FC  |.  33C9          xor ecx,ecx
004470FE  |.  55            push ebp
004470FF  |.  68 17724400   push CKme0023.00447217
00447104  |.  64:FF31       push dword ptr fs:[ecx]
00447107  |.  64:8921       mov dword ptr fs:[ecx],esp
0044710A  |.  8B8B E0020000 mov ecx,dword ptr ds:[ebx+0x2E0]
00447110  |.  8079 47 01    cmp byte ptr ds:[ecx+0x47],0x1           ;  只有在第3張圖片出現時才為1
00447114  |.  75 19         jnz XCKme0023.0044712F
00447116  |.  3D E2000000   cmp eax,0xE2			     ; 這里的eax是指鼠標的橫坐標
0044711B  |.  7E 12         jle XCKme0023.0044712F
0044711D  |.  81FA 2C010000 cmp edx,0x12C			     ; 這里的edx是指鼠標的縱坐標
00447123  |.  7E 0A         jle XCKme0023.0044712F
00447125  |.  C783 10030000>mov dword ptr ds:[ebx+0x310],0x10	     ;如果條件符合了就把[ebx+0x310]的值賦為0x10
0044712F  |>  8B8B DC020000 mov ecx,dword ptr ds:[ebx+0x2DC]
00447135  |.  8079 47 01    cmp byte ptr ds:[ecx+0x47],0x1          ; 只有第2張圖片出現時才為1
00447139  |.  75 6C         jnz XCKme0023.004471A7
0044713B  |.  83F8 17       cmp eax,0x17			    ; 這里的eax同上	
0044713E  |.  7D 67         jge XCKme0023.004471A7
00447140  |.  81FA 2C010000 cmp edx,0x12C                           ; 這里的edx同上
00447146  |.  7E 5F         jle XCKme0023.004471A7
00447148  |.  83BB 10030000>cmp dword ptr ds:[ebx+0x310],0x10        ;如果[ebx+0x310]的值為0x10時才繼續往下,否則就跳走
0044714F  |.  75 56         jnz XCKme0023.004471A7
00447151  |.  83BB 0C030000>cmp dword ptr ds:[ebx+0x30C],0x9         ;  30c不能為9
00447158  |.  74 4D         je XCKme0023.004471A7                    ; 這里不能跳
0044715A  |.  C783 10030000>mov dword ptr ds:[ebx+0x310],0xF94       ; 這里賦值
00447164  |.  8B83 0C030000 mov eax,dword ptr ds:[ebx+0x30C]
0044716A  |.  83E8 01       sub eax,0x1                              ;  Switch (cases 1..3)
0044716D  |.  72 0A         jb XCKme0023.00447179
0044716F  |.  74 14         je XCKme0023.00447185
00447171  |.  48            dec eax
00447172  |.  74 1D         je XCKme0023.00447191
00447174  |.  48            dec eax
00447175  |.  74 26         je XCKme0023.0044719D
00447177  |.  EB 2E         jmp XCKme0023.004471A7
00447179  |>  C783 14030000>mov dword ptr ds:[ebx+0x314],0x41
00447183  |.  EB 22         jmp XCKme0023.004471A7
00447185  |>  C783 14030000>mov dword ptr ds:[ebx+0x314],0x3D        ;  Case 1 of switch 0044716A
0044718F  |.  EB 16         jmp XCKme0023.004471A7
00447191  |>  C783 14030000>mov dword ptr ds:[ebx+0x314],0x34        ;  Case 2 of switch 0044716A
0044719B  |.  EB 0A         jmp XCKme0023.004471A7
0044719D  |>  C783 14030000>mov dword ptr ds:[ebx+0x314],0xDF        ;  Case 3 of switch 0044716A
004471A7  |>  81BB 10030000>cmp dword ptr ds:[ebx+0x310],0xF94       ;  Default case of switch 0044716A
004471B1  |.  75 46         jnz XCKme0023.004471F9


發現這里可以吧[ebx+310]的值改為0xF94,但是[ebx+0x30C]的值又不能為0x9。

那就可以猜測把[ebx+310]的值改為0xF94的方法是在第3張圖出現時鼠標從程序界面的右下角進入,多晃鼠標幾次,讓[ebx+0x310]的值變成0x10,

等到第2張圖片的時候鼠標從程序界面的左下角進入,也是多晃幾次,讓[ebx+0x310]的值變成0xF94

在完成上面的操作之前要保證[ebx+0x30C]的值不為0x9,但是程序一開始這個值就是0x9了,所以應該有地方更改的。


看一看Button1MouseDown:

00446FA4  /.  55            push ebp
00446FA5  |.  8BEC          mov ebp,esp
00446FA7  |.  8B90 08030000 mov edx,dword ptr ds:[eax+0x308]
00446FAD  |.  81FA 0D230000 cmp edx,0x230D
00446FB3  |.  74 20         je XCKme0023.00446FD5
00446FB5  |.  80F9 01       cmp cl,0x1                               ;  按左鍵cl值為0,右鍵為1,中鍵為2
00446FB8  |.  75 09         jnz XCKme0023.00446FC3
00446FBA  |.  8380 08030000>add dword ptr ds:[eax+0x308],0x3         ;  每按一次右鍵就加3,加到29D為止
00446FC1  |.  EB 12         jmp XCKme0023.00446FD5
00446FC3  |>  81FA 94020000 cmp edx,0x294
00446FC9  |.  7D 0A         jge XCKme0023.00446FD5
00446FCB  |.  C780 08030000>mov dword ptr ds:[eax+0x308],0x230D      ; 這里把[eax+0x308]的值改為0x230D
00446FD5  |>  5D            pop ebp
00446FD6  \.  C2 0C00       retn 0xC


這個“注冊”按鈕按了下去反而注冊不了,點擊的時候還要看是用鼠標什么鍵按。如果用右鍵按[eax+0x308]也就是

[961B00],一開始是0x28E的。點5次就夠了。為什么說加到0x29D就夠了呢?

往下翻一翻就是了:

00446FDC   .  81B8 08030000>cmp dword ptr ds:[eax+0x308],0x29D     ;比較是不是0x29D,不是就跳
00446FE6   .  75 0D         jnz XCKme0023.00446FF5
00446FE8   .  B2 01         mov dl,0x1
00446FEA   .  8B80 F0020000 mov eax,dword ptr ds:[eax+0x2F0]
00446FF0   .  8B08          mov ecx,dword ptr ds:[eax]
00446FF2   .  FF51 5C       call dword ptr ds:[ecx+0x5C] 	  ;這個開放了text2
00446FF5   >  C3            retn

原來上面這個函數是Panel1DblClick事件的。

于是有了個解鎖text2的方法:

一開始就右鍵點注冊5次,然后趁著“人之初”那些圖片還沒出來或者沒有完全顯示的時候,雙擊那個圖片框框(Panel),

然后發現text2解鎖了,可以輸入了,可以雙擊了。在Edit2DblClick事件函數下個斷點,輸入個“123456”,然后雙擊

發現停了下來:


00446FF8  /.  55            push ebp
00446FF9  |.  8BEC          mov ebp,esp
00446FFB  |.  33C9          xor ecx,ecx
00446FFD  |.  51            push ecx
00446FFE  |.  51            push ecx
00446FFF  |.  51            push ecx
00447000  |.  51            push ecx
00447001  |.  51            push ecx
00447002  |.  53            push ebx
00447003  |.  8BD8          mov ebx,eax
00447005  |.  33C0          xor eax,eax
00447007  |.  55            push ebp
00447008  |.  68 DF704400   push CKme0023.004470DF
0044700D  |.  64:FF30       push dword ptr fs:[eax]
00447010  |.  64:8920       mov dword ptr fs:[eax],esp
00447013  |.  8D55 FC       lea edx,[local.1]
00447016  |.  8B83 F0020000 mov eax,dword ptr ds:[ebx+0x2F0]
0044701C  |.  E8 6BD0FDFF   call CKme0023.0042408C                   ;  獲取輸入的內容
00447021  |.  8B45 FC       mov eax,[local.1]
00447024  |.  E8 5FCBFBFF   call CKme0023.00403B88
00447029  |.  83F8 08       cmp eax,0x8				     ; 要求輸入的內容是8個字符
0044702C  |.  0F85 92000000 jnz CKme0023.004470C4
00447032  |.  8D55 F8       lea edx,[local.2]                        ;  輸入內容保存的位置
00447035  |.  8B83 F0020000 mov eax,dword ptr ds:[ebx+0x2F0]
0044703B  |.  E8 4CD0FDFF   call CKme0023.0042408C                   ;  獲取輸入的內容
00447040  |.  8B45 F8       mov eax,[local.2]
00447043  |.  8078 01 5F    cmp byte ptr ds:[eax+0x1],0x5F	     ; 這里要求輸入的內容第2個字符是“_”下劃線
00447047  |.  75 7B         jnz XCKme0023.004470C4
00447049  |.  8D55 F4       lea edx,[local.3]
0044704C  |.  8B83 F0020000 mov eax,dword ptr ds:[ebx+0x2F0]
00447052  |.  E8 35D0FDFF   call CKme0023.0042408C
00447057  |.  8B45 F4       mov eax,[local.3]
0044705A  |.  8078 05 2C    cmp byte ptr ds:[eax+0x5],0x2C	     ; 這里要求輸入的內容第6個字符是“,”英語的逗號
0044705E  |.  75 64         jnz XCKme0023.004470C4
00447060  |.  8D55 F0       lea edx,[local.4]
00447063  |.  8B83 E8020000 mov eax,dword ptr ds:[ebx+0x2E8]
00447069  |.  E8 1ED0FDFF   call CKme0023.0042408C
0044706E  |.  8B45 F0       mov eax,[local.4]
00447071  |.  E8 12CBFBFF   call CKme0023.00403B88
00447076  |.  83C0 03       add eax,0x3                              ;  
00447079  |.  B9 03000000   mov ecx,0x3                              ;  
0044707E  |.  99            cdq
0044707F  |.  F7F9          idiv ecx                                 ;  
00447081  |.  85D2          test edx,edx
00447083  |.  75 3F         jnz XCKme0023.004470C4
00447085  |.  6A 00         push 0x0
00447087  |.  6A 04         push 0x4
00447089  |.  8D55 EC       lea edx,[local.5]
0044708C  |.  8B83 E8020000 mov eax,dword ptr ds:[ebx+0x2E8]
00447092  |.  E8 F5CFFDFF   call CKme0023.0042408C
00447097  |.  8B45 EC       mov eax,[local.5]
0044709A  |.  E8 E9CAFBFF   call CKme0023.00403B88
0044709F  |.  99            cdq
004470A0  |.  52            push edx
004470A1  |.  50            push eax
004470A2  |.  33C0          xor eax,eax                               
004470A4  |.  E8 E70EFCFF   call CKme0023.00407F90
004470A9  |.  030424        add eax,dword ptr ss:[esp]
004470AC  |.  135424 04     adc edx,dword ptr ss:[esp+0x4]
004470B0  |.  83C4 08       add esp,0x8
004470B3  |.  83C0 02       add eax,0x2
004470B6  |.  83D2 00       adc edx,0x0
004470B9  |.  E8 47ECFBFF   call CKme0023.00405D05
004470BE  |.  8983 0C030000 mov dword ptr ds:[ebx+0x30C],eax        ;往下翻啊翻,翻到這里來,發現這里把那個0x9改掉了。
004470C4  |>  33C0          xor eax,eax
004470C6  |.  5A            pop edx
004470C7  |.  59            pop ecx
004470C8  |.  59            pop ecx
004470C9  |.  64:8910       mov dword ptr fs:[eax],edx
004470CC  |.  68 E6704400   push CKme0023.004470E6
004470D1  |>  8D45 EC       lea eax,[local.5]
004470D4  |.  BA 05000000   mov edx,0x5
004470D9  |.  E8 4EC8FBFF   call CKme0023.0040392C
004470DE  \.  C3            retn


于是就有:

在text2可用之后,輸入個字符串,第2個字符要是“_”,第6個字符是“,”(這個是逗號),我輸入的是”1_345,78”,然后雙擊text2,使得[ebx+0x30C]變成其他東西。


目前位置我們把[ebx+0x304]、[ebx+0x308]、[ebx+0x310]、[ebx+0x31C]都搞好了,至于說前面的內容沒有提到過[ebx+0x31C]這個東西,因為這是個Button1Click事件

會導致[ebx+0x31C]的值為0x3E7,不要去click就好了。

004474C0   ?  C780 1C030000>mov dword ptr ds:[eax+0x31C],0x3E7

[ebx+0x314] 和 [ebx+0x318]的值是怎么才使得相同的呢?

看看我們還有什么事件沒有看過,就是那4個點圖片了。

00447234  /.  55            push ebp                                 ;  這個是第1張圖片的
00447235  |.  8BEC          mov ebp,esp
00447237  |.  53            push ebx
00447238  |.  56            push esi
00447239  |.  8BD9          mov ebx,ecx
0044723B  |.  8BF0          mov esi,eax
0044723D  |.  6A 00         push 0x0
0044723F  |.  66:8B0D 70724>mov cx,word ptr ds:[0x447270]
00447246  |.  B2 02         mov dl,0x2
00447248  |.  B8 7C724400   mov eax,CKme0023.0044727C                ;  注冊尚未成功,同志仍需努力!  8)
0044724D  |.  E8 42E4FFFF   call CKme0023.00445694
00447252  |.  84DB          test bl,bl
00447254  |.  75 07         jnz XCKme0023.0044725D
00447256  |.  8386 18030000>add dword ptr ds:[esi+0x318],0x2         ; 這里就是將[ebx+0x318]的值加上來,其他的也是差不多
0044725D  |>  80FB 01       cmp bl,0x1
00447260  |.  75 07         jnz XCKme0023.00447269
00447262  |.  8386 18030000>add dword ptr ds:[esi+0x318],0x11
00447269  |>  5E            pop esi
0044726A  |.  5B            pop ebx
0044726B  |.  5D            pop ebp
0044726C  \.  C2 0C00       retn 0xC
于是有:

點第1張圖:+2

點第2張圖:+3

點第3張圖:+5

點第4張圖:+7


最終[ebx+0x314的值是]0x34的,那么一開始就把第1張圖點26次。這樣[ebx+0x314]和[ebx+0x318]就相同了


總結操作過程:

保證那個ok.txt的存在,使得打開程序后,能看到text2。 然后在第1張圖片出來前,右鍵點5下注冊,雙擊顯示圖片的框框沒有圖片的那些部分。

用于解鎖text2,然后點第1張圖片26次。如果還沒點完,那就等下一輪吧。在第3張圖片“性相近”出來之前在text2輸入內容,一共8個字符,

第2個字符是“_”,第6個字符是",",在第3張圖片出來的時候鼠標在程序界面的右下角晃來晃去,多晃幾遍保證成功使得[ebx+0x310]的值變成0x10,

然后等第2張圖出來,如果第1張沒有點夠26次的就繼續點,夠了就不點。第2張圖出來后就用鼠標在程序左下角晃來晃去。多晃幾次,注冊按鈕就

會變成"注冊了"。


不是一定要點第1張圖片26次,反正4張圖片點一次的變化量出來了,將總的變化量加起來是52就行了。


如何不更改任何文件內容,可以搜索更改盤符的相關信息。將D盤改為X盤,或者將多分一個盤出來且將盤符改為X并且

在相關路徑創建文件。只有在成功讀取文件,程序界面才能出現text2


網站有資料說是[ebx+0x314]的值是不固定的,但是我在虛擬機得出的解決方法在實機上也可以用。



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

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

相關文章

移動平臺WEB前端開發技巧匯總

原名《移動平臺3G手機網站前端開發布局技巧匯總》,由武方博整理的,讓我們了解下移動設備上的WEB站點開發的基礎知識,多些時間和精力去優化其他細節,我這里對原文的標簽格式做了細微的調整,閱讀查看起來明晰些&#xff…

0809

來自網銷協會消息:8月8日,第八屆豫商大會新聞發布會在鄭州舉行,由河南省政協主辦,省商務廳、省工商聯、省豫商聯合會協辦,安陽市人民政府承辦的第八屆豫商大會將于8.28如期舉行。本次大會會期兩天,其中&…

160 - 6 aLoNg3x.1

環境: Windows xp sp3 查殼,這次不用脫殼了,但是還是Delphi程序。 打開后看隨便輸點東西進去,發現Nome什么都能輸入,但最多10個字符,而 Codice可以是數字或者是“$”,在輸入“$”后就可以輸入…

hyper-v 用戶無法再 創建外部配置存儲 0x80070005

windows server 2008R2 剛安裝的hyper-v 重啟過。 修改配置文件到d:\Hyper-V目錄下, hyper-V 創建 服務器遇到錯誤 操作失敗 創建外部配置存儲:一般性拒絕訪問錯誤 虛擬機ID 0x80070005 d:\hyper-V 安全權限為 everyone 所有,users 所有,admi…

160 - 7 aLoNg3x.2

環境: Windows Xp sp3 打開程序,看了幫助發現要求還是看到那個logo, 但是這次少了個按鈕,真棒! 但是這次的Codice卻是什么都可以輸入進去了。 查一下殼發現還是Delphi程序。 因為還是Delphi的程序,有了前…

Spring 中的國際化Message的簡單例子(ApplicationContext) 不跟框架集成的版本

首先&#xff0c;建立一個描述message的XML文件&#xff0c;名為messages.xml <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-bean…

簡述進程間通信方式

進程間通信方式通常有共享內存 信號量 消息隊列 管道 FIFO Socket等幾種。 共享內存的模型&#xff0c;它是最有效率的進程間通信方式進程間信號量是進程間同步主要方式&#xff0c;信號量操作為負的時候&#xff0c;進程阻塞。直到信號量為正 內存映射是一種特殊的共享內存…

輔助的寫與數據庫交互的XML文件的類

現在企業級WEB應用中與數據庫交互的XML文件都是通過插件自動生成的&#xff0c;不過有些時候修改比較老的項目的時候也是需要手動的來做這一動作的&#xff01;如下代碼就是一個實現上述的功能的輔助類&#xff0c;在此記錄一下以備后用&#xff01; package com.cn.common.uti…

160 - 8 Andrnalin.1

環境&#xff1a; Windows xp sp3 打開&#xff0c;就一個Key輸入框&#xff0c;輸入&#xff1a;goodname&#xff0c;點OK&#xff0c;彈出一個 不明文字的框&#xff0c;反正肯定不對。 查殼&#xff0c;無殼的vb程序。OD載入&#xff1a; 查找字串&#xff0c;翻到最下…

C++ 虛函數表解析

C 虛函數表解析 陳皓 http://blog.csdn.net/haoel 前言 C中的虛函數的作用主要是實現了多態的機制。關于多態&#xff0c;簡而言之就是用父類型別的指針指向其子類的實例&#xff0c;然后通過父類的指針調用實際子類的成員函數。這種技術可以讓父類的指針有“多種形態”&#x…

160 - 9 Andrnalin.2

環境&#xff1a; Windows xp sp3 打開&#xff0c;這次升級了&#xff0c;有個Name和一個Key&#xff0c;輸入&#xff1a; Name&#xff1a;goodname Key&#xff1a;12345678 肯定錯誤。拿到錯誤信息的字符串 查殼&#xff0c;無殼的VB程序。 直接OD載入&#xff0c;字…

[PALAPALA] 無題 - 外來的和尚會念經

手機, 現代人響當當的必須品, 尤其在移動App流行的大環境之下顯得更為重要. 我, 并不是一個重度依賴手機的機粉. 但我對手機的差異化敏感度很高... 安卓手機, 我不喜歡, 因為滿大街泛濫&#xff0c;折騰過多... 蘋果手機, 我不喜歡, 因為滿大街泛濫&#xff0c;bug過多..... 相…

HTTP協議 (四) 緩存

HTTP協議 (四) 緩存 閱讀目錄 緩存的概念緩存的好處Fiddler可以方便地查看緩存的header如何判斷緩存新鮮度通過最后修改時間&#xff0c;判斷緩存新鮮度與緩存相關的headerETag瀏覽器不使用緩存直接使用緩存&#xff0c;不去服務器端驗證如何設置IE不使用緩存公有緩存和私有緩存…

160 - 10 Andrénalin.3

環境&#xff1a; Windows xp sp3 打開&#xff0c;是只有一個key&#xff0c;輸入個goodname試試&#xff0c;錯誤。。。記下錯誤信息 查殼&#xff0c;無殼的VB程序。 查找字符串&#xff1a; 00402036 UNICODE "kXy^rO|*yXo*m\kMuOn*" 00402090 UNICODE &qu…

160 - 11 Andrnalin.4

環境&#xff1a; Windows xp sp3 打開&#xff0c;這次的界面炫酷多了&#xff0c;就像輸保險箱密碼。 旁邊一個“UNREGISTRIERT”表示還沒注冊 輸入個666666&#xff0c;沒反應又沒有確認按鈕&#xff0c;可以猜測是用timer來檢測輸入的正確性 查殼&#xff0c;無殼的VB程…

ZooKeeper啟動過程2:FastLeaderElection

前一篇文章中說到&#xff0c;啟動ZooKeeper集群時&#xff0c;需要分別啟動集群中的各個節點&#xff0c;各節點以QuorumPeer的形式啟動&#xff0c;最后到達startLeaderElection和lookForLeader。 先說startLeaderElection 首先&#xff0c;初始化節點自身的currentVote【當前…

C++編程調試秘笈(第1次閱讀)

閱讀時間&#xff1a; 2017-4-17 --- 2017-4-19 第一次閱讀《C編程調試秘笈》&#xff0c;可能是因為對項目開發的經驗不足&#xff08;最近只是在做簡單的五子棋&#xff09;&#xff0c;使得對里面很多的知識點了解得不是很深。 《C編程調試秘笈》講的內容個人覺得與調試的技…

Web Component 文章

周末無意中了解了Web Component的概念。 http://blog.amowu.com/2013/06/web-components.html http://www.v2ex.com/t/69389 http://www.infoq.com/cn/news/2013/06/webcomponents Shadow DOM http://www.toobug.net/article/what_is_shadow_dom.html http://www.html5rocks.co…

遮罩效果 css3

CSS3提供了遮罩效果&#xff0c;這是以前CSS2中比較難實現的一個新特性&#xff0c;配合SVG或者canvas同樣也可以實現遮罩效果&#xff0c;他的效果就如下圖所示: 簡單的說就是在一個層上面加一個過濾層&#xff0c;過濾層透明度越低&#xff0c;底層就顯示的越多&#xff0c;反…

調試九法(第1次閱讀)

閱讀時間&#xff1a; 2017年4月19日 --- 2017年4月22日 第一次看到這本書的時候&#xff0c;是在網上看到它被評論得十分優秀&#xff0c;只要掌握了書中的方法&#xff0c;就能找到所有的BUG。我就是這樣被吸引過來的。 因為是調試9法&#xff0c;所以總共講了調試的時候注意…