xor eax, ebp的问题

本文探讨了一段汇编代码中出现的xoreax, ebp指令,该指令用于将eax寄存器与ebp寄存器进行按位异或运算。这种操作常用于汇编语言编程中的一些特定场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码:

004011B0   $  55            push ebp
004011B1   .  8BEC          mov ebp,esp
004011B3   .  81EC 28070000 sub esp,0x728
004011B9   .  A1 BCA04000   mov eax,dword ptr ds:[0x40A0BC]
004011BE   .  33C5          xor eax,ebp                                              这里不理解
004011C0   .  8945 F8       mov dword ptr ss:[ebp-0x8],eax

一个函数开头的部分,不理解xor eax,ebp 这一句是在做什么?

00D1FCCA | 8B1A | MOV EBX,DWORD PTR DS:[EDX] | 8 00D1FCCC | 3BDA | CMP EBX,EDX | 00D1FCCE | 8DB7 7C280000 | LEA ESI,DWORD PTR DS:[EDI+0x287C] | esi:&"`拔", [edi+287C]:L"怀"" 00D1FCD4 | 75 06 | JNE game.D1FCDC | 00D1FCD6 | FF15 742B1801 | CALL DWORD PTR DS:[0x1182B74] | 00D1FCDC | 8B43 08 | MOV EAX,DWORD PTR DS:[EBX+0x8] | 7 00D1FCDF | 8BCE | MOV ECX,ESI | ecx:&"`拔", esi:&"`拔" 00D1FCE1 | 8987 88280000 | MOV DWORD PTR DS:[EDI+0x2888],EAX | 6 00D1FCE7 | C787 8C280000 00000000 | MOV DWORD PTR DS:[EDI+0x288C],0x0 | 00D1FCF1 | E8 7AF0FFFF | CALL game.D1ED70 | 00D1FCF6 | 83BF 84280000 00 | CMP DWORD PTR DS:[EDI+0x2884],0x0 | 00D1FCFD | 0F84 E7000000 | JE game.D1FDEA | 00D1FD03 | 8B8F 80280000 | MOV ECX,DWORD PTR DS:[EDI+0x2880] | ecx:&"`拔" 00D1FD09 | 8B31 | MOV ESI,DWORD PTR DS:[ECX] | esi:&"`拔", [ecx]:"`拔"" 00D1FD0B | 3BF1 | CMP ESI,ECX | esi:&"`拔", ecx:&"`拔" 00D1FD0D | 8D9F 7C280000 | LEA EBX,DWORD PTR DS:[EDI+0x287C] | [edi+287C]:L"怀" 00D1FD13 | 75 06 | JNE game.D1FD1B | 00D1FD15 | FF15 742B1801 | CALL DWORD PTR DS:[0x1182B74] | 00D1FD1B | 8B76 08 | MOV ESI,DWORD PTR DS:[ESI+0x8] | esi:&"`拔" 00D1FD1E | 8B46 04 | MOV EAX,DWORD PTR DS:[ESI+0x4] | 00D1FD21 | 85C0 | TEST EAX,EAX | 00D1FD23 | 75 04 | JNE game.D1FD29 | 00D1FD25 | 33D2 | XOR EDX,EDX | 00D1FD27 | EB 05 | JMP game.D1FD2E | 00D1FD29 | 8B56 08 | MOV EDX,DWORD PTR DS:[ESI+0x8] | 00D1FD2C | 2BD0 | SUB EDX,EAX | 00D1FD2E | 8B87 88280000 | MOV EAX,DWORD PTR DS:[EDI+0x2888] | 00D1FD34 | 8B48 04 | MOV ECX,DWORD PTR DS:[EAX+0x4] | ecx:&"`拔" 00D1FD37 | 85C9 | TEST ECX,ECX | ecx:&"`拔" 00D1FD39 | 75 04 | JNE game.D1FD3F | 00D1FD3B | 33C0 | XOR EAX,EAX | 00D1FD3D | EB 05 | JMP game.D1FD44 | 00D1FD3F | 8B40 08 | MOV EAX,DWORD PTR DS:[EAX+0x8] | 00D1FD42 | 2BC1 | SUB EAX,ECX | ecx:&"`拔" 00D1FD44 | 03C2 | ADD EAX,EDX | 00D1FD46 | 3D 00040000 | CMP EAX,0x400 | 00D1FD4B | 0F83 99000000 | JAE game.D1FDEA | 00D1FD51 | 8B53 04 | MOV EDX,DWORD PTR DS:[EBX+0x4] | [ebx+04]:DispatchMessageW+4AA 00D1FD54 | 8B02 | MOV EAX,DWORD PTR DS:[EDX] | 00D1FD56 | 50 | PUSH EAX | 00D1FD57 | 53 | PUSH EBX | 00D1FD58 | 8D45 E4 | LEA EAX,DWORD PTR SS:[EBP-0x1C] | 00D1FD5B | 50 | PUSH EAX | 00D1FD5C | 8BCB | MOV ECX,EBX | ecx:&"`拔" 00D1FD5E | E8 5DEFFFFF | CALL game.D1ECC0 | 00D1FD63 | 8B46 08 | MOV EAX,DWORD PTR DS:[ESI+0x8] | 00D1FD66 | 3946 04 | CMP DWORD PTR DS:[ESI+0x4],EAX | 00D1FD69 | 8945 FC | MOV DWORD PTR SS:[EBP-0x4],EAX | [ebp-04]:WindowFromPoint+FC0 00D1FD6C | 76 06 | JBE game.D1FD74 | 00D1FD6E | FF15 742B1801 | CALL DWORD PTR DS:[0x1182B74] | 00D1FD74 | 8B46 04 | MOV EAX,DWORD PTR DS:[ESI+0x4] | 00D1FD77 | 3B46 08 | CMP EAX,DWORD PTR DS:[ESI+0x8] | 00D1FD7A | 8945 F8 | MOV DWORD PTR SS:[EBP-0x8],EAX | 00D1FD7D | 76 06 | JBE game.D1FD85 | 00D1FD7F | FF15 742B1801 | CALL DWORD PTR DS:[0x1182B74] | 00D1FD85 | 8B9F 88280000 | MOV EBX,DWORD PTR DS:[EDI+0x2888] | 00D1FD8B | 8B43 08 | MOV EAX,DWORD PTR DS:[EBX+0x8] | 00D1FD8E | 3943 04 | CMP DWORD PTR DS:[EBX+0x4],EAX | [ebx+04]:DispatchMessageW+4AA 00D1FD91 | 8945 08 | MOV DWORD PTR SS:[EBP+0x8],EAX | 00D1FD94 | 76 09 | JBE game.D1FD9F | 00D1FD96 | FF15 742B1801 | CALL DWORD PTR DS:[0x1182B74] | 00D1FD9C | 8B45 08 | MOV EAX,DWORD PTR SS:[EBP+0x8] | 00D1FD9F | 8B4D 08 | MOV ECX,DWORD PTR SS:[EBP+0x8] | 00D1FDA2 | 8B55 FC | MOV EDX,DWORD PTR SS:[EBP-0x4] | [ebp-04]:WindowFromPoint+FC0 00D1FDA5 | 51 | PUSH ECX | ecx:&"`拔" 00D1FDA6 | 8B4D F8 | MOV ECX,DWORD PTR SS:[EBP-0x8] | 00D1FDA9 | 52 | PUSH EDX | 00D1FDAA | 56 | PUSH ESI | esi:&"`拔" 00D1FDAB | 51 | PUSH ECX | ecx:&"`拔" 00D1FDAC | 8B8F 88280000 | MOV ECX,DWORD PTR DS:[EDI+0x2888] | ecx:&"`拔" 00D1FDB2 | 56 | PUSH ESI | esi:&"`拔" 00D1FDB3 | 50 | PUSH EAX | 00D1FDB4 | 53 | PUSH EBX | 00D1FDB5 | E8 26FCFFFF | CALL game.D1F9E0 | 00D1FDBA | 8B46 04 | MOV EAX,DWORD PTR DS:[ESI+0x4] | 00D1FDBD | 33DB | XOR EBX,EBX | 00D1FDBF | 3BC3 | CMP EAX,EBX | 00D1FDC1 | 74 09 | JE game.D1FDCC | 00D1FDC3 | 50 | PUSH EAX | 00D1FDC4 | E8 A7BE6FFF | CALL game.41BC70 | 00D1FDC9 | 83C4 04 | ADD ESP,0x4 | 00D1FDCC | 56 | PUSH ESI | esi:&"`拔" 00D1FDCD | 895E 04 | MOV DWORD PTR DS:[ESI+0x4],EBX | 00D1FDD0 | 895E 08 | MOV DWORD PTR DS:[ESI+0x8],EBX | 00D1FDD3 | 895E 0C | MOV DWORD PTR DS:[ESI+0xC],EBX | 00D1FDD6 | E8 95BE6FFF | CALL game.41BC70 | 00D1FDDB | 83C4 04 | ADD ESP,0x4 | 00D1FDDE | 399F 84280000 | CMP DWORD PTR DS:[EDI+0x2884],EBX | 00D1FDE4 | 0F85 19FFFFFF | JNE game.D1FD03 | 00D1FDEA | 8B9F 88280000 | MOV EBX,DWORD PTR DS:[EDI+0x2888] | 5 00D1FDF0 | 8B73 04 | MOV ESI,DWORD PTR DS:[EBX+0x4] | 4 00D1FDF3 | 3B73 08 | CMP ESI,DWORD PTR DS:[EBX+0x8] | esi:&"`拔" 00D1FDF6 | 76 09 | JBE game.D1FE01 | 00D1FDF8 | FF15 742B1801 | CALL DWORD PTR DS:[0x1182B74] | 00D1FDFE | 3B73 08 | CMP ESI,DWORD PTR DS:[EBX+0x8] | esi:&"`拔" 00D1FE01 | 72 06 | JB game.D1FE09 | 00D1FE03 | FF15 742B1801 | CALL DWORD PTR DS:[0x1182B74] | 00D1FE09 | 8B97 8C280000 | MOV EDX,DWORD PTR DS:[EDI+0x288C] | 00D1FE0F | 8D0432 | LEA EAX,DWORD PTR DS:[EDX+ESI] | 3 (edx=0) 00D1FE12 | 8945 F0 | MOV DWORD PTR SS:[EBP-0x10],EAX | 2 00D1FE15 | 8B87 88280000 | MOV EAX,DWORD PTR DS:[EDI+0x2888] | 00D1FE1B | 8B48 04 | MOV ECX,DWORD PTR DS:[EAX+0x4] | ecx:&"`拔" 00D1FE1E | 33DB | XOR EBX,EBX | 00D1FE20 | 3BCB | CMP ECX,EBX | ecx:&"`拔" 00D1FE22 | 75 04 | JNE game.D1FE28 | 00D1FE24 | 33C0 | XOR EAX,EAX | 00D1FE26 | EB 05 | JMP game.D1FE2D | 00D1FE28 | 8B40 08 | MOV EAX,DWORD PTR DS:[EAX+0x8] | 00D1FE2B | 2BC1 | SUB EAX,ECX | ecx:&"`拔" 00D1FE2D | 53 | PUSH EBX | 00D1FE2E | 53 | PUSH EBX | 00D1FE2F | 53 | PUSH EBX | 00D1FE30 | 8D4D F4 | LEA ECX,DWORD PTR SS:[EBP-0xC] | 00D1FE33 | 51 | PUSH ECX | ecx:&"`拔" 00D1FE34 | 2BC2 | SUB EAX,EDX | 00D1FE36 | 6A 01 | PUSH 0x1 | 00D1FE38 | 8D55 EC | LEA EDX,DWORD PTR SS:[EBP-0x14] | 1 00D1FE3B | 8945 EC | MOV DWORD PTR SS:[EBP-0x14],EAX | 00D1FE3E | 8B47 38 | MOV EAX,DWORD PTR DS:[EDI+0x38] | 00D1FE41 | 52 | PUSH EDX | 数据包 00D1FE42 | 50 | PUSH EAX | 00D1FE43 | FF15 98B60A01 | CALL DWORD PTR DS:[<WSASend>] |我追edx参数发现,写的公式错误,你看看怎么错了 edx =[[[edx]+8]+4]
最新发布
08-02
?getFunctionIndirectType@UnDecorator@@CA?AVDName@@ABV2@@Z proc near .text:100F8C1E ; CODE XREF: UnDecorator::getPrimaryDataType(DName const &)+13C↓p .text:100F8C1E ; UnDecorator::getPtrRefType(DName const &,DName const &,char const *)+63↓p .text:100F8C1E .text:100F8C1E var_38 = DName ptr -38h .text:100F8C1E var_30 = DName ptr -30h .text:100F8C1E returnType = DName ptr -28h .text:100F8C1E var_20 = DName ptr -20h .text:100F8C1E rd = DName ptr -18h .text:100F8C1E thisType = DName ptr -10h .text:100F8C1E fitType = DName ptr -8 .text:100F8C1E result = dword ptr 8 .text:100F8C1E superType = dword ptr 0Ch .text:100F8C1E .text:100F8C1E push ebp .text:100F8C1F mov ebp, esp .text:100F8C21 mov ecx, ?gName@UnDecorator@@0PBDB ; char const * const UnDecorator::gName .text:100F8C27 sub esp, 38h .text:100F8C2A mov al, [ecx] .text:100F8C2C test al, al .text:100F8C2E jnz short loc_100F8C48 .text:100F8C30 push [ebp+superType] ; rd .text:100F8C33 push 1 ; st .text:100F8C35 push [ebp+result] ; result .text:100F8C38 call ??H@YA?AVDName@@W4DNameStatus@@ABV0@@Z ; operator+(DNameStatus,DName const &) .text:100F8C3D add esp, 0Ch .text:100F8C40 .text:100F8C40 loc_100F8C40: ; CODE XREF: UnDecorator::getFunctionIndirectType(DName const &)+40↓j .text:100F8C40 mov eax, [ebp+result] .text:100F8C43 jmp loc_100F9023 .text:100F8C48 ; --------------------------------------------------------------------------- .text:100F8C48 .text:100F8C48 loc_100F8C48: ; CODE XREF: UnDecorator::getFunctionIndirectType(DName const &)+10↑j .text:100F8C48 cmp al, 36h ; '6' .text:100F8C4A jl short loc_100F8C50 .text:100F8C4C cmp al, 39h ; '9' .text:100F8C4E jle short loc_100F8C60 .text:100F8C50 .text:100F8C50 loc_100F8C50: ; CODE XREF: UnDecorator::getFunctionIndirectType(DName const &)+2C↑j .text:100F8C50 cmp al, 5Fh ; '_' .text:100F8C52 jz short loc_100F8C60 .text:100F8C54 mov ecx, [ebp+result] ; this .text:100F8C57 push 2 ; st .text:100F8C59 call ??0DName@@QAE@W4DNameStatus@@@Z ; DName::DName(DNameStatus) .text:100F8C5E jmp short loc_100F8C40 .text:100F8C60 ; --------------------------------------------------------------------------- .text:100F8C60 .text:100F8C60 loc_100F8C60: ; CODE XREF: UnDecorator::getFunctionIndirectType(DName const &)+30↑j .text:100F8C60 ; UnDecorator::getFunctionIndirectType(DName const &)+34↑j .text:100F8C60 push ebx .text:100F8C61 movsx ebx, al .text:100F8C64 sub ebx, 36h ; '6' .text:100F8C67 inc ecx .text:100F8C68 mov ?gName@UnDecorator@@0PBDB, ecx ; char const * const UnDecorator::gName .text:100F8C6E cmp ebx, 29h ; ')' .text:100F8C71 jnz short loc_100F8CA2 .text:100F8C73 mov al, [ecx] .text:100F8C75 test al, al .text:100F8C77 jz short loc_100F8C90 .text:100F8C79 movsx ebx, al .text:100F8C7C sub ebx, 3Dh ; '=' .text:100F8C7F inc ecx .text:100F8C80 mov ?gName@UnDecorator@@0PBDB, ecx ; char const * const UnDecorator::gName .text:100F8C86 cmp ebx, 4 .text:100F8C89 jl short loc_100F8CAB .text:100F8C8B cmp ebx, 7 .text:100F8C8E jmp short loc_100F8CA9 .text:100F8C90 ; --------------------------------------------------------------------------- .text:100F8C90 .text:100F8C90 loc_100F8C90: ; CODE XREF: UnDecorator::getFunctionIndirectType(DName const &)+59↑j .text:100F8C90 push [ebp+superType] ; rd .text:100F8C93 push 1 ; st .text:100F8C95 push [ebp+result] ; result .text:100F8C98 call ??H@YA?AVDName@@W4DNameStatus@@ABV0@@Z ; operator+(DNameStatus,DName const &) .text:100F8C9D add esp, 0Ch .text:100F8CA0 jmp short loc_100F8CBD .text:100F8CA2 ; --------------------------------------------------------------------------- .text:100F8CA2 .text:100F8CA2 loc_100F8CA2: ; CODE XREF: UnDecorator::getFunctionIndirectType(DName const &)+53↑j .text:100F8CA2 test ebx, ebx .text:100F8CA4 js short loc_100F8CAB .text:100F8CA6 cmp ebx, 3 .text:100F8CA9 .text:100F8CA9 loc_100F8CA9: ; CODE XREF: UnDecorator::getFunctionIndirectType(DName const &)+70↑j .text:100F8CA9 jle short loc_100F8CAE .text:100F8CAB .text:100F8CAB loc_100F8CAB: ; CODE XREF: UnDecorator::getFunctionIndirectType(DName const &)+6B↑j .text:100F8CAB ; UnDecorator::getFunctionIndirectType(DName const &)+86↑j .text:100F8CAB or ebx, 0FFFFFFFFh .text:100F8CAE .text:100F8CAE loc_100F8CAE: ; CODE XREF: UnDecorator::getFunctionIndirectType(DName const &):loc_100F8CA9↑j .text:100F8CAE cmp ebx, 0FFFFFFFFh .text:100F8CB1 jnz short loc_100F8CC5 .text:100F8CB3 mov ecx, [ebp+result] ; this .text:100F8CB6 push 2 ; st .text:100F8CB8 call ??0DName@@QAE@W4DNameStatus@@@Z ; DName::DName(DNameStatus) .text:100F8CBD .text:100F8CBD loc_100F8CBD: ; CODE XREF: UnDecorator::getFunctionIndirectType(DName const &)+82↑j .text:100F8CBD mov eax, [ebp+result] .text:100F8CC0 jmp loc_100F9022 .text:100F8CC5 ; --------------------------------------------------------------------------- .text:100F8CC5 .text:100F8CC5 loc_100F8CC5: ; CODE XREF: UnDecorator::getFunctionIndirectType(DName const &)+93↑j .text:100F8CC5 and [ebp+thisType.node], 0 .text:100F8CC9 and dword ptr [ebp+thisType._bf_4], 0FFFF0000h .text:100F8CD0 push esi .text:100F8CD1 mov esi, [ebp+superType] .text:100F8CD4 push edi .text:100F8CD5 mov edi, ebx .text:100F8CD7 mov eax, [esi] .text:100F8CD9 mov [ebp+fitType.node], eax .text:100F8CDC mov eax, [esi+4] .text:100F8CDF mov dword ptr [ebp+fitType._bf_4], eax .text:100F8CE2 and edi, 2 .text:100F8CE5 jz loc_100F8DD7 .text:100F8CEB cmp byte ptr [ecx], 40h ; '@' .text:100F8CEE jz loc_100F8D96 .text:100F8CF4 lea eax, [ebp+fitType] .text:100F8CF7 push eax ; rd .text:100F8CF8 lea eax, [ebp+rd] .text:100F8CFB push eax ; result .text:100F8CFC push offset asc_10131938 ; "::" .text:100F8D01 lea ecx, [ebp+var_20] ; this .text:100F8D04 call ??0DName@@QAE@PBD@Z ; DName::DName(char const *) .text:100F8D09 mov ecx, eax ; this .text:100F8D0B call ??HDName@@QBE?AV0@ABV0@@Z ; DName::operator+(DName const &) .text:100F8D10 mov eax, [ebp+rd.node] .text:100F8D13 mov [ebp+fitType.node], eax .text:100F8D16 mov eax, dword ptr [ebp+rd._bf_4] .text:100F8D19 mov dword ptr [ebp+fitType._bf_4], eax .text:100F8D1C mov eax, ?gName@UnDecorator@@0PBDB ; char const * const UnDecorator::gName .text:100F8D21 cmp byte ptr [eax], 0 .text:100F8D24 jz short loc_100F8D69 .text:100F8D26 lea eax, [ebp+var_30] .text:100F8D29 push eax ; result .text:100F8D2A call ?getScope@UnDecorator@@CA?AVDName@@XZ ; UnDecorator::getScope(void) .text:100F8D2F pop ecx .text:100F8D30 push eax ; rd .text:100F8D31 lea eax, [ebp+var_20] .text:100F8D34 push eax ; result .text:100F8D35 push 20h ; ' ' ; ch .text:100F8D37 lea ecx, [ebp+var_38] ; this .text:100F8D3A call ??4DName@@QAEAAV0@D@Z ; DName::operator=(char) .text:100F8D3F mov ecx, eax ; this .text:100F8D41 call ??HDName@@QBE?AV0@ABV0@@Z ; DName::operator+(DName const &) .text:100F8D46 mov eax, [ebp+var_20.node] .text:100F8D49 lea ecx, [ebp+rd] ; this .text:100F8D4C mov [ebp+rd.node], eax .text:100F8D4F mov eax, dword ptr [ebp+var_20._bf_4] .text:100F8D52 mov dword ptr [ebp+rd._bf_4], eax .text:100F8D55 lea eax, [ebp+fitType] .text:100F8D58 push eax ; rd .text:100F8D59 call ??YDName@@QAEAAV0@ABV0@@Z ; DName::operator+=(DName const &) .text:100F8D5E mov eax, [ebp+rd.node] .text:100F8D61 mov [ebp+fitType.node], eax .text:100F8D64 mov eax, dword ptr [ebp+rd._bf_4] .text:100F8D67 jmp short loc_100F8D8B .text:100F8D69 ; --------------------------------------------------------------------------- .text:100F8D69 .text:100F8D69 loc_100F8D69: ; CODE XREF: UnDecorator::getFunctionIndirectType(DName const &)+106↑j .text:100F8D69 lea eax, [ebp+fitType] .text:100F8D6C push eax ; rd .text:100F8D6D lea eax, [ebp+var_20] .text:100F8D70 push eax ; result .text:100F8D71 push 1 ; st .text:100F8D73 lea ecx, [ebp+var_38] ; this .text:100F8D76 call ??0DName@@QAE@W4DNameStatus@@@Z ; DName::DName(DNameStatus) .text:100F8D7B mov ecx, eax ; this .text:100F8D7D call ??HDName@@QBE?AV0@ABV0@@Z ; DName::operator+(DName const &) .text:100F8D82 mov eax, [ebp+var_20.node] .text:100F8D85 mov [ebp+fitType.node], eax .text:100F8D88 mov eax, dword ptr [ebp+var_20._bf_4] .text:100F8D8B .text:100F8D8B loc_100F8D8B: ; CODE XREF: UnDecorator::getFunctionIndirectType(DName const &)+149↑j .text:100F8D8B mov ecx, ?gName@UnDecorator@@0PBDB ; char const * const UnDecorator::gName .text:100F8D91 mov dword ptr [ebp+fitType._bf_4], eax .text:100F8D94 jmp short loc_100F8D9D .text:100F8D96 ; --------------------------------------------------------------------------- .text:100F8D96 .text:100F8D96 loc_100F8D96: ; CODE XREF: UnDecorator::getFunctionIndirectType(DName const &)+D0↑j .text:100F8D96 inc ecx .text:100F8D97 mov ?gName@UnDecorator@@0PBDB, ecx ; char const * const UnDecorator::gName .text:100F8D9D .text:100F8D9D loc_100F8D9D: ; CODE XREF: UnDecorator::getFunctionIndirectType(DName const &)+176↑j .text:100F8D9D mov al, [ecx] .text:100F8D9F test al, al .text:100F8DA1 jz loc_100F8E4B .text:100F8DA7 cmp al, 40h ; '@' .text:100F8DA9 jnz loc_100F8E44 .text:100F8DAF mov eax, ?disableFlags@UnDecorator@@0KA ; ulong UnDecorator::disableFlags .text:100F8DB4 inc ecx .text:100F8DB5 and eax, 60h .text:100F8DB8 mov ?gName@UnDecorator@@0PBDB, ecx ; char const * const UnDecorator::gName .text:100F8DBE cmp al, 60h ; '`' .text:100F8DC0 lea eax, [ebp+var_38] .text:100F8DC3 push eax ; result .text:100F8DC4 jz short loc_100F8E33 .text:100F8DC6 call ?getThisType@UnDecorator@@CA?AVDName@@XZ ; UnDecorator::getThisType(void) .text:100F8DCB pop ecx .text:100F8DCC mov ecx, [eax] .text:100F8DCE mov eax, [eax+4] .text:100F8DD1 mov [ebp+thisType.node], ecx .text:100F8DD4 mov dword ptr [ebp+thisType._bf_4], eax .text:100F8DD7 .text:100F8DD7 loc_100F8DD7: ; CODE XREF: UnDecorator::getFunctionIndirectType(DName const &)+C7↑j .text:100F8DD7 ; UnDecorator::getFunctionIndirectType(DName const &)+224↓j .text:100F8DD7 test bl, 4 .text:100F8DDA jz loc_100F8E77 .text:100F8DE0 mov eax, ?disableFlags@UnDecorator@@0KA ; ulong UnDecorator::disableFlags .text:100F8DE5 shr eax, 1 .text:100F8DE7 not eax .text:100F8DE9 test al, 1 .text:100F8DEB lea eax, [ebp+var_38] .text:100F8DEE push eax ; result .text:100F8DEF jz short loc_100F8E68 .text:100F8DF1 call ?getBasedType@UnDecorator@@CA?AVDName@@XZ ; UnDecorator::getBasedType(void) .text:100F8DF6 pop ecx .text:100F8DF7 push eax ; rd .text:100F8DF8 lea eax, [ebp+var_20] .text:100F8DFB push eax ; result .text:100F8DFC push 20h ; ' ' ; ch .text:100F8DFE lea ecx, [ebp+var_30] ; this .text:100F8E01 call ??4DName@@QAEAAV0@D@Z ; DName::operator=(char) .text:100F8E06 mov ecx, eax ; this .text:100F8E08 call ??HDName@@QBE?AV0@ABV0@@Z ; DName::operator+(DName const &) .text:100F8E0D mov eax, [ebp+var_20.node] .text:100F8E10 lea ecx, [ebp+rd] ; this .text:100F8E13 mov [ebp+rd.node], eax .text:100F8E16 mov eax, dword ptr [ebp+var_20._bf_4] .text:100F8E19 mov dword ptr [ebp+rd._bf_4], eax .text:100F8E1C lea eax, [ebp+fitType] .text:100F8E1F push eax ; rd .text:100F8E20 call ??YDName@@QAEAAV0@ABV0@@Z ; DName::operator+=(DName const &) .text:100F8E25 mov eax, [ebp+rd.node] .text:100F8E28 mov [ebp+fitType.node], eax .text:100F8E2B mov eax, dword ptr [ebp+rd._bf_4] .text:100F8E2E mov dword ptr [ebp+fitType._bf_4], eax .text:100F8E31 jmp short loc_100F8E77 .text:100F8E33 ; --------------------------------------------------------------------------- .text:100F8E33 .text:100F8E33 loc_100F8E33: ; CODE XREF: UnDecorator::getFunctionIndirectType(DName const &)+1A6↑j .text:100F8E33 call ?getThisType@UnDecorator@@CA?AVDName@@XZ ; UnDecorator::getThisType(void) .text:100F8E38 pop ecx .text:100F8E39 push eax ; rd .text:100F8E3A lea ecx, [ebp+thisType] ; this .text:100F8E3D call ??_5DName@@QAEAAV0@ABV0@@Z ; DName::operator=|(DName const &) .text:100F8E42 jmp short loc_100F8DD7 .text:100F8E44 ; --------------------------------------------------------------------------- .text:100F8E44 .text:100F8E44 loc_100F8E44: ; CODE XREF: UnDecorator::getFunctionIndirectType(DName const &)+18B↑j .text:100F8E44 push 2 .text:100F8E46 jmp loc_100F9015 .text:100F8E4B ; --------------------------------------------------------------------------- .text:100F8E4B 解析一下这反编译函数是什么意思 一句一句解析
07-08
0:000> uf 0x100f8d1c DllX10User!UnDecorator::getFunctionIndirectType [f:\dd\vctools\langapi\undname\undname.cxx @ 3848]: 3848 100f8c1e 55 push ebp 3848 100f8c1f 8bec mov ebp,esp 3849 100f8c21 8b0dbc451710 mov ecx,dword ptr [DllX10User!UnDecorator::gName (101745bc)] 3849 100f8c27 83ec38 sub esp,38h 3849 100f8c2a 8a01 mov al,byte ptr [ecx] 3849 100f8c2c 84c0 test al,al 3849 100f8c2e 7518 jne DllX10User!UnDecorator::getFunctionIndirectType+0x2a (100f8c48) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x12 [f:\dd\vctools\langapi\undname\undname.cxx @ 3850]: 3850 100f8c30 ff750c push dword ptr [ebp+0Ch] 3850 100f8c33 6a01 push 1 3850 100f8c35 ff7508 push dword ptr [ebp+8] 3850 100f8c38 e80dd7ffff call DllX10User!operator+ (100f634a) 3850 100f8c3d 83c40c add esp,0Ch DllX10User!UnDecorator::getFunctionIndirectType+0x22 [f:\dd\vctools\langapi\undname\undname.cxx @ 3850]: 3850 100f8c40 8b4508 mov eax,dword ptr [ebp+8] 3850 100f8c43 e9db030000 jmp DllX10User!UnDecorator::getFunctionIndirectType+0x405 (100f9023) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x2a [f:\dd\vctools\langapi\undname\undname.cxx @ 3852]: 3852 100f8c48 3c36 cmp al,36h 3852 100f8c4a 7c04 jl DllX10User!UnDecorator::getFunctionIndirectType+0x32 (100f8c50) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x2e [f:\dd\vctools\langapi\undname\undname.cxx @ 3852]: 3852 100f8c4c 3c39 cmp al,39h 3852 100f8c4e 7e10 jle DllX10User!UnDecorator::getFunctionIndirectType+0x42 (100f8c60) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x32 [f:\dd\vctools\langapi\undname\undname.cxx @ 3852]: 3852 100f8c50 3c5f cmp al,5Fh 3852 100f8c52 740c je DllX10User!UnDecorator::getFunctionIndirectType+0x42 (100f8c60) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x36 [f:\dd\vctools\langapi\undname\undname.cxx @ 3853]: 3853 100f8c54 8b4d08 mov ecx,dword ptr [ebp+8] 3853 100f8c57 6a02 push 2 3853 100f8c59 e82bd2ffff call DllX10User!DName::DName (100f5e89) 3853 100f8c5e ebe0 jmp DllX10User!UnDecorator::getFunctionIndirectType+0x22 (100f8c40) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x42 [f:\dd\vctools\langapi\undname\undname.cxx @ 3853]: 3853 100f8c60 53 push ebx 3856 100f8c61 0fbed8 movsx ebx,al 3856 100f8c64 83eb36 sub ebx,36h 3856 100f8c67 41 inc ecx 3856 100f8c68 890dbc451710 mov dword ptr [DllX10User!UnDecorator::gName (101745bc)],ecx 3858 100f8c6e 83fb29 cmp ebx,29h 3858 100f8c71 752f jne DllX10User!UnDecorator::getFunctionIndirectType+0x84 (100f8ca2) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x55 [f:\dd\vctools\langapi\undname\undname.cxx @ 3860]: 3860 100f8c73 8a01 mov al,byte ptr [ecx] 3860 100f8c75 84c0 test al,al 3860 100f8c77 7417 je DllX10User!UnDecorator::getFunctionIndirectType+0x72 (100f8c90) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x5b [f:\dd\vctools\langapi\undname\undname.cxx @ 3862]: 3862 100f8c79 0fbed8 movsx ebx,al 3862 100f8c7c 83eb3d sub ebx,3Dh 3862 100f8c7f 41 inc ecx 3862 100f8c80 890dbc451710 mov dword ptr [DllX10User!UnDecorator::gName (101745bc)],ecx 3864 100f8c86 83fb04 cmp ebx,4 3864 100f8c89 7c20 jl DllX10User!UnDecorator::getFunctionIndirectType+0x8d (100f8cab) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x6d [f:\dd\vctools\langapi\undname\undname.cxx @ 3864]: 3864 100f8c8b 83fb07 cmp ebx,7 3869 100f8c8e eb19 jmp DllX10User!UnDecorator::getFunctionIndirectType+0x8b (100f8ca9) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x72 [f:\dd\vctools\langapi\undname\undname.cxx @ 3869]: 3869 100f8c90 ff750c push dword ptr [ebp+0Ch] 3869 100f8c93 6a01 push 1 3869 100f8c95 ff7508 push dword ptr [ebp+8] 3869 100f8c98 e8add6ffff call DllX10User!operator+ (100f634a) 3869 100f8c9d 83c40c add esp,0Ch 3869 100f8ca0 eb1b jmp DllX10User!UnDecorator::getFunctionIndirectType+0x9f (100f8cbd) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x84 [f:\dd\vctools\langapi\undname\undname.cxx @ 3872]: 3872 100f8ca2 85db test ebx,ebx 3872 100f8ca4 7805 js DllX10User!UnDecorator::getFunctionIndirectType+0x8d (100f8cab) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x88 [f:\dd\vctools\langapi\undname\undname.cxx @ 3872]: 3872 100f8ca6 83fb03 cmp ebx,3 DllX10User!UnDecorator::getFunctionIndirectType+0x8b [f:\dd\vctools\langapi\undname\undname.cxx @ 3872]: 3872 100f8ca9 7e03 jle DllX10User!UnDecorator::getFunctionIndirectType+0x90 (100f8cae) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x8d [f:\dd\vctools\langapi\undname\undname.cxx @ 3873]: 3873 100f8cab 83cbff or ebx,0FFFFFFFFh DllX10User!UnDecorator::getFunctionIndirectType+0x90 [f:\dd\vctools\langapi\undname\undname.cxx @ 3877]: 3877 100f8cae 83fbff cmp ebx,0FFFFFFFFh 3877 100f8cb1 7512 jne DllX10User!UnDecorator::getFunctionIndirectType+0xa7 (100f8cc5) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x95 [f:\dd\vctools\langapi\undname\undname.cxx @ 3878]: 3878 100f8cb3 8b4d08 mov ecx,dword ptr [ebp+8] 3878 100f8cb6 6a02 push 2 3878 100f8cb8 e8ccd1ffff call DllX10User!DName::DName (100f5e89) DllX10User!UnDecorator::getFunctionIndirectType+0x9f [f:\dd\vctools\langapi\undname\undname.cxx @ 3878]: 3878 100f8cbd 8b4508 mov eax,dword ptr [ebp+8] 3878 100f8cc0 e95d030000 jmp DllX10User!UnDecorator::getFunctionIndirectType+0x404 (100f9022) Branch DllX10User!UnDecorator::getFunctionIndirectType+0xa7 [f:\dd\vctools\langapi\undname\undname.cxx @ 3883]: 3883 100f8cc5 8365f000 and dword ptr [ebp-10h],0 3883 100f8cc9 8165f40000ffff and dword ptr [ebp-0Ch],0FFFF0000h 3883 100f8cd0 56 push esi 3884 100f8cd1 8b750c mov esi,dword ptr [ebp+0Ch] 3884 100f8cd4 57 push edi 3888 100f8cd5 8bfb mov edi,ebx 3884 100f8cd7 8b06 mov eax,dword ptr [esi] 3884 100f8cd9 8945f8 mov dword ptr [ebp-8],eax 3884 100f8cdc 8b4604 mov eax,dword ptr [esi+4] 3884 100f8cdf 8945fc mov dword ptr [ebp-4],eax 3888 100f8ce2 83e702 and edi,2 3888 100f8ce5 0f84ec000000 je DllX10User!UnDecorator::getFunctionIndirectType+0x1b9 (100f8dd7) Branch DllX10User!UnDecorator::getFunctionIndirectType+0xcd [f:\dd\vctools\langapi\undname\undname.cxx @ 3890]: 3890 100f8ceb 803940 cmp byte ptr [ecx],40h 3890 100f8cee 0f84a2000000 je DllX10User!UnDecorator::getFunctionIndirectType+0x178 (100f8d96) Branch DllX10User!UnDecorator::getFunctionIndirectType+0xd6 [f:\dd\vctools\langapi\undname\undname.cxx @ 3892]: 3892 100f8cf4 8d45f8 lea eax,[ebp-8] 3892 100f8cf7 50 push eax 3892 100f8cf8 8d45e8 lea eax,[ebp-18h] 3892 100f8cfb 50 push eax 3892 100f8cfc 6838191310 push offset DllX10User!`string' (10131938) 3892 100f8d01 8d4de0 lea ecx,[ebp-20h] 3892 100f8d04 e846d1ffff call DllX10User!DName::DName (100f5e4f) 3892 100f8d09 8bc8 mov ecx,eax 3892 100f8d0b e85ed6ffff call DllX10User!DName::operator+ (100f636e) 3892 100f8d10 8b45e8 mov eax,dword ptr [ebp-18h] 3892 100f8d13 8945f8 mov dword ptr [ebp-8],eax 3892 100f8d16 8b45ec mov eax,dword ptr [ebp-14h] 3892 100f8d19 8945fc mov dword ptr [ebp-4],eax 3894 100f8d1c a1bc451710 mov eax,dword ptr [DllX10User!UnDecorator::gName (101745bc)] 3894 100f8d21 803800 cmp byte ptr [eax],0 3894 100f8d24 7443 je DllX10User!UnDecorator::getFunctionIndirectType+0x14b (100f8d69) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x108 [f:\dd\vctools\langapi\undname\undname.cxx @ 3895]: 3895 100f8d26 8d45d0 lea eax,[ebp-30h] 3895 100f8d29 50 push eax 3895 100f8d2a e8e00f0000 call DllX10User!UnDecorator::getScope (100f9d0f) 3895 100f8d2f 59 pop ecx 3895 100f8d30 50 push eax 3895 100f8d31 8d45e0 lea eax,[ebp-20h] 3895 100f8d34 50 push eax 3895 100f8d35 6a20 push 20h 3895 100f8d37 8d4dc8 lea ecx,[ebp-38h] 3895 100f8d3a e87bd3ffff call DllX10User!DName::operator= (100f60ba) 3895 100f8d3f 8bc8 mov ecx,eax 3895 100f8d41 e828d6ffff call DllX10User!DName::operator+ (100f636e) 3895 100f8d46 8b45e0 mov eax,dword ptr [ebp-20h] 3895 100f8d49 8d4de8 lea ecx,[ebp-18h] 3895 100f8d4c 8945e8 mov dword ptr [ebp-18h],eax 3895 100f8d4f 8b45e4 mov eax,dword ptr [ebp-1Ch] 3895 100f8d52 8945ec mov dword ptr [ebp-14h],eax 3895 100f8d55 8d45f8 lea eax,[ebp-8] 3895 100f8d58 50 push eax 3895 100f8d59 e898d6ffff call DllX10User!DName::operator+= (100f63f6) 3895 100f8d5e 8b45e8 mov eax,dword ptr [ebp-18h] 3895 100f8d61 8945f8 mov dword ptr [ebp-8],eax 3895 100f8d64 8b45ec mov eax,dword ptr [ebp-14h] 3896 100f8d67 eb22 jmp DllX10User!UnDecorator::getFunctionIndirectType+0x16d (100f8d8b) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x14b [f:\dd\vctools\langapi\undname\undname.cxx @ 3897]: 3897 100f8d69 8d45f8 lea eax,[ebp-8] 3897 100f8d6c 50 push eax 3897 100f8d6d 8d45e0 lea eax,[ebp-20h] 3897 100f8d70 50 push eax 3897 100f8d71 6a01 push 1 3897 100f8d73 8d4dc8 lea ecx,[ebp-38h] 3897 100f8d76 e80ed1ffff call DllX10User!DName::DName (100f5e89) 3897 100f8d7b 8bc8 mov ecx,eax 3897 100f8d7d e8ecd5ffff call DllX10User!DName::operator+ (100f636e) 3897 100f8d82 8b45e0 mov eax,dword ptr [ebp-20h] 3897 100f8d85 8945f8 mov dword ptr [ebp-8],eax 3897 100f8d88 8b45e4 mov eax,dword ptr [ebp-1Ch] DllX10User!UnDecorator::getFunctionIndirectType+0x16d [f:\dd\vctools\langapi\undname\undname.cxx @ 3899]: 3899 100f8d8b 8b0dbc451710 mov ecx,dword ptr [DllX10User!UnDecorator::gName (101745bc)] 3897 100f8d91 8945fc mov dword ptr [ebp-4],eax 3899 100f8d94 eb07 jmp DllX10User!UnDecorator::getFunctionIndirectType+0x17f (100f8d9d) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x178 [f:\dd\vctools\langapi\undname\undname.cxx @ 3902]: 3902 100f8d96 41 inc ecx 3902 100f8d97 890dbc451710 mov dword ptr [DllX10User!UnDecorator::gName (101745bc)],ecx DllX10User!UnDecorator::getFunctionIndirectType+0x17f [f:\dd\vctools\langapi\undname\undname.cxx @ 3905]: 3905 100f8d9d 8a01 mov al,byte ptr [ecx] 3905 100f8d9f 84c0 test al,al 3905 100f8da1 0f84a4000000 je DllX10User!UnDecorator::getFunctionIndirectType+0x22d (100f8e4b) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x189 [f:\dd\vctools\langapi\undname\undname.cxx @ 3906]: 3906 100f8da7 3c40 cmp al,40h 3906 100f8da9 0f8595000000 jne DllX10User!UnDecorator::getFunctionIndirectType+0x226 (100f8e44) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x191 [f:\dd\vctools\langapi\undname\undname.cxx @ 3913]: 3913 100f8daf a1cc451710 mov eax,dword ptr [DllX10User!UnDecorator::disableFlags (101745cc)] 3907 100f8db4 41 inc ecx 3913 100f8db5 83e060 and eax,60h 3907 100f8db8 890dbc451710 mov dword ptr [DllX10User!UnDecorator::gName (101745bc)],ecx 3913 100f8dbe 3c60 cmp al,60h 3914 100f8dc0 8d45c8 lea eax,[ebp-38h] 3914 100f8dc3 50 push eax 3914 100f8dc4 746d je DllX10User!UnDecorator::getFunctionIndirectType+0x215 (100f8e33) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x1a8 [f:\dd\vctools\langapi\undname\undname.cxx @ 3914]: 3914 100f8dc6 e8041e0000 call DllX10User!UnDecorator::getThisType (100fabcf) 3914 100f8dcb 59 pop ecx 3914 100f8dcc 8b08 mov ecx,dword ptr [eax] 3914 100f8dce 8b4004 mov eax,dword ptr [eax+4] 3914 100f8dd1 894df0 mov dword ptr [ebp-10h],ecx 3914 100f8dd4 8945f4 mov dword ptr [ebp-0Ch],eax DllX10User!UnDecorator::getFunctionIndirectType+0x1b9 [f:\dd\vctools\langapi\undname\undname.cxx @ 3922]: 3922 100f8dd7 f6c304 test bl,4 3922 100f8dda 0f8497000000 je DllX10User!UnDecorator::getFunctionIndirectType+0x259 (100f8e77) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x1c2 [f:\dd\vctools\langapi\undname\undname.cxx @ 3923]: 3923 100f8de0 a1cc451710 mov eax,dword ptr [DllX10User!UnDecorator::disableFlags (101745cc)] 3923 100f8de5 d1e8 shr eax,1 3923 100f8de7 f7d0 not eax 3923 100f8de9 a801 test al,1 3924 100f8deb 8d45c8 lea eax,[ebp-38h] 3924 100f8dee 50 push eax 3924 100f8def 7477 je DllX10User!UnDecorator::getFunctionIndirectType+0x24a (100f8e68) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x1d3 [f:\dd\vctools\langapi\undname\undname.cxx @ 3924]: 3924 100f8df1 e8aae9ffff call DllX10User!UnDecorator::getBasedType (100f77a0) 3924 100f8df6 59 pop ecx 3924 100f8df7 50 push eax 3924 100f8df8 8d45e0 lea eax,[ebp-20h] 3924 100f8dfb 50 push eax 3924 100f8dfc 6a20 push 20h 3924 100f8dfe 8d4dd0 lea ecx,[ebp-30h] 3924 100f8e01 e8b4d2ffff call DllX10User!DName::operator= (100f60ba) 3924 100f8e06 8bc8 mov ecx,eax 3924 100f8e08 e861d5ffff call DllX10User!DName::operator+ (100f636e) 3924 100f8e0d 8b45e0 mov eax,dword ptr [ebp-20h] 3924 100f8e10 8d4de8 lea ecx,[ebp-18h] 3924 100f8e13 8945e8 mov dword ptr [ebp-18h],eax 3924 100f8e16 8b45e4 mov eax,dword ptr [ebp-1Ch] 3924 100f8e19 8945ec mov dword ptr [ebp-14h],eax 3924 100f8e1c 8d45f8 lea eax,[ebp-8] 3924 100f8e1f 50 push eax 3924 100f8e20 e8d1d5ffff call DllX10User!DName::operator+= (100f63f6) 3924 100f8e25 8b45e8 mov eax,dword ptr [ebp-18h] 3924 100f8e28 8945f8 mov dword ptr [ebp-8],eax 3924 100f8e2b 8b45ec mov eax,dword ptr [ebp-14h] 3924 100f8e2e 8945fc mov dword ptr [ebp-4],eax 3925 100f8e31 eb44 jmp DllX10User!UnDecorator::getFunctionIndirectType+0x259 (100f8e77) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x215 [f:\dd\vctools\langapi\undname\undname.cxx @ 3916]: 3916 100f8e33 e8971d0000 call DllX10User!UnDecorator::getThisType (100fabcf) 3916 100f8e38 59 pop ecx 3916 100f8e39 50 push eax 3916 100f8e3a 8d4df0 lea ecx,[ebp-10h] 3916 100f8e3d e832d7ffff call DllX10User!DName::operator|= (100f6574) 3916 100f8e42 eb93 jmp DllX10User!UnDecorator::getFunctionIndirectType+0x1b9 (100f8dd7) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x226 [f:\dd\vctools\langapi\undname\undname.cxx @ 3909]: 3909 100f8e44 6a02 push 2 3909 100f8e46 e9ca010000 jmp DllX10User!UnDecorator::getFunctionIndirectType+0x3f7 (100f9015) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x22d [f:\dd\vctools\langapi\undname\undname.cxx @ 3911]: 3911 100f8e4b 8d45f8 lea eax,[ebp-8] 3911 100f8e4e 50 push eax 3911 100f8e4f ff7508 push dword ptr [ebp+8] 3911 100f8e52 8d4dc8 lea ecx,[ebp-38h] 3911 100f8e55 6a01 push 1 3911 100f8e57 e82dd0ffff call DllX10User!DName::DName (100f5e89) 3911 100f8e5c 8bc8 mov ecx,eax 3911 100f8e5e e80bd5ffff call DllX10User!DName::operator+ (100f636e) 3911 100f8e63 e9b5010000 jmp DllX10User!UnDecorator::getFunctionIndirectType+0x3ff (100f901d) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x24a [f:\dd\vctools\langapi\undname\undname.cxx @ 3926]: 3926 100f8e68 e833e9ffff call DllX10User!UnDecorator::getBasedType (100f77a0) 3926 100f8e6d 59 pop ecx 3926 100f8e6e 50 push eax 3926 100f8e6f 8d4df8 lea ecx,[ebp-8] 3926 100f8e72 e8fdd6ffff call DllX10User!DName::operator|= (100f6574) DllX10User!UnDecorator::getFunctionIndirectType+0x259 [f:\dd\vctools\langapi\undname\undname.cxx @ 3930]: 3930 100f8e77 a1cc451710 mov eax,dword ptr [DllX10User!UnDecorator::disableFlags (101745cc)] 3930 100f8e7c d1e8 shr eax,1 3930 100f8e7e f7d0 not eax 3930 100f8e80 a801 test al,1 3930 100f8e82 7426 je DllX10User!UnDecorator::getFunctionIndirectType+0x28c (100f8eaa) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x266 [f:\dd\vctools\langapi\undname\undname.cxx @ 3932]: 3932 100f8e84 8d45f8 lea eax,[ebp-8] 3932 100f8e87 50 push eax 3932 100f8e88 8d45c8 lea eax,[ebp-38h] 3932 100f8e8b 50 push eax 3932 100f8e8c 8d45d0 lea eax,[ebp-30h] 3932 100f8e8f 50 push eax 3932 100f8e90 e893edffff call DllX10User!UnDecorator::getCallingConvention (100f7c28) 3932 100f8e95 59 pop ecx 3932 100f8e96 8bc8 mov ecx,eax 3932 100f8e98 e8d1d4ffff call DllX10User!DName::operator+ (100f636e) 3932 100f8e9d 8b08 mov ecx,dword ptr [eax] 3932 100f8e9f 8b4004 mov eax,dword ptr [eax+4] 3932 100f8ea2 894df8 mov dword ptr [ebp-8],ecx 3932 100f8ea5 8945fc mov dword ptr [ebp-4],eax 3941 100f8ea8 eb13 jmp DllX10User!UnDecorator::getFunctionIndirectType+0x29f (100f8ebd) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x28c [f:\dd\vctools\langapi\undname\undname.cxx @ 3942]: 3942 100f8eaa 8d45c8 lea eax,[ebp-38h] 3942 100f8ead 50 push eax 3942 100f8eae e875edffff call DllX10User!UnDecorator::getCallingConvention (100f7c28) 3942 100f8eb3 59 pop ecx 3942 100f8eb4 50 push eax 3942 100f8eb5 8d4df8 lea ecx,[ebp-8] 3942 100f8eb8 e8b7d6ffff call DllX10User!DName::operator|= (100f6574) DllX10User!UnDecorator::getFunctionIndirectType+0x29f [f:\dd\vctools\langapi\undname\undname.cxx @ 3946]: 3946 100f8ebd 33db xor ebx,ebx 3946 100f8ebf 391e cmp dword ptr [esi],ebx 3946 100f8ec1 743b je DllX10User!UnDecorator::getFunctionIndirectType+0x2e0 (100f8efe) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x2a5 [f:\dd\vctools\langapi\undname\undname.cxx @ 3947]: 3947 100f8ec3 8d45f8 lea eax,[ebp-8] 3947 100f8ec6 50 push eax 3947 100f8ec7 8d45e0 lea eax,[ebp-20h] 3947 100f8eca 50 push eax 3947 100f8ecb 6a28 push 28h 3947 100f8ecd 8d4dc8 lea ecx,[ebp-38h] 3947 100f8ed0 e8e5d1ffff call DllX10User!DName::operator= (100f60ba) 3947 100f8ed5 8bc8 mov ecx,eax 3947 100f8ed7 e892d4ffff call DllX10User!DName::operator+ (100f636e) 3947 100f8edc 8b45e0 mov eax,dword ptr [ebp-20h] 3947 100f8edf 8d4de8 lea ecx,[ebp-18h] 3947 100f8ee2 8945e8 mov dword ptr [ebp-18h],eax 3947 100f8ee5 8b45e4 mov eax,dword ptr [ebp-1Ch] 3947 100f8ee8 6a29 push 29h 3947 100f8eea 8945ec mov dword ptr [ebp-14h],eax 3947 100f8eed e847d5ffff call DllX10User!DName::operator+= (100f6439) 3947 100f8ef2 8b45e8 mov eax,dword ptr [ebp-18h] 3947 100f8ef5 8945f8 mov dword ptr [ebp-8],eax 3947 100f8ef8 8b45ec mov eax,dword ptr [ebp-14h] 3947 100f8efb 8945fc mov dword ptr [ebp-4],eax DllX10User!UnDecorator::getFunctionIndirectType+0x2e0 [f:\dd\vctools\langapi\undname\undname.cxx @ 3952]: 3952 100f8efe 53 push ebx 3952 100f8eff 6a08 push 8 3952 100f8f01 b9d8451710 mov ecx,offset DllX10User!heap (101745d8) 3952 100f8f06 e8db010000 call DllX10User!_HeapManager::getMemory (100f90e6) 3952 100f8f0b 8bf0 mov esi,eax 3952 100f8f0d 85f6 test esi,esi 3952 100f8f0f 740e je DllX10User!UnDecorator::getFunctionIndirectType+0x301 (100f8f1f) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x2f3 [f:\dd\vctools\langapi\undname\undname.cxx @ 3952]: 3952 100f8f11 885e04 mov byte ptr [esi+4],bl 3952 100f8f14 816604ff00ffff and dword ptr [esi+4],0FFFF00FFh 3952 100f8f1b 891e mov dword ptr [esi],ebx 3952 100f8f1d eb02 jmp DllX10User!UnDecorator::getFunctionIndirectType+0x303 (100f8f21) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x301 [f:\dd\vctools\langapi\undname\undname.cxx @ 3952]: 3952 100f8f1f 8bf3 mov esi,ebx DllX10User!UnDecorator::getFunctionIndirectType+0x303 [f:\dd\vctools\langapi\undname\undname.cxx @ 3953]: 3953 100f8f21 8d45d8 lea eax,[ebp-28h] 3953 100f8f24 56 push esi 3953 100f8f25 50 push eax 3953 100f8f26 e8b50d0000 call DllX10User!UnDecorator::getReturnType (100f9ce0) 3956 100f8f2b 8d45c8 lea eax,[ebp-38h] 3956 100f8f2e 50 push eax 3956 100f8f2f e88ae5ffff call DllX10User!UnDecorator::getArgumentTypes (100f74be) 3956 100f8f34 83c40c add esp,0Ch 3956 100f8f37 8d4dd0 lea ecx,[ebp-30h] 3956 100f8f3a 50 push eax 3956 100f8f3b 8d45e0 lea eax,[ebp-20h] 3956 100f8f3e 50 push eax 3956 100f8f3f 6a28 push 28h 3956 100f8f41 e874d1ffff call DllX10User!DName::operator= (100f60ba) 3956 100f8f46 8bc8 mov ecx,eax 3956 100f8f48 e821d4ffff call DllX10User!DName::operator+ (100f636e) 3956 100f8f4d 8b45e0 mov eax,dword ptr [ebp-20h] 3956 100f8f50 8d4de8 lea ecx,[ebp-18h] 3956 100f8f53 8945e8 mov dword ptr [ebp-18h],eax 3956 100f8f56 8b45e4 mov eax,dword ptr [ebp-1Ch] 3956 100f8f59 6a29 push 29h 3956 100f8f5b 8945ec mov dword ptr [ebp-14h],eax 3956 100f8f5e e8d6d4ffff call DllX10User!DName::operator+= (100f6439) 3956 100f8f63 8d45e8 lea eax,[ebp-18h] 3956 100f8f66 50 push eax 3956 100f8f67 8d4df8 lea ecx,[ebp-8] 3956 100f8f6a e887d4ffff call DllX10User!DName::operator+= (100f63f6) 3958 100f8f6f 8b0dcc451710 mov ecx,dword ptr [DllX10User!UnDecorator::disableFlags (101745cc)] 3958 100f8f75 8bc1 mov eax,ecx 3958 100f8f77 83e060 and eax,60h 3958 100f8f7a 3c60 cmp al,60h 3958 100f8f7c 7416 je DllX10User!UnDecorator::getFunctionIndirectType+0x376 (100f8f94) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x360 [f:\dd\vctools\langapi\undname\undname.cxx @ 3958]: 3958 100f8f7e 85ff test edi,edi 3958 100f8f80 7412 je DllX10User!UnDecorator::getFunctionIndirectType+0x376 (100f8f94) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x364 [f:\dd\vctools\langapi\undname\undname.cxx @ 3959]: 3959 100f8f82 8d45f0 lea eax,[ebp-10h] 3959 100f8f85 50 push eax 3959 100f8f86 8d4df8 lea ecx,[ebp-8] 3959 100f8f89 e868d4ffff call DllX10User!DName::operator+= (100f63f6) 3959 100f8f8e 8b0dcc451710 mov ecx,dword ptr [DllX10User!UnDecorator::disableFlags (101745cc)] DllX10User!UnDecorator::getFunctionIndirectType+0x376 [f:\dd\vctools\langapi\undname\undname.cxx @ 3962]: 3962 100f8f94 c1e913 shr ecx,13h 3963 100f8f97 8d45c8 lea eax,[ebp-38h] 3963 100f8f9a f7d1 not ecx 3963 100f8f9c 50 push eax 3963 100f8f9d f6c101 test cl,1 3963 100f8fa0 7411 je DllX10User!UnDecorator::getFunctionIndirectType+0x395 (100f8fb3) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x384 [f:\dd\vctools\langapi\undname\undname.cxx @ 3963]: 3963 100f8fa2 e8470c0000 call DllX10User!UnDecorator::getRestrictionSpec (100f9bee) 3963 100f8fa7 59 pop ecx 3963 100f8fa8 50 push eax 3963 100f8fa9 8d4df8 lea ecx,[ebp-8] 3963 100f8fac e845d4ffff call DllX10User!DName::operator+= (100f63f6) 3964 100f8fb1 eb0f jmp DllX10User!UnDecorator::getFunctionIndirectType+0x3a4 (100f8fc2) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x395 [f:\dd\vctools\langapi\undname\undname.cxx @ 3965]: 3965 100f8fb3 e8360c0000 call DllX10User!UnDecorator::getRestrictionSpec (100f9bee) 3965 100f8fb8 59 pop ecx 3965 100f8fb9 50 push eax 3965 100f8fba 8d4df8 lea ecx,[ebp-8] 3965 100f8fbd e8b2d5ffff call DllX10User!DName::operator|= (100f6574) DllX10User!UnDecorator::getFunctionIndirectType+0x3a4 [f:\dd\vctools\langapi\undname\undname.cxx @ 3968]: 3968 100f8fc2 a1cc451710 mov eax,dword ptr [DllX10User!UnDecorator::disableFlags (101745cc)] 3968 100f8fc7 c1e808 shr eax,8 3968 100f8fca f7d0 not eax 3968 100f8fcc a801 test al,1 3969 100f8fce 8d45c8 lea eax,[ebp-38h] 3969 100f8fd1 50 push eax 3969 100f8fd2 7411 je DllX10User!UnDecorator::getFunctionIndirectType+0x3c7 (100f8fe5) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x3b6 [f:\dd\vctools\langapi\undname\undname.cxx @ 3969]: 3969 100f8fd4 e8301c0000 call DllX10User!UnDecorator::getThrowTypes (100fac09) 3969 100f8fd9 59 pop ecx 3969 100f8fda 50 push eax 3969 100f8fdb 8d4df8 lea ecx,[ebp-8] 3969 100f8fde e813d4ffff call DllX10User!DName::operator+= (100f63f6) 3970 100f8fe3 eb0f jmp DllX10User!UnDecorator::getFunctionIndirectType+0x3d6 (100f8ff4) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x3c7 [f:\dd\vctools\langapi\undname\undname.cxx @ 3971]: 3971 100f8fe5 e81f1c0000 call DllX10User!UnDecorator::getThrowTypes (100fac09) 3971 100f8fea 59 pop ecx 3971 100f8feb 50 push eax 3971 100f8fec 8d4df8 lea ecx,[ebp-8] 3971 100f8fef e880d5ffff call DllX10User!DName::operator|= (100f6574) DllX10User!UnDecorator::getFunctionIndirectType+0x3d6 [f:\dd\vctools\langapi\undname\undname.cxx @ 3976]: 3976 100f8ff4 85f6 test esi,esi 3976 100f8ff6 741b je DllX10User!UnDecorator::getFunctionIndirectType+0x3f5 (100f9013) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x3da [f:\dd\vctools\langapi\undname\undname.cxx @ 3977]: 3977 100f8ff8 8b45f8 mov eax,dword ptr [ebp-8] 3977 100f8ffb 8906 mov dword ptr [esi],eax 3977 100f8ffd 8b45fc mov eax,dword ptr [ebp-4] 3977 100f9000 894604 mov dword ptr [esi+4],eax 3983 100f9003 8b4508 mov eax,dword ptr [ebp+8] 3983 100f9006 8b4dd8 mov ecx,dword ptr [ebp-28h] 3983 100f9009 8908 mov dword ptr [eax],ecx 3983 100f900b 8b4ddc mov ecx,dword ptr [ebp-24h] 3983 100f900e 894804 mov dword ptr [eax+4],ecx 3983 100f9011 eb0d jmp DllX10User!UnDecorator::getFunctionIndirectType+0x402 (100f9020) Branch DllX10User!UnDecorator::getFunctionIndirectType+0x3f5 [f:\dd\vctools\langapi\undname\undname.cxx @ 3979]: 3979 100f9013 6a03 push 3 DllX10User!UnDecorator::getFunctionIndirectType+0x3f7 [f:\dd\vctools\langapi\undname\undname.cxx @ 3979]: 3979 100f9015 8b4d08 mov ecx,dword ptr [ebp+8] 3979 100f9018 e86cceffff call DllX10User!DName::DName (100f5e89) DllX10User!UnDecorator::getFunctionIndirectType+0x3ff [f:\dd\vctools\langapi\undname\undname.cxx @ 3979]: 3979 100f901d 8b4508 mov eax,dword ptr [ebp+8] DllX10User!UnDecorator::getFunctionIndirectType+0x402 [f:\dd\vctools\langapi\undname\undname.cxx @ 3979]: 3979 100f9020 5f pop edi 3979 100f9021 5e pop esi DllX10User!UnDecorator::getFunctionIndirectType+0x404 [f:\dd\vctools\langapi\undname\undname.cxx @ 3979]: 3979 100f9022 5b pop ebx DllX10User!UnDecorator::getFunctionIndirectType+0x405 [f:\dd\vctools\langapi\undname\undname.cxx @ 3984]: 3984 100f9023 8be5 mov esp,ebp 3984 100f9025 5d pop ebp 3984 100f9026 c3 ret 解析一下这段反编译代码都是什么意思
07-09
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值