应该有个地方是计算出了3个字节的校验码,作了比较操作。但是不知道具体是哪段代码。
1.[Asm] 纯文本查看 复制代码lea ecx, [esp+310h+var_2F4] ; this
call ??0CString@@QAE@XZ ; CString::CString(void)
lea ecx, [esp+310h+var_2F8] ; this
mov byte ptr [esp+310h+var_4], 7
call ??0CString@@QAE@XZ ; CString::CString(void)
test edi, edi
mov byte ptr [esp+310h+var_4], 8
mov ebp, 1
mov dword ptr [esp+310h+var_2FC], 0
jbe loc_450287
2.
[Asm] 纯文本查看 复制代码push offset a0200000400 ; ":0200000400"
lea ecx, [esp+314h+var_2F8]
call ??4CString@@QAEABV0@PBD@Z ; CString::operator=(char const *)
mov ecx, dword_55990C
mov esi, dword ptr [esp+310h+var_2FC]
lea eax, [esp+310h+var_2F4]
mov ebx, [ecx+58990h]
add ebx, esi
shr ebx, 10h
and ebx, 0FFh
mov edx, ebx
and edx, 0FFh
push edx
push offset a02x ; "%02X"
push eax ; this
call ?Format@CString@@QAAXPBDZZ ; CString::Format(char const *,...)
add esp, 0Ch
lea ecx, [esp+310h+var_2F4]
push ecx
lea ecx, [esp+314h+var_2F8]
call ??YCString@@QAEABV0@ABV0@@Z ; CString::operator+=(CString const &)
mov dl, 0FAh
lea eax, [esp+310h+var_2F4]
sub dl, bl
and edx, 0FFh
push edx
push offset a02x_2 ; "%02X\r\n"
push eax ; this
call ?Format@CString@@QAAXPBDZZ ; CString::Format(char const *,...)
add esp, 0Ch
lea ecx, [esp+310h+var_2F4]
push ecx
lea ecx, [esp+314h+var_2F8]
call ??YCString@@QAEABV0@ABV0@@Z ; CString::operator+=(CString const &)
mov eax, [esp+310h+var_2F8]
mov ecx, [eax-8]
push ecx ; unsigned int
push eax ; void *
lea ecx, [esp+318h+var_2E4] ; this
call ?Write@CFile@@UAEXPBXI@Z ; CFile::Write(void const *,uint)
3.
[Asm] 纯文本查看 复制代码loc_450143:
push offset asc_528180 ; ":"
lea ecx, [esp+314h+var_2F8]
call ??4CString@@QAEABV0@PBD@Z ; CString::operator=(char const *)
mov esi, dword ptr [esp+310h+var_2FC]
mov eax, edi
sub eax, esi
mov [esp+310h+var_300], 10h
cmp eax, 10h
ja short loc_45016A
4.
[Asm] 纯文本查看 复制代码loc_45016A:
mov edx, [esp+310h+var_300]
lea eax, [esp+310h+var_2F4]
push edx
push offset a02x ; "%02X"
push eax ; this
call ?Format@CString@@QAAXPBDZZ ; CString::Format(char const *,...)
add esp, 0Ch
lea ecx, [esp+310h+var_2F4]
push ecx
lea ecx, [esp+314h+var_2F8]
call ??YCString@@QAEABV0@ABV0@@Z ; CString::operator+=(CString const &)
and esi, 0FFFFh
lea edx, [esp+310h+var_2F4]
push esi
push offset a04x ; "%04X"
push edx ; this
call ?Format@CString@@QAAXPBDZZ ; CString::Format(char const *,...)
add esp, 0Ch
lea eax, [esp+310h+var_2F4]
lea ecx, [esp+310h+var_2F0]
push offset a00 ; "00"
push eax
push ecx
call ??H@YG?AVCString@@ABV0@PBD@Z ; operator+(CString const &,char const *)
push eax
lea ecx, [esp+314h+var_2F8]
mov byte ptr [esp+314h+var_4], 9
call ??YCString@@QAEABV0@ABV0@@Z ; CString::operator+=(CString const &)
lea ecx, [esp+310h+var_2F0] ; this
mov byte ptr [esp+310h+var_4], 8
call ??1CString@@QAE@XZ ; CString::~CString(void)
mov eax, dword ptr [esp+310h+var_2FC]
xor ebx, ebx
mov bl, ah
add bl, al
mov al, byte ptr [esp+310h+var_300]
add bl, al
5.
[Asm] 纯文本查看 复制代码loc_4501EF:
mov eax, dword ptr [esp+310h+var_2FC]
mov ecx, [esp+310h+lpMem]
xor edx, edx
mov dl, [eax+ecx]
push edx
lea edx, [esp+314h+var_2F4]
push offset a02x ; "%02X"
push edx ; this
call ?Format@CString@@QAAXPBDZZ ; CString::Format(char const *,...)
add esp, 0Ch
lea eax, [esp+310h+var_2F4]
lea ecx, [esp+310h+var_2F8]
push eax
call ??YCString@@QAEABV0@ABV0@@Z ; CString::operator+=(CString const &)
mov ecx, dword ptr [esp+310h+var_2FC]
mov edx, [esp+310h+lpMem]
mov al, [ecx+edx]
add bl, al
mov eax, [esp+310h+var_300]
dec eax
mov [esp+310h+var_300], eax
jnz short loc_450276
6.
[Asm] 纯文本查看 复制代码mov al, bl
lea ecx, [esp+310h+var_2F4]
neg al
and eax, 0FFh
mov ebp, 1
push eax
push offset a02x_2 ; "%02X\r\n"
push ecx ; this
call ?Format@CString@@QAAXPBDZZ ; CString::Format(char const *,...)
add esp, 0Ch
lea edx, [esp+310h+var_2F4]
lea ecx, [esp+310h+var_2F8]
push edx
call ??YCString@@QAEABV0@ABV0@@Z ; CString::operator+=(CString const &)
mov eax, [esp+310h+var_2F8]
mov ecx, [eax-8]
push ecx ; unsigned int
push eax ; void *
lea ecx, [esp+318h+var_2E4] ; this
call ?Write@CFile@@UAEXPBXI@Z ; CFile::Write(void const *,uint)
7.
[Asm] 纯文本查看 复制代码loc_450276:
mov eax, dword ptr [esp+310h+var_2FC]
inc eax
cmp eax, edi
mov dword ptr [esp+310h+var_2FC], eax
jb loc_450089
8.
[Asm] 纯文本查看 复制代码loc_450276:
mov eax, dword ptr [esp+310h+var_2FC]
inc eax
cmp eax, edi
mov dword ptr [esp+310h+var_2FC], eax
jb loc_450089
9.
[Asm] 纯文本查看 复制代码loc_4502CB:
mov eax, [esp+310h+lpMem]
mov edx, [esp+310h+var_2E4]
push edi
push eax
lea ecx, [esp+318h+var_2E4]
call dword ptr [edx+40h]
10.
[Asm] 纯文本查看 复制代码loc_450287:
push offset a00000001ff ; ":00000001FF\r\n"
lea ecx, [esp+314h+var_2F8]
call ??4CString@@QAEABV0@PBD@Z ; CString::operator=(char const *)
mov eax, [esp+310h+var_2F8]
mov ecx, [eax-8]
push ecx ; unsigned int
push eax ; void *
lea ecx, [esp+318h+var_2E4] ; this
call ?Write@CFile@@UAEXPBXI@Z ; CFile::Write(void const *,uint)
lea ecx, [esp+310h+var_2F8] ; this
mov byte ptr [esp+310h+var_4], 7
call ??1CString@@QAE@XZ ; CString::~CString(void)
lea ecx, [esp+310h+var_2F4] ; this
mov byte ptr [esp+310h+var_4], 5
call ??1CString@@QAE@XZ ; CString::~CString(void)
jmp short loc_4502DC
11.
[Asm] 纯文本查看 复制代码loc_4502DC: ; this
lea ecx, [esp+310h+var_2E4]
call ?Close@CFile@@UAEXXZ ; CFile::Close(void)
lea eax, [esp+310h+var_2F0]
lea ecx, [esp+310h+var_2D4]
push eax ; CString *
call sub_4507B0
mov ecx, [eax]
mov byte ptr [esp+310h+var_4], 0Ah
push ecx ; ArgList
push 2AFAh
call sub_4A5A70
mov edx, dword_55990C
add esp, 4
push eax ; Format
push edx ; int
call sub_492B00
add esp, 0Ch
mov byte ptr [esp+310h+var_4], 5
lea ecx, [esp+310h+var_2F0]
jmp loc_4503E4
12.
[Asm] 纯文本查看 复制代码loc_45032C: ; this
lea ecx, [esp+310h+var_300]
call ??0CString@@QAE@XZ ; CString::CString(void)
lea eax, [esp+310h+var_2F0]
mov bl, 0Bh
push eax ; CString *
lea ecx, [esp+314h+var_2D4]
mov byte ptr [esp+314h+var_4], bl
call sub_4507B0
mov ecx, [eax]
mov byte ptr [esp+310h+var_4], 0Ch
push ecx ; ArgList
push 4E25h
call sub_4A5A70
mov edx, dword_55990C
add esp, 4
push eax ; Format
push edx ; int
call sub_492B00
add esp, 0Ch
lea ecx, [esp+310h+var_2F0] ; this
mov byte ptr [esp+310h+var_4], bl
call ??1CString@@QAE@XZ ; CString::~CString(void)
lea eax, [esp+310h+var_2F0]
lea ecx, [esp+310h+var_2D4]
push eax ; CString *
call sub_4507B0
mov ecx, [eax]
mov byte ptr [esp+310h+var_4], 0Dh
push ecx
push 4E25h
call sub_4A5A70
add esp, 4
lea edx, [esp+314h+var_300]
push eax ; char *
push edx ; this
call ?Format@CString@@QAAXPBDZZ ; CString::Format(char const *,...)
add esp, 0Ch
lea ecx, [esp+310h+var_2F0] ; this
mov byte ptr [esp+310h+var_4], bl
call ??1CString@@QAE@XZ ; CString::~CString(void)
mov eax, [esp+310h+var_300]
push 30h ; '0' ; unsigned int
push 0 ; char *
push eax ; char *
mov ecx, ebp ; this
call sub_403C90
mov byte ptr [esp+310h+var_4], 5
lea ecx, [esp+310h+var_300] ; this
13.
[Asm] 纯文本查看 复制代码loc_45041C: ; this
lea ecx, [esp+30Ch+var_300]
call ??0CString@@QAE@XZ ; CString::CString(void)
lea edx, [esp+30Ch+var_2F0]
mov bl, 0Eh
push edx ; CString *
lea ecx, [esp+310h+var_170]
mov byte ptr [esp+310h+var_4], bl
call sub_4507B0
mov eax, [eax]
mov byte ptr [esp+30Ch+var_4], 0Fh
push eax ; ArgList
push 2AF9h
call sub_4A5A70
mov ecx, dword_55990C
add esp, 4
push eax ; Format
push ecx ; int
call sub_492B00
add esp, 0Ch
lea ecx, [esp+30Ch+var_2F0] ; this
mov byte ptr [esp+30Ch+var_4], bl
call ??1CString@@QAE@XZ ; CString::~CString(void)
lea edx, [esp+30Ch+var_2F0]
lea ecx, [esp+30Ch+var_170]
push edx ; CString *
call sub_4507B0
mov eax, [eax]
mov byte ptr [esp+30Ch+var_4], 10h
push eax
push 2AF9h
call sub_4A5A70
add esp, 4
lea ecx, [esp+310h+var_300]
push eax ; char *
push ecx ; this
call ?Format@CString@@QAAXPBDZZ ; CString::Format(char const *,...)
add esp, 0Ch
lea ecx, [esp+30Ch+var_2F0] ; this
mov byte ptr [esp+30Ch+var_4], bl
call ??1CString@@QAE@XZ ; CString::~CString(void)
mov edx, [esp+30Ch+var_300]
push 30h ; '0' ; unsigned int
push 0 ; char *
push edx ; char *
mov ecx, ebp ; this
call sub_403C90
lea ecx, [esp+30Ch+var_300] ; this
mov byte ptr [esp+30Ch+var_4], 1
call ??1CString@@QAE@XZ ; CString::~CString(void)