以下代码是IDA反汇编DLL的一个输出函数,请教如何分析输入参数和返回值啊?
我是新兵,恳请高手们指导。
.text:10001530 ; =============== S U B R O U T I N E =======================================
.text:10001530
.text:10001530 ; Attributes: bp-based frame
.text:10001530
.text:10001530 GetData_0 proc near ; CODE XREF: GetDataj
.text:10001530
.text:10001530 var_60 = byte ptr -60h
.text:10001530 var_20 = dword ptr -20h
.text:10001530 NumberOfBytesRead= dword ptr -1Ch
.text:10001530 var_18 = qword ptr -18h
.text:10001530 Buffer = word ptr -10h
.text:10001530
.text:10001530 push ebp
.text:10001531 mov ebp, esp
.text:10001533 sub esp, 60h
.text:10001536 push ebx
.text:10001537 push esi
.text:10001538 push edi
.text:10001539 lea edi, [ebp+var_60]
.text:1000153C mov ecx, 18h
.text:10001541 mov eax, 0CCCCCCCCh
.text:10001546 rep stosd
.text:10001548 mov esi, esp
.text:1000154A push 0 ; lpOverlapped
.text:1000154C lea eax, [ebp+NumberOfBytesRead]
.text:1000154F push eax ; lpNumberOfBytesRead
.text:10001550 push 10h ; nNumberOfBytesToRead
.text:10001552 lea ecx, [ebp+Buffer]
.text:10001555 push ecx ; lpBuffer
.text:10001556 mov edx, hDevice
.text:1000155C push edx ; hFile
.text:1000155D call ds:ReadFile
.text:10001563 cmp esi, esp
.text:10001565 call __chkesp
.text:1000156A test eax, eax
.text:1000156C jz short loc_100015AF
.text:1000156E mov esi, esp
.text:10001570 push 0 ; lpOverlapped
.text:10001572 lea eax, [ebp+NumberOfBytesRead]
.text:10001575 push eax ; lpNumberOfBytesRead
.text:10001576 push 10h ; nNumberOfBytesToRead
.text:10001578 lea ecx, [ebp+Buffer]
.text:1000157B push ecx ; lpBuffer
.text:1000157C mov edx, hDevice
.text:10001582 push edx ; hFile
.text:10001583 call ds:ReadFile
.text:10001589 cmp esi, esp
.text:1000158B call __chkesp
.text:10001590 movsx eax, [ebp+Buffer]
.text:10001594 mov [ebp+var_20], eax
.text:10001597 fild [ebp+var_20]
.text:1000159A fmul ds:dbl_10111130
.text:100015A0 fmul ds:dbl_10111120
.text:100015A6 fdiv ds:dbl_10111110
.text:100015AC fstp [ebp+var_18]
.text:100015AF
.text:100015AF loc_100015AF: ; CODE XREF: GetData_0+3Cj
.text:100015AF fld [ebp+var_18]
.text:100015B2 pop edi
.text:100015B3 pop esi
.text:100015B4 pop ebx
.text:100015B5 add esp, 60h
.text:100015B8 cmp ebp, esp
.text:100015BA call __chkesp
.text:100015BF mov esp, ebp
.text:100015C1 pop ebp
.text:100015C2 retn
.text:100015C2 GetData_0 endp
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!