各位大佬帮我看几个函数,看看这几个函数里哪个是计算校验码的呢?

查看 33|回复 1
作者:durongze   
下面这13个函数应该有一个肯定是计算检验码的,哪位大佬可以帮忙看下是哪个函数呢?
应该有个地方是计算出了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)

代码, 文本

durongze
OP
  

[Asm] 纯文本查看 复制代码loc_4504F2:
lea     ecx, [esp+304h+var_170]
mov     [esp+304h+var_4], 0FFFFFFFFh
call    sub_4506E0
mov     ecx, [esp+304h+var_C]
pop     ebp
mov     large fs:0, ecx
add     esp, 300h
retn
; } // starts at 44FD10
sub_44FD10 endp
这个应该是填充ff的函数。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部