當前位置:成語大全網 - 書法字典 - 想知道動態鍵盤加密技術的新版本QQ是什麽?

想知道動態鍵盤加密技術的新版本QQ是什麽?

這裏解釋壹下QQ本地存儲的密碼文件的算法。推薦妳看看。附近有源碼,是MD5循環加密。。。

文本:

QQ 2005賀歲版登錄密碼加密算法及其源代碼

賓尼(賓尼@vip.163.com)

2005年拿到QQ的新年版後,發現其加密原理沒有新的變化。經過跟蹤分析,我制定了壹個程序,暴力破解本地QQ密碼。

QQ密碼正確登錄後,加密結果將保存在用戶目錄的ewh.db文件中。加密采用公開的MD5算法,加密結果將經過n次循環和異或後求逆最終計算出來。與用戶的ewh.db文件中的密文進行比對後,會發出“輸入的密碼與上次成功登錄的密碼不壹致。$0A是否經過服務器驗證?”(此消息在BasicCtrlDll.dll的資源中,$0A是C格式的回車)。根據這個提示,完成本地QQ密碼的暴力破解。

在QQ系統中,“QD”符號代表QQ數據。例如,我們可以在User.db或ewh.db文件中找到以QD開頭的數據結構

壹、ewh.db原始數據

51 44 01 01 03 00 04 03 00 BD AF A8 04 00 00 00

00 2E 06 00 07 03 00 B9 AB B4 65438

B7 2B BD 2D 34 4A 04 03

B2 04 00 00 00 3C A8 93 06

其中,紅色為AST周期數,藍色為EWH加密串,綠色為UIN QQ號(110340156 = 0x 00693 a83c,在Intel系統內存中的順序為3CA89306)。

二、ewh.db數據結構

十六進制

偏移DEC

偏移數據註釋變量

符號

0000 1 51 44 QD,QQ數據數據標誌。

0002 3 01 01保留數據結構保留

000450300數據段總數

0006 7 04第壹個數據段(稱為1S,下同)的類型範圍可以是0x001到0x0F,04表示這個數據沒有加密。1S型

長度0007 8 03 00 1S標誌。LenFlag1S

0009 10 BD AF A8 1S標誌(如AST、UIN、EWH等。)都是經過簡單的異或和求逆運算處理的,這裏是AST,可能是算法移位次數,也可能是Axxx開關次數,隨便啦!標誌1S

000c 13 04 00 00 1s數據長度LenData1S。

0010 17 00 2E

= (404992) 1S數據,這裏是MD5轉換的次數。

這個數據與計算機的性能有關。電腦性能越高,QQ註冊成功後產生的循環控制變量越大。數據1S

0014 21 07 2S數據類型,07代表用MD5加密的2S類型。

長度0015 22 03 00 2S logo lenflag 2S

0017 24 B9 AB B4 2S logo,這裏是EWH,說明這個數據段是EWH密碼數據,可能是Flag2S的縮寫,用Hash加密。

001A 27 10 00 00 2S數據長度LenData2S

001E 31 07 22 AA 96

56 19 A3 9E

82 19 B7 2B

BD 2D 34 4A 2S數據是MD5加密計算後生成的,當然還要經過異或和求反計算。請參考下面程序中的1000B858行代碼。數據2S

002E 47 04 3S數據類型3S的類型

長度002F 48 03 00 3S logo LenFlag3S

0031 50 A9 B5 B2 3S標誌,其中是UIN,說明這個數據段是壹個QQ號,可能是用戶識別號的縮寫。

0034 53 04 00 00 00 3S數據長度LenData3S

0038 57 3C A8 93 06 3S數據,3ca 893 06 = 110340156數據3S。

第三,加密原理

VB偽代碼的以下符號引自上面第二點“結構描述”中的變量標記,請註意理解:

Pwd = MD5(Pwd,Len(Pwd))

Pwd是用戶輸入的密碼。在第壹個MD5之後,Pwd變成壹個長度為16字節的MD5字符串。

XorKey As Long = 0 'XorKey是用於解密的字節。

對於k = 1 todata 1s–1 '因為之前已經做了壹輪,所以這裏需要減壹。

密碼= MD5(密碼,16)

下壹個k

XorKey = XorKey And & ampHFFFF

xor key =(LenData2S And & amp;HFF)異或(LenData2S \ 256)

XorKey = & ampHFF-肖爾基反演

對於k = 1到16

Pwd(k) = Pwd(k) Xor XorKey

下壹個k

如果Pwd & lt& gt那麽數據2

MsgBox "輸入的密碼與上次成功登錄的密碼不壹致。&;vbcrlf & amp“要不要去服務器驗證?”

如果…就會結束

通過以上過程,我真的很佩服QQ的設計者。如此巨大的循環量和循環次數的隨機性,不可能產生壹個QQ MD5字典。理論上可以生成壹個MD5字典,但是這個字典會是1.15E+77*16字節,所以要根據ewh.db文件提供的數據進行暴力破解。不知道有沒有更好的辦法?

但是,我的感覺是,更多的循環應該導致更多的MD5沖突,這不壹定是壹件好事。

還有壹個破解思路,可能更直接,後面的文章會詳細討論。但是在我有時間完成實驗之前,我是沒有資格評論的,這已經超出了本文的範圍。

第四,破解算法

重復幾十萬次的MD5加密會消耗大量的電腦時間。如果使用傳統的VB或者VC,等待壹個密碼的時間也是相當可觀的(比如使用VB代碼,所消耗的時間可能是匯編的400倍)。所以我用匯編語言編譯底層加解密算法,通過MASM32編譯連接,最後用高級語言調用。通過提供算法的動態庫,方便其他感興趣的讀者自己添加豐富的函數。比如添加多線程等。,這也將在以後的討論中實現。這裏就不深入討論了。

附上的例子是VB和VC調用匯編語言動態庫的例子。VB代碼通過密碼字典簡單實現單線程破解的功能,讀者可以豐富其內容。添加更多功能。

動詞 (verb的縮寫)QQ數據結構分析

下面是動態庫BasicCtrlDll.dll中的反匯編代碼和代碼分析,主要用於分析EWH中的數據結構。DB和QQ數據解調算法。此外,這個算法還可以從User.db中提取數據,經過進壹步研究,做壹個聊天記錄查看器等軟件並不難。

1000 b 71D B8 AC 160110 mov eax,basic CTR . 1001116AC

1000B722 E8 89460000呼叫基礎

1000 b727 83EC 3C 3C分公司esp

1000b72a8b45 08moveax,dword ptrss: [EBP+8]將數據的起始地址賦給eax,實際數據是**Data,EAX=*Data。

1000B72D 53推送ebx

1000B72E 56推送esi

1000B72F 57推送edi

1000b730b30movesi,dword ptrds: [EAX]要轉換的字符串,其中EAX表示壹個結構,第壹個成員是實際的數據指針。

1000 b732 894 D8 mov dword ptrss:[ebp-28],ECX局部變量[ebp-28]保存全局標誌結構,ECX是全局參數地址,調用此函數時遵循。

1000B7358B46F8 MOVEAX,DWORD PTR DS: [ESI-8]是CString結構中length的成員,表示總共有多少字節* * *。

1000B738 83F8 06 cmp eax,6如果長度小於6,則為無效數據。

1000 b 73 b 0 f 82 81020000 JB基本CTR.1000b9c2如果小於6,跳出,說明數據量解調不夠。

1000 b 741 803 e 51 CMP字節ptr ds: [ESI],51是否為QQ數據,QD是否為QQ數據標誌。

1000 b744 0f 85 78020000 jnz basic CTR . 1000 b9c 2

1000 b74a 807 e 01 44 CMP字節ptr ds:[esi+1],44

1000 b74e 0f 85 6e 020000 jnz basic CTR . 1000 b9c 2

1000B754 66: 8B7E04movdi,wordptrds: [ESI+4]對於EWH,是第4個+1字節,也就是0003。

1000b758 83c604addiesi,4個數據段的個數。

1000B75B 46 inc esi

1000B75C583C0FA ADEAX,-6EAX去掉6個字節,剩下36H字節給EWH。

1000B75F 46 inc esi

1000 b760 8945 08 movdword ptrs:[EBP+8],EAX指向第壹個數據段。

1000 b 763 e8ce 050000 Call Basic CTR . 1000 BD 36在內存(ECX+9C)中打開壹個(100H)字節的空間,空間地址返回EAX。

1000b768 8365e00和dword ptrs:[ebp-20],0局部變量[ebp-20]被清除。

1000b76c0fb7c7movzx EAX,di換算成EAX,對於EWH,di=3。表示有三段數據。

1000B76F 85C0測試eax,eax

1000 b 771 8945 b 8 movdword ptrss:[ebp-48],EAX局部變量[ebp-48]存儲數據的段數。

1000 b774 0F8E 21020000 jle basic CTR . 1000 b99b

1000 b77a 837d 0807 CMP DWORD PTRS:【EBP+8】,7如果整個長度小於7,其余的應該是QQ號。第壹個條目=36H

1000B77E0F823E020000JB基本中心。1000B9C2如果剩余數據長度小於7,則退出。

1000b7848a06moval,byte ptr ds: [ESI]第壹次輸入時,ESI指向第七個數據,即數據段的類型,例如04。

1000 b786 66:8b4e 01 mov CX,wordptrds: [ESI+1] CX =最後壹個數據,以及數據段標誌的長度,例如0003。

1000B78A 46 inc esi

1000B78B8B55 08movedx,dword ptrs:[EBP+8]剩余數據長度,比如36H。

1000 b78e 836d 0803 subdword ptrss:[EBP+8],3刪除三個,比如就變成33H=51。

1000 B792 894 DC 8 mov dword ptrs:[ebp-38],ECX局部變量[ebp-38]存儲數據段中標誌的長度。

1000 B795 0FB7F9 MOVZX EDI,CX EDI是符號長度。

1000B798 46 inc esi

1000 b799 8845 E4 mov byte ptrs:[ebp-1C],而al局部變量[ebp-1C]保存的就是這段的類型。

1000B79C8D4F04LEA ECX,DWORD PTR DS: [EDI+4] ECX是獲得的標記長度加4,例如=7。

1000B79F 46 inc esi第壹次,esi指向第壹個數據段的flag字段,比如BDAFA8,第九個數據開始。

1000 b7a 0 394d 08 cmpdword ptrss:【EBP+8】,ECX如果剩余數據小於“標誌長度+4”,則沒有數據,不做處理。

1000 b7a 3 0f 82 19020000 JB basic CTR . 1000 b9c 2

1000b7a9 8b0c37movECX,dword ptrds: [EDI+ESI]跳過數據段的標誌部分,將數據段的長度賦給ECX。例如,[edi+esi]=4。

1000 b 7 AC 8d 1 c 37 lea ebx,dword ptrds: [EDI+ESI] ebx保存壹個指向數據段中數據部分長度的新指針,例如,[EBX]=4。

1000 b7af 895d c4mov dword ptrss:[ebp-3C],EBX局部變量[ebp-3C]保存數據段中數據部分的長度指針。

1000b7b28d4c0f07Leaecx,dword ptrds: [EDI+ecx+7]從標誌開始(自身長度為3,加上4個長度位=7),加上數據長度,就是完整的數據長度。例如

1000B7B6 3BCA cmp ecx,edx如果剩余數據長度(如36H)不夠,退出。

1000 b7b 8 894d ccmov dword ptrs:[ebp-34],ECX局部變量[ebp-34]保存這個數據段的總長度。

1000 b7bb 0 f 87 01020000 ja基本CTR.1000B9C2如果小於,退出程序。

1000b7c1 8365f00和dword ptrs:[ebp-10],0局部變量[ebp-10]被清除。

1000b7c53c01cmpal,1al保存此段的類型,有效類型為4或7。

1000 b7c 7 74 18 je short basic CTR . 1000 b7e 1

1000B7C9 3C 02

1000 b7cb 74 14 je short basic CTR . 1000 b7e 1

1000B7CD 3C 03

1000 b7cf 74 10 je short basic CTR . 1000 b7e 1

1000B7D1 3C 04 cmp al,4

1000 b7d 3 74 0C je short basic CTR . 1000 b7e 1

1000B7D5 3C 05 cmp al,5

1000 b7d 7 74 08 je short basic CTR . 1000 b7e 1

1000B7D9 3C 07 cmp al,7

1000 b7db 74 04 je short basic CTR . 1000 b7e 1

1000B7DD 3C 06 cmp al,6

1000B7DF 75 19 jnz短基線tr.1000B7FA

1000 b7e 1 51 push ecx是該段的總長度,包括(段類型+標誌長度+標誌+數據長度+數據),例如對於密碼段=1AH。

1000B7E2 E8 23430000電話& ltMFC42.operator new & gt

1000 b 7 e 7 ff 75 cc push dword ptrs:[ebp-34]n =[ebp-34],局部變量[EBP-34]保存這個數據段的總長度。

1000b7ea8d4e fdlea ecx,dword ptrds: [ESI-3] [ESI-3]指向本段開頭(從段類型算起)。

1000 b7ed 8945 f 0 mov dword ptrss:[ebp-10],EAX局部變量[ebp-10]保存復制的數據。

1000B7F0 51推送ecx src

1000B7F1 50推送eax目的地

1000B7F2 E8 E5450000電話& ltMSVCRT.memcpy & gtMemcpy,將這壹段的全部數據復制到壹個新的地方,並將數據指針保存在局部變量[ebp-10]中。

1000B7F7 83C4 10添加esp,10

1000b7FA8B45c8moveax,dword ptrss: [ebp-38]局部變量[ebp-38]保存數據段中標誌的長度。

1000B7FD 33C9 xor ecx,ecx

1000B7FF 32C4 xor al,ah用高位異或低位的長度,例如3 xor 0=3。

1000b801 85ft測試EDI,EDI是EDI標誌位的長度。

1000 b 803 76 12 jbe short basic CTR . 1000 b 817如果本段沒有段標誌,跳過。

1000 b 8058 a 1431 movdl,byteptrds: [ecx+ESI]開始循環,循環次數為標記長度。ECX第壹次為0,第壹個數據加載到DL中。

1000B808 32D0 xor dl,al AL是長度的高低位的xor,其中為3。

1000 b 80 af 6d 2 not dl dl = not([data]xor[數據段標誌長度高位xor數據段標誌長度低位])

1000 b 80 c 81431 mov byte ptrds:[ecx+ESI],DL數據保存在原內存中相應的地方。

1000B80F 41 inc ecx

1000B810 3BCF cmp ecx,edi

1000 b 812 72 f 1 JB短基線

1000b814b5d4mov ebx,dword ptrss: [ebp-3C]局部變量[ebp-3C]保存數據段中數據部分的長度指針。

1000b81757推送EDI是標誌位的長度。

1000b81856推送ESI ESI指的是解密後的數據,比如AST。

1000 b 8198d 4 E8 leaecx,dword ptrss: [ebp-18]局部變量[ebp-18]存儲強制類型轉換後的數據指針的指針,如AST。

1000B81C E8 5B430000電話& ltMFC42。CString::CString & gt;將解密的數據更改為CString類型。返回的類型放在EAX指定的地址中。

1000b821 8365fc00和dword ptrs:[ebp-4],0局部變量[ebp-4]被清除。

1000B825 6A FC push -4

1000B827 58流行eax EAX=-4=FFFFFFFC

1000b828 8BF3movesi,EBX EBX保存數據段中數據部分的長度指針。

1000B82A 2BC7 sub eax,EDI EAX = EAX-EDI = FFFFFFFC-3 = fffffff 9

1000b82c8b1emov ebx,dword ptrds: [ESI] ebx是數據段中數據部分的長度。

1000 b82e 014508添加dword ptrs:[EBP+8],第壹次EAX,[EBP+8]=33。執行後=2C,相當於33H-7H=2CH。

1000 b 831 83c 604 addiesi,4esi指向數據段中的數據部分。

1000 b834 395d 08 CMP dword ptr ss:[ebp+8],ebx [ebp+8]=2C,ebx=4

1000 b837 0F82 6a 010000 JB基礎目錄1000B9A7

1000 b 83d 807 de 407 CMP byte ptrss:[ebp-1C],7個局部變量[ebp-1C]存儲這段的類型,4或7。

1000B841 74 06 je短基線tr 1000 b 849

1000b843 807de406cmp字節ptrs:[EBP-1c],6如果類型不是6,執行1000B862。

1000B847 75 19 jnz短基線tr.1000B862

1000B849 8AC3 mov al,bl如果數據段類型為7,則執行此語句。BL包含這壹段的長度。

1000B84B 33FF異或edi,edi

1000B84D 32C7 xor al,bh al=(長度的低位和xor長度的高位)

1000B84F 85DB測試ebx,ebx

1000 b 851 760 f jbe short basic CTR . 1000 b 862如果長度為0,則表示沒有密碼。

1000B853 8A0C37 mov cl,字節指針ds:[edi+esi]

1000B856 32C8 xor cl,al

1000 b 858 f6d 1 NOT CLDL = NOT([data]xor[數據段標誌長度高位xor數據段標誌長度低位])

1000B85A 880C37 mov字節ptr ds:[edi+esi],cl

1000B85D 47 inc edi

1000B85E 3BFB cmp edi,ebx

1000b860 72f1JB短基本CTR.1000b853循環,直到所有數據解調完畢。

1000B862 53 push ebx數據串的長度

1000B863 56推送要轉換的esi原始數據

1000b864 8d4dec lea ecx,dword ptrss: [ebp-14]局部變量[ebp-14]存儲強制CString類型轉換後的數據指針的指針,例如DB2E0600。

1000B867 E8 10430000電話& ltMFC42。CString::CString & gt;

1000b86c8a45e4moval,byte ptrss: [ebp-1C]局部變量[ebp-1C]存儲這段的類型,4或7。

1000 b 86 f 295d 08 subdword ptrss:[EBP+8],ebx刪除處理後的數據,執行後[ebp+8]=28H,EBX為數據段中數據部分的長度。

1000b87203f3addiesi,ebxesi指向下壹個數據段的開頭,ebx保存數據段中數據部分的長度指針。

1000B874 33FF異或edi,edi

1000B876 84C0測試al,al測試該段類型是否為0。

1000 b 878 c 645 fc 01 mov字節ptrs:[ebp-4],1局部布爾變量[ebp-4]=1。

1000 b 87 c 0 f 86 a 3010000 jbe基本CTR.1000BA25如果該段的數據類型為0,則執行1000BA25並退出。

1000B882 3C 07 cmp al,7

1000B8840F86B 6000000JBE基本CTR.1000B940如果小於等於7,跳轉到1000B940執行。EWH到此為止

1000B88A 3C 08 cmp al,8

1000 b 88 c 0 f 84 7401000 je基本CTR.1000ba06如果數據類型為8,直接退出。

1000B892 3C 09 cmp al,9

1000 b894 74 5D je short basic tr . 1000 b8f 3

1000B896 3C 0A cmp al,0A

1000 b898 0f 85 87010000 jnz basic CTR . 1000 ba25

1000b89E8B4D8movecx,dword ptrss: [EBP-28]當數據類型為A時,執行這個程序代碼。

1000B8A1 8D45 D4利埃克斯,dword ptr ss:[ebp-2C]

1000B8A4 50推eax

1000 b8 a5 E8 47 feffff call basic CTR . 1000 b6f 1

1000B8AA 8B45 D4 mov eax,dword ptr ss:[ebp-2C]

1000 b8ad FF75 EC push dword ptr ss:[ebp-14]

1000B8B0 8B08 mov ecx,dword ptr ds:[eax]

1000B8B2 53推送ebx

1000B8B3 50推eax

1000 b8 B4 ff 91 BC 000000呼叫dword ptr ds:[ecx+BC]

1000B8BA 8BD8 mov ebx,eax

1000B8BC 85DB測試ebx,ebx

1000 b8be 0f 85 12010000 jnz basic CTR . 1000 b9d 6

1000B8C4 8B45 D4 mov eax,dword ptr ss:[ebp-2C]

1000B8C7 6A 04推送4

1000 b8c 9 8945 DC mov dword ptr ss:[ebp-24],eax

1000B8CC 8D45 DC利埃克斯,雙字ptr ss:[ebp-24]

1000B8CF 50推送eax

1000B8D0 8D4D C0利埃克斯,雙字ptr ss:[ebp-40]

1000B8D3 E8 A4420000電話& ltMFC42。CString::CString & gt;

1000B8D8 50推送eax

1000B8D9 8D4D EC lea ecx,dword ptr ss:[ebp-14]

1000B8DC C645 FC 03 mov字節ptr ss:[ebp-4],3

1000B8E0 E8 C3400000電話& ltMFC42。CString::operator = & gt;

1000 b8e 5 C645 FC 01 mov字節ptr ss:[ebp-4],1

1000B8E9 8D4D C0利埃克斯,雙字ptr ss:[ebp-40]

1000B8EC E8 AB400000電話& ltMFC42。CString::~ CString & gt;

1000B8F1 EB 50 jmp短基Ctr.1000B943

1000b8f3b4d8movecx,dword ptrss: [EBP-28]當數據類型為9時執行此操作。

1000B8F6 8D45 D0 lea eax,dword ptr ss:[ebp-30]

1000B8F9 50推eax

1000B8FA E8 4E180000呼叫基礎中心1000D14D

1000B8FF 8B45 D0 mov eax,dword ptr ss:[ebp-30]

1000 b902 FF75 EC push dword ptr ss:[ebp-14]

1000B905 8B08 mov ecx,dword ptr ds:[eax]

1000B907 53推送ebx

1000B908 50推送eax

1000B909 FF51 78呼叫dword ptr ds:[ecx+78]

1000B90C 8BD8 mov ebx,eax

1000B90E 85DB測試ebx,ebx

1000 b 910 0f 85d 4000000 jnz basic CTR . 1000 b9ea

1000 b 916 8b 45 D0 mov eax,dword ptr ss:[ebp-30]

1000B919 6A 04推送4

1000 b 91B 8945 DC mov dword ptr ss:[ebp-24],eax

1000B91E 8D45 DC利埃克斯,dword ptr ss:[ebp-24]

1000B921 50推送eax

1000B922 8D4D BC lea ecx,dword ptr ss:[ebp-44]

1000B925 E8 52420000電話& ltMFC42。CString::CString & gt;

1000B92A 50推eax

1000B92B 8D4D EC lea ecx,dword ptr ss:[ebp-14]

1000B92E C645 FC 02 mov字節ptr ss:[ebp-4],2

1000B932 E8 71400000電話& ltMFC42。CString::operator = & gt;

1000 b937 C645 FC 01 mov字節ptr ss:[ebp-4],1

1000B93B 8D4D BC lea ecx,dword ptr ss:[ebp-44]

1000 b93e EB AC jmp short basic CTR . 1000 b8ec

1000 b 9406 a 01 push 1時的數據段類型

1000B942 5F pop edi

1000b943 8B5D8movebx,dword ptrss: [ebp-28]局部變量[ebp-28]持有全局標誌結構。

1000b9468d45ec leaeax,dword ptrss: [ebp-14]局部變量[ebp-14]存儲強制類型轉換後的數據指針的指針,例如DB2E0600。

1000b949 50pusheax在強制類型轉換後存儲數據指針。

1000b94a8d45ee8leaeax,dword ptrss: [ebp-18]局部變量[ebp-18]存儲強制類型轉換後的數據指針的指針,如AST。

1000 b 94 dff 75 e 4 push dword ptrss:[ebp-1C]局部變量[ebp-1C]中的第壹個字節保存的是本段的類型,4或7。

1000B950 8BCB mov ecx,ebx

1000B952 50推送eax

1000B953 E8 B4FCFFFF調用BasicCtr.1000B60C調用1000B60C(CString,Flag,CString)

1000B958 85FF測試電子數據交換

1000B95A 74 18 je短基

1000b95c8b45e0emovax,dword ptrss: [EBP-20]局部變量[ebp-28]第壹次為0,是壹個計數器。

1000b95f8b4b64movecx,dword ptrds: [ebx+64]存在於標誌結構中,是壹個全局地址。

1000B9628B55F0MOVEDX,DWORD PTRSS: [ebp-10]局部變量[ebp-10]保存復制的數據,也就是沒有經過處理。比如040300BDAF……...

EAX 2號SHL eax 1 E0 02 = EAX * 2

1000 b968 891401 movdword ptrds:【ECX+EAX】,EDX將未解調的原始數據放入全局結構中指針指示的內存中。

1000b96b8b4b78movecx,dword ptrds: [ebx+78]存在於標誌結構中,是壹個全局地址。

1000b96E8B55ccmovedx,dword ptrss: [ebp-34]局部變量[ebp-34]保存這個數據段的總長度。

1000 b 971891401 movdword ptrds:[ECX+EAX],EDX將數據長度放入全局結構中指針指示的內存中。

1000b974 8065fc00和byteptrss: [ebp-4],0局部布爾變量[ebp-4]=0。

1000B978 8D4D EC lea ecx,dword ptr ss:[ebp-14]

1000B97B E8 1C400000電話& ltMFC42。CString::~ CString & gt;清除數據段中的數據部分CString。

1000b980834d fcff或dword ptrs:[EBP-4],ffffffff局部布爾變量[ebp-4]=-1,哪個是真的。

1000B984 8D4D E8 lea ecx,dword ptr ss:[ebp-18]

1000B987 E8 10400000電話& ltMFC42。CString::~ CString & gt;清除數據段中的標誌部分CString,如AST。

1000 b 98 CFF 45 e 0 incdword ptrss:[EBP-20]局部變量[ebp-28]計數器加壹。

1000B98F 8B45 E0 mov eax,dword ptr ss:[ebp-20]

1000b992b45b8cmepeax,dword ptrss: [ebp-48]局部變量[ebp-48]存儲數據的段數。

1000 b 9950 f8c dffdffffjl basic CTR . 1000 b77a循環解調每個數據段。

1000b99b8b45 08moveax,dword ptrss: [EBP+8]最後剩余長度。

1000B99E F7D8 neg eax

1000B9A0 1BC0 sbb eax,eax

1000B9A2 83E0 04和eax,4

1000 B9 a5 EB 1E jmp short basic CTR . 1000 B9 C5

1000 b9a 7 837d F0 00 CMP dword ptr ss:[ebp-10],0

1000B9AB 74 09 je短基線tr.1000B9B6

1000 b9ad FF75 F0 push dword ptr ss:[ebp-10]

1000B9B0 E8 FF3F0000電話& ltMFC42.operator delete & gt

1000B9B5 59 pop ecx

1000B9B6 834D FC FF或dword ptr ss:[ebp-4],FFFFFFFF

1000B9BA 8D4D E8 lea ecx,dword ptr ss:[ebp-18]

1000B9BD E8 DA3F0000電話& ltMFC42。CString::~ CString & gt;

1000B9C2 6A 04推送4

1000B9C4 58 pop eax

1000B9C5 8B4D F4 mov ecx,dword ptr ss:[ebp-C]

1000B9C8 5F pop edi

1000B9C9 5E pop esi

1000B9CA 5B pop ebx

1000 b9cb 64:890d 000000 mov dword ptr fs:[0],ecx

1000B9D2 C9離開

1000B9D3 C2 0400返回4

1000 b9d 6 837d F0 00 CMP dword ptr ss:[ebp-10],0

1000B9DA 74 09 je短基線tr.1000B9E5

1000 b9dc FF75 F0 push dword ptr ss:[ebp-10]

1000B9DF E8 D03F0000電話& ltMFC42.operator delete & gt

1000B9E4 59 pop ecx

1000B9E5 8B45 D4 mov eax,dword ptr ss:[ebp-2C]

1000B9E8 EB 12 jmp短基Ctr.1000B9FC

1000 b9ea 837d F0 00 CMP dword ptr ss:[ebp-10],0

1000B9EE 74 09 je短基線tr.1000B9F9

1000 b9f 0 FF75 F0 push dword ptr ss:[ebp-10]

1000B9F3 E8 BC3F0000電話& ltMFC42.operator delete & gt

1000B9F8 59 pop ecx

1000B9F9 8B45 D0 mov eax,dword ptr ss:[ebp-30]

1000B9FC 8B08 mov ecx,dword ptr ds:[eax]

1000B9FE 50推eax

1000B9FF FF51 08呼叫dword ptr ds:[ecx+8]

1000BA02 8BF3 mov esi,ebx

1000BA04 EB 03 jmp短基線tr.1000BA09

1000BA06 6A 04推送4

1000BA08 5E pop esi

1000BA09 8065 FC 00和字節指針ss:[ebp-4],0