308513523 发表于 2012-6-9 09:40:35

这段代码我怎么运行不了啊

#include <Thread.au3>
#include <Array.au3>

$hDll = DllOpen("iphlpapi.dll")

Const $pSendARP = _RTGetProcAddress("Iphlpapi.dll", "SendARP")
Const $pinet_addr = _RTGetProcAddress("Ws2_32.dll", "inet_addr")
Const $tagSEND_ARP = "char IpAddress;ubyte MacAddress;dword AddrLen;dword Error"

$pStartAddr = _RTVirtualAlloc(512)
$bCode = "0x" & _
      "55" & _                                        ; push ebp
      "8BEC" & _                                    ; mov ebp, esp
      "FF7508" & _                                    ; push dword ptr
      "B8" & _RTLongPtrToBytes($pinet_addr) & _       ; mov eax, Ws2_32.inet_addr
      "FFD0" & _                                    ; call eax
      "8B5D08" & _                                    ; mov ebx, dword ptr
      "53" & _                                        ; push ebx
      "8D7B18" & _                                    ; lea edi, dword ptr
      "C70708000000" & _                              ; mov dword ptr , 8
      "57" & _                                        ; push edi
      "8D7B10" & _                                    ; lea edi, dword ptr
      "57" & _                                        ; push edi
      "6A00" & _                                    ; push 0
      "50" & _                                        ; push eax
      "B8" & _RTLongPtrToBytes($pSendARP) & _         ; mov eax, Iphlpapi.SendARP
      "FFD0" & _                                    ; call eax
      "5B" & _                                        ; pop ebx
      "89431C" & _                                    ; mov dword ptr , eax
      "5D" & _                                        ; pop ebp
      "C20400"                                        ; ret 4

_RTInject($pStartAddr, $bCode)

Local $aBuffer, $iUBound = UBound($aBuffer)
Local $aThread[$iUBound], $aResult[$iUBound], $iTimer = TimerInit()

For $i = 0 To UBound($aBuffer) - 1
      $aBuffer[$i] = DllStructCreate($tagSEND_ARP)
      DllStructSetData($aBuffer[$i], "IpAddress", "192.168.0." & $i)

      $aThread[$i] = _RTCreateThread($pStartAddr, DllStructGetPtr($aBuffer[$i]))
Next

For $i = 0 To UBound($aBuffer) - 1
      _RTWaitForObject($aThread[$i])
      _RTCloseHandle($aThread[$i])

      $aResult[$i] = DllStructGetData($aBuffer[$i], "IpAddress")
      $aResult[$i] = DllStructGetData($aBuffer[$i], "MacAddress")
      $aResult[$i] = DllStructGetData($aBuffer[$i], "Error")

      $aBuffer[$i] = 0
Next
DllClose($hDll)
_Arraydisplay($aResult, TimerDiff($iTimer))

308513523 发表于 2012-6-9 09:49:33

{:face (189):}那位大侠 来指导下

308513523 发表于 2012-6-9 09:57:48

{:face (229):}新人求指导

ooxxgod 发表于 2012-6-9 13:30:35

<Thread.au3>这个公用函数我 编译器没 不知道那个版本有

haijie1223 发表于 2012-6-9 13:58:30

汇编啊,看不懂

hzxymkb 发表于 2012-6-11 15:10:26

这类标题的问题直接咔嚓!
页: [1]
查看完整版本: 这段代码我怎么运行不了啊