当前位置: 代码迷 >> 汇编语言 >> 帮小弟我看这段反汇编代码的作用,主要是queryperformancecounter的用法,有点长
  详细解决方案

帮小弟我看这段反汇编代码的作用,主要是queryperformancecounter的用法,有点长

热度:249   发布时间:2016-05-02 04:27:47.0
帮我看这段反汇编代码的作用,主要是queryperformancecounter的用法,有点长
CPU Disasm
Address   Hex dump                   Command                                           Comments
004101A6  |.  8B0D 84004200          |MOV ECX,DWORD PTR DS:[420084]
004101AC  |.  E3 20                  |JECXZ SHORT 004101CE
004101AE  |.  83F9 0A                |CMP ECX,0A
004101B1  |.  76 0F                  |JBE SHORT 004101C2
004101B3  |.  C705 38004200 03000000 |MOV DWORD PTR DS:[Linkarea],3
004101BD  |.  E9 97010000            |JMP 00410359     退出程序
004101C2  |>  B8 88004200            |MOV EAX,OFFSET 00420088
004101C7  |>  FF30                   |/PUSH DWORD PTR DS:[EAX]
004101C9  |.  83C0 04                ||ADD EAX,4
004101CC  |.^ E2 F9                  |\LOOP SHORT 004101C7
004101CE  |>  8925 64014200          |MOV DWORD PTR DS:[420164],ESP
004101D4  |.  68 68014200            |PUSH OFFSET 00420168
004101D9  |.  E8 A7030000            |CALL <JMP.&KERNEL32.QueryPerformanceCounter>     ; Jump to kernel32.QueryPerformanceCounter
004101DE  |.  A1 6C004200            |MOV EAX,DWORD PTR DS:[42006C]
004101E3  |.  8B0D 70004200          |MOV ECX,DWORD PTR DS:[420070]
004101E9  |.  8B15 74004200          |MOV EDX,DWORD PTR DS:[420074]
004101EF  |.  8B1D 78004200          |MOV EBX,DWORD PTR DS:[420078]
004101F5  |.  8B35 7C004200          |MOV ESI,DWORD PTR DS:[42007C]
004101FB  |.  8B3D 80004200          |MOV EDI,DWORD PTR DS:[420080]
00410201  |.  90                     |NOP
00410202  |.  90                     |NOP
00410203  |.  90                     |NOP
00410204  |.  90                     |NOP
00410205  |.  90                     |NOP
00410206  |.  90                     |NOP
00410207  |.  90                     |NOP
00410208  |.  90                     |NOP
00410209  |.  90                     |NOP
0041020A  |.  90                     |NOP
0041020B  |.  FF15 68004200          |CALL DWORD PTR DS:[420068]
00410211  |.  90                     |NOP
00410212  |.  90                     |NOP
00410213  |.  90                     |NOP
00410214  |.  90                     |NOP
00410215  |.  90                     |NOP
00410216  |.  90                     |NOP
00410217  |.  90                     |NOP
00410218  |.  90                     |NOP
00410219  |.  90                     |NOP
0041021A  |.  90                     |NOP
0041021B  |.  A3 6C004200            |MOV DWORD PTR DS:[42006C],EAX
00410220  |.  890D 70004200          |MOV DWORD PTR DS:[420070],ECX
00410226  |.  8915 74004200          |MOV DWORD PTR DS:[420074],EDX
0041022C  |.  891D 78004200          |MOV DWORD PTR DS:[420078],EBX
00410232  |.  8935 7C004200          |MOV DWORD PTR DS:[42007C],ESI
00410238  |.  893D 80004200          |MOV DWORD PTR DS:[420080],EDI
0041023E  |.  68 70014200            |PUSH OFFSET 00420170
00410243  |.  E8 3D030000            |CALL <JMP.&KERNEL32.QueryPerformanceCounter>     ; Jump to kernel32.QueryPerformanceCounter
00410248  |.  A1 6C004200            |MOV EAX,DWORD PTR DS:[42006C]
0041024D  |.  8B0D 70004200          |MOV ECX,DWORD PTR DS:[420070]
00410253  |.  8B15 74004200          |MOV EDX,DWORD PTR DS:[420074]
00410259  |.  8B1D 78004200          |MOV EBX,DWORD PTR DS:[420078]
0041025F  |.  8B35 7C004200          |MOV ESI,DWORD PTR DS:[42007C]
00410265  |.  8B3D 80004200          |MOV EDI,DWORD PTR DS:[420080]
0041026B  |.  90                     |NOP
0041026C  |.  90                     |NOP
0041026D  |.  90                     |NOP
0041026E  |.  90                     |NOP
0041026F  |.  90                     |NOP
00410270  |.  90                     |NOP
00410271  |.  90                     |NOP
00410272  |.  90                     |NOP
00410273  |.  90                     |NOP
00410274  |.  90                     |NOP
00410275  |.  90                     |NOP
00410276  |.  90                     |NOP
00410277  |.  90                     |NOP
00410278  |.  90                     |NOP
00410279  |.  90                     |NOP
0041027A  |.  90                     |NOP
0041027B  |.  90                     |NOP
0041027C  |.  90                     |NOP
0041027D  |.  90                     |NOP
0041027E  |.  90                     |NOP
0041027F  |.  A3 6C004200            |MOV DWORD PTR DS:[42006C],EAX
00410284  |.  890D 70004200          |MOV DWORD PTR DS:[420070],ECX
0041028A  |.  8915 74004200          |MOV DWORD PTR DS:[420074],EDX
00410290  |.  891D 78004200          |MOV DWORD PTR DS:[420078],EBX
00410296  |.  8935 7C004200          |MOV DWORD PTR DS:[42007C],ESI
0041029C  |.  893D 80004200          |MOV DWORD PTR DS:[420080],EDI
004102A2  |.  68 78014200            |PUSH OFFSET 00420178
004102A7  |.  E8 D9020000            |CALL <JMP.&KERNEL32.QueryPerformanceCounter>     ; Jump to kernel32.QueryPerformanceCounter
004102AC  |.  A1 70014200            |MOV EAX,DWORD PTR DS:[420170]
004102B1  |.  8B0D 74014200          |MOV ECX,DWORD PTR DS:[420174]
004102B7  |.  03C0                   |ADD EAX,EAX
004102B9  |.  13C9                   |ADC ECX,ECX
004102BB  |.  2B05 68014200          |SUB EAX,DWORD PTR DS:[420168]
004102C1  |.  1B0D 6C014200          |SBB ECX,DWORD PTR DS:[42016C]
004102C7  |.  2B05 78014200          |SUB EAX,DWORD PTR DS:[420178]
004102CD  |.  1B0D 7C014200          |SBB ECX,DWORD PTR DS:[42017C]
004102D3  |.  A3 B4004200            |MOV DWORD PTR DS:[4200B4],EAX
004102D8  |.  890D B8004200          |MOV DWORD PTR DS:[4200B8],ECX
004102DE  |.  8BC4                   |MOV EAX,ESP
004102E0  |.  2B05 64014200          |SUB EAX,DWORD PTR DS:[420164]
004102E6  |.  A3 B0004200            |MOV DWORD PTR DS:[4200B0],EAX
004102EB  |.  E8 83020000            |CALL <JMP.&KERNEL32.GetLastError>                ; [KERNEL32.GetLastError
004102F0  |.  A3 60004200            |MOV DWORD PTR DS:[420060],EAX
004102F5  |.  8B2D 60014200          |MOV EBP,DWORD PTR DS:[420160]
004102FB  |.  8B25 5C014200          |MOV ESP,DWORD PTR DS:[42015C]
00410301  |.  C705 68004200 00000000 |MOV DWORD PTR DS:[420068],0
0041030B  |.  90                     |NOP
0041030C  |.  CC                     |INT3
0041030D  |.  90                     |NOP

------解决思路----------------------
QueryPerformanceCounter
The QueryPerformanceCounter function retrieves the current value of the high-resolution performance counter, if one exists. 

BOOL QueryPerformanceCounter(
  LARGE_INTEGER *lpPerformanceCount   // pointer to counter value
);
 
Parameters
lpPerformanceCount 
Pointer to a variable that the function sets, in counts, to the current performance-counter value. If the installed hardware does not support a high-resolution performance counter, this parameter can be to zero. 
Return Values
If the installed hardware supports a high-resolution performance counter, the return value is nonzero.

If the installed hardware does not support a high-resolution performance counter, the return value is zero. 

QuickInfo
  Windows NT: Requires version 3.1 or later.
  Windows: Requires Windows 95 or later.
  Windows CE: Unsupported.
  Header: Declared in winbase.h.
  Import Library: Use kernel32.lib.

See Also
Timers Overview, Timer Functions, QueryPerformanceFrequency