📄 2.asm
字号:
.486
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\masm32.inc
include \masm32\include\gdi32.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\Comctl32.inc
include \masm32\include\comdlg32.inc
include \masm32\include\shell32.inc
include \masm32\include\oleaut32.inc
include \masm32\include\dialogs.inc
include \masm32\macros\macros.asm
include \masm32\include\msvcrt.inc
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\Comctl32.lib
includelib \masm32\lib\comdlg32.lib
includelib \masm32\lib\shell32.lib
includelib \masm32\lib\oleaut32.lib
includelib \masm32\lib\msvcrt.lib
MakeProcessSnapshot proto
PostMessageX proto :DWORD, :DWORD, :DWORD, :DWORD
AutoClick proto :DWORD
Bot proto :DWORD
.data
TargetProcess db "Neuz.exe",0
WindowName db "FLYFF",0
ClassName db "D3D Window",0
LibraryName db "user32.dll",0
FxnName db "PostMessageA",0
.data?
SnapShotHandle dword ?
ExeName dword ?
TargetHandle dword ?
hWnd dword ?
PID dword ?
PIDFromWindow dword ?
PostMessageAddr dword ?
ClickThreadID dword ?
BotThreadID dword ?
ClickThread dword ?
BotThread dword ?
EventHandle dword 2 dup (?)
.code
Start:
xor ebx, ebx
invoke AllocConsole
SetConsoleCaption "Open Source Slugsnack FLYFF Bot"
invoke LoadLibrary, addr LibraryName
invoke GetProcAddress, eax, addr FxnName
add eax, 5
mov PostMessageAddr, eax
print "Waiting for target process."
invoke MakeProcessSnapshot
FindWindowLoop:
invoke Sleep, 1
invoke FindWindow, addr ClassName, addr WindowName
test eax, eax
jz FindWindowLoop
mov hWnd, eax
print "Handle to FLYFF's window has found to be : 0x"
print uhex$(hWnd), 13, 10
mov esi, offset EventHandle
mov [esi], rv(CreateEvent, ebx, FALSE, FALSE, ebx)
mov [esi+4], rv(CreateEvent, ebx, FALSE, FALSE, ebx)
mov ClickThread, rv(CreateThread, ebx, ebx, addr AutoClick, [esi], ebx, addr ClickThreadID)
mov BotThread, rv(CreateThread, ebx, ebx, addr Bot, [esi+4], ebx, addr BotThreadID)
invoke WaitForMultipleObjects, 2, addr EventHandle, TRUE, INFINITE
invoke CloseHandle, [esi]
invoke CloseHandle, [esi+4]
invoke CloseHandle, [ClickThread]
invoke CloseHandle, [BotThread]
invoke CloseHandle, TargetHandle
invoke FreeConsole
invoke ExitProcess, ebx
MakeProcessSnapshot proc uses edi esi ebx
LOCAL ProcessStructure:PROCESSENTRY32
NextSnapshot:
invoke Sleep, 1
invoke CreateToolhelp32Snapshot, TH32CS_SNAPPROCESS, ebx
mov SnapShotHandle, eax
mov eax, sizeof ProcessStructure
mov ProcessStructure.dwSize, eax
invoke Process32First, SnapShotHandle, addr ProcessStructure
LoopFxn:
invoke Sleep, 1
print "."
invoke Process32Next, SnapShotHandle, addr ProcessStructure
invoke GetLastError
cmp eax, ERROR_NO_MORE_FILES
je End_Of_Structure
lea esi, ProcessStructure.szExeFile
mov edi, len(addr TargetProcess)
mov eax, len(esi)
invoke BinSearch, ebx, esi, eax, addr TargetProcess, edi
cmp eax, -1
je LoopFxn
jmp ProcessFound
End_Of_Structure:
invoke SetLastError, ERROR_SUCCESS
jmp NextSnapshot
ProcessFound:
mov eax, ProcessStructure.th32ProcessID
mov PID, eax
cls
print " ", 13, 10, 13, 10
print " ======================================================================", 13, 10
print " Coded in MASM32 by Slugsnack of XMEGaming.net", 13, 10
print " ======================================================================", 13, 10, 13, 10, 13, 10, 9, 9
print "================ HOTKEYS ================", 13, 10, 13, 10, 9, 9
print "F10 = Close app", 13, 10, 9, 9
print "F11 = Send F5/Enter", 13, 10, 9, 9
print "F12 = Send clicks", 13, 10, 13, 10, 13, 10
print "Process ID of target process : "
print str$(PID), 13, 10
invoke OpenProcess, PROCESS_ALL_ACCESS, TRUE, PID
mov TargetHandle, eax
print "Handle of target process : "
print str$(TargetHandle), 13, 10, 13, 10
ret
MakeProcessSnapshot endp
AutoClick proc ClickEventHandle:DWORD
LOCAL Coords:POINT
ToggleClick:
invoke GetAsyncKeyState, 7Bh
test eax, eax
jnz EndClickThread
invoke Sleep, 500
invoke GetAsyncKeyState, 79h
test eax, eax
jnz ClickLoop
jmp ToggleClick
ClickLoop:
invoke GetAsyncKeyState, 7Bh
test eax, eax
jnz EndClickThread
invoke GetCursorPos, addr Coords
mov eax, Coords.x
rol eax, 16
mov ecx, Coords.y
mov ax, cx
push eax
invoke PostMessageX, hWnd, WM_LBUTTONDOWN, MK_LBUTTON, eax
pop eax
invoke PostMessageX, hWnd, WM_LBUTTONUP, MK_LBUTTON, eax
invoke Sleep, 100
invoke GetAsyncKeyState, 79h
test eax, eax
jnz ToggleClick
jmp ClickLoop
EndClickThread:
invoke SetEvent, ClickEventHandle
ret
AutoClick endp
Bot proc BotEventHandle:DWORD
LOCAL wParam1:WORD
LOCAL wParam2:WORD
LOCAL lParam1:WORD
LOCAL lParam2:WORD
mov wParam1, 74h
mov wParam2, 0Dh
invoke MapVirtualKey, wParam1, MAPVK_VK_TO_VSC
mov lParam1, ax
invoke MapVirtualKey, wParam2, MAPVK_VK_TO_VSC
mov lParam2, ax
ToggleBot:
invoke GetAsyncKeyState, 7Bh
test eax, eax
jnz EndBotThread
invoke Sleep, 500
invoke GetAsyncKeyState, 7Ah
test eax, eax
jnz BotLoop
jmp ToggleBot
BotLoop:
invoke GetAsyncKeyState, 7Bh
test eax, eax
jnz EndBotThread
invoke Sleep, 100
invoke PostMessageX, hWnd, WM_KEYDOWN, wParam1, lParam1
invoke PostMessageX, hWnd, WM_KEYDOWN, wParam2, lParam2
invoke GetAsyncKeyState, 7Ah
test eax, eax
jnz ToggleBot
jmp BotLoop
EndBotThread:
invoke SetEvent, BotEventHandle
ret
Bot endp
PostMessageX proc W:DWORD, X:DWORD, Y:DWORD, Z:DWORD
option prologue:none
option epilogue:none
push ebp
mov ebp, esp
jmp PostMessageAddr
PostMessageX endp
end Start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -