日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

160 - 4 ajj.1

發布時間:2023/12/1 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 160 - 4 ajj.1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

環境:

Windows Xp sp3


輸入Name和Serial,無錯誤提示。看說明,只有正確時才有提示

OD載入,搜索字符串,發現兩個字符串:

Panel1DblClick和Panel1Click

一個雙擊一個單擊

先跟隨單擊的:


00457B88 . /B87F4500 dd CKme.00457FB8 00457B8C . |0B db 0B 00457B8D . |50 61 6E 65 6>ascii "Panel1Click" 00457B98 . |06 db 06 00457B99 . |54 46 6F 72 6>ascii "TForm1" 00457B9F |04 db 04
到00457FB8看看:

往下看一看找到這個:

00458031 |. 81BE 0C030000>cmp dword ptr ds:[esi+0x30C],0x85 ;這里有個比較 0045803B 75 76 jnz XCKme.004580B3 ;不為0就跳,顯然跳到下面那個地方的,所以[esi+0x30C]的值是關鍵 0045803D |. 33DB xor ebx,ebx 0045803F |> 8D55 E4 /lea edx,[local.7] 00458042 |. 8B86 D4020000 |mov eax,dword ptr ds:[esi+0x2D4] 00458048 |. E8 FBB2FCFF |call CKme.00423348 0045804D |. 8B45 E4 |mov eax,[local.7] 00458050 |. E8 27BBFAFF |call CKme.00403B7C 00458055 |. 83C0 03 |add eax,0x3 00458058 |. 8D55 E8 |lea edx,[local.6] 0045805B |. E8 A4FAFAFF |call CKme.00407B04 00458060 |. FF75 E8 |push [local.6] 00458063 |. 8D55 E0 |lea edx,[local.8] 00458066 |. 8B86 D4020000 |mov eax,dword ptr ds:[esi+0x2D4] 0045806C |. E8 D7B2FCFF |call CKme.00423348 00458071 |. FF75 E0 |push [local.8] 00458074 |. 8D55 DC |lea edx,[local.9] 00458077 |. 8BC3 |mov eax,ebx 00458079 |. E8 86FAFAFF |call CKme.00407B04 0045807E |. FF75 DC |push [local.9] 00458081 |. 8D45 FC |lea eax,[local.1] 00458084 |. BA 03000000 |mov edx,0x3 00458089 |. E8 AEBBFAFF |call CKme.00403C3C 0045808E |. 43 |inc ebx 0045808F |. 83FB 13 |cmp ebx,0x13 00458092 |.^ 75 AB \jnz XCKme.0045803F 00458094 |. 33D2 xor edx,edx 00458096 |. 8B86 F0020000 mov eax,dword ptr ds:[esi+0x2F0] 0045809C |. E8 BFB1FCFF call CKme.00423260 004580A1 |. A1 20B84500 mov eax,dword ptr ds:[0x45B820] 004580A6 |. 83C0 70 add eax,0x70 ; 這里顯然是成功的地方 004580A9 |. BA 14814500 mov edx,CKme.00458114 ; 恭喜恭喜!注冊成功 004580AE |. E8 9DB8FAFF call CKme.00403950 004580B3 |> 33C0 xor eax,eax ;這里有個跳轉來到這里,往上看


再往上看一看發現沒有修改過[esi+0x30C]的值


那就去跟隨Panel1DblClick看看,發現了這個:

00457EF5 |. 83BE 0C030000>cmp dword ptr ds:[esi+0x30C],0x3E 00457EFC |. 75 0A jnz XCKme.00457F08 00457EFE |. C786 0C030000>mov dword ptr ds:[esi+0x30C],0x85 00457F08 |> 33DB xor ebx,ebx
原來是這里把[esi+0x30C]的值改為0x85的,但是前提是[esi+0x30C]的值要為0x3E

于是下個內存訪問斷點,重新讓程序運行起來,在注冊碼的輸入框中按下回車

跳到這里來了:


00457D2F |. 8B93 18030000 mov edx,dword ptr ds:[ebx+0x318] 00457D35 |. E8 52BFFAFF call CKme.00403C8C ;猜測這個call是判斷注冊碼的正確性 00457D3A |. 75 0A jnz XCKme.00457D46 00457D3C |. C783 0C030000>mov dword ptr ds:[ebx+0x30C],0x3E ;這里賦值了0x3E 00457D46 |> 8B83 0C030000 mov eax,dword ptr ds:[ebx+0x30C] 00457D4C |. 83C0 10 add eax,0x10 00457D4F |. 8983 FC020000 mov dword ptr ds:[ebx+0x2FC],eax
往上翻一翻:

00457C40 /. 55 push ebp 00457C41 |. 8BEC mov ebp,esp 00457C43 |. 51 push ecx 00457C44 |. B9 05000000 mov ecx,0x5 00457C49 |> 6A 00 /push 0x0 00457C4B |. 6A 00 |push 0x0 00457C4D |. 49 |dec ecx 00457C4E |.^ 75 F9 \jnz XCKme.00457C49 00457C50 |. 51 push ecx 00457C51 |. 874D FC xchg [local.1],ecx 00457C54 |. 53 push ebx 00457C55 |. 56 push esi 00457C56 |. 8BD8 mov ebx,eax 00457C58 |. 33C0 xor eax,eax 00457C5A |. 55 push ebp 00457C5B |. 68 3D7E4500 push CKme.00457E3D 00457C60 |. 64:FF30 push dword ptr fs:[eax] 00457C63 |. 64:8920 mov dword ptr fs:[eax],esp 00457C66 |. 8BB3 F8020000 mov esi,dword ptr ds:[ebx+0x2F8] ; 輸入的Name的長度L 00457C6C |. 83C6 05 add esi,0x5 ; L = L + 5 00457C6F |. FFB3 10030000 push dword ptr ds:[ebx+0x310] ; [ebx+0x310]是serial的一部分 00457C75 |. 8D55 F8 lea edx,[local.2] 00457C78 |. 8BC6 mov eax,esi 00457C7A |. E8 85FEFAFF call CKme.00407B04 ; 算出來L存到內容中,L是serial的一部分 00457C7F |. FF75 F8 push [local.2] 00457C82 |. FFB3 14030000 push dword ptr ds:[ebx+0x314] ; [ebx+0x314]是serial的一部分 00457C88 |. 8D55 F4 lea edx,[local.3] 00457C8B |. 8B83 D4020000 mov eax,dword ptr ds:[ebx+0x2D4] 00457C91 |. E8 B2B6FCFF call CKme.00423348 ; 將輸入Name存到內存中,Name是serial的一部分 00457C96 |. FF75 F4 push [local.3] 00457C99 |. 8D83 18030000 lea eax,dword ptr ds:[ebx+0x318] 00457C9F |. BA 04000000 mov edx,0x4 00457CA4 |. E8 93BFFAFF call CKme.00403C3C ; 用上面4個部分,生成serial 00457CA9 |. 33D2 xor edx,edx
這樣就生成了serial了,[ebx+0x310]和[ebx+0x314]的內容又是從哪里來呢?剛好往上翻一翻就是了:


00457BD0 . 53 push ebx 00457BD1 . 8BD8 mov ebx,eax 00457BD3 . 8D83 10030000 lea eax,dword ptr ds:[ebx+0x310] ; 保存到內存的位置 00457BD9 . BA 187C4500 mov edx,CKme.00457C18 ; 黑頭Sun Bird 00457BDE . E8 6DBDFAFF call CKme.00403950 00457BE3 . 8D83 14030000 lea eax,dword ptr ds:[ebx+0x314] ; 保存到內存的位置 00457BE9 . BA 307C4500 mov edx,CKme.00457C30 ; dseloffc-012-OK 00457BEE . E8 5DBDFAFF call CKme.00403950 00457BF3 . B2 01 mov dl,0x1 00457BF5 . 8B83 E4020000 mov eax,dword ptr ds:[ebx+0x2E4] 00457BFB . E8 60B6FCFF call CKme.00423260 00457C00 . B2 01 mov dl,0x1 00457C02 . 8B83 F0020000 mov eax,dword ptr ds:[ebx+0x2F0] 00457C08 . E8 53B6FCFF call CKme.00423260 00457C0D . 5B pop ebx 00457C0E . C3 retn


于是得到:

設:

用戶名長度為 L

L = L + 5

用戶名為N

得:

serial = 黑頭Sun Bird + L + dseloffc-012-OK+N

其中“+”是連接符號,這里只是方便觀察用戶名和serial的關系


用戶名:goodname

serial: 黑頭Sun Bird13dseloffc-012-OKgoodname



可能是環境原因,如果輸入完正確的srial后馬上點3下圖片會顯示成功,如果等待一段時間后再點3下是不能正常顯示的,須在輸入驗證碼的輸入框中按下回車,再點3下圖片才能正常顯示。

總結

以上是生活随笔為你收集整理的160 - 4 ajj.1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。