PDA

Просмотр полной версии : [Auto it] Отправка пакетов


Goooooogle
14.09.2012, 10:10
Всем привет сегодня я перевел статью об отправке пакетов
Оригинал ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
Например некоторые функции можно использовать при отправке пакетов (например в ботах или скиллсендерах)
;////Код для отправки пакетов

#include <GUIButton.au3>
#include <GUIToolbar.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <NomadMemory.au3>
#include <Array.au3>

Global $kernel32 = DllOpen('kernel32.dll')
Global $pid = ProcessExists('elementclient.exe')
global $realBaseAddress = 0x0098657C
global $sendPacketFunction = 0x005BD7B0

;//Сброс тагерта
sendDeselectPacket($pid)

DllClose($kernel32)


Func selectTarget($targetId, $pid)
;//выбор NPC/Mob/Player по id тагерта
local $packet, $packetSize

$packet = '0200'
$packet &= _hex($targetId)
$packetSize = 6

sendPacket($packet, $packetSize, $pid)
EndFunc

Func regularAttack($afterSkill, $pid)
;//начать обычную атаку
;//начать обычную атаку после запуска скила
local $packet, $packetSize

$packet = '0300'
$packet &= _hex($afterSkill, 2)
$packetSize = 3

sendPacket($packet, $packetSize, $pid)
EndFunc

Func rezToTown($pid)
;//реснуться в городе после смерти
local $packet, $packetSize

$packet = '0400'
$packetSize = 2

sendPacket($packet, $packetSize, $pid)
EndFunc

Func rezWithScroll($pid)
;//реснуться свитком воскрешения
local $packet, $packetSize

$packet = '0500'
$packetSize = 2

sendPacket($packet, $packetSize, $pid)
EndFunc

Func pickUpItem($uniqueItemId, $itemTypeId, $pid)
;//Picks up an item. uniqueItemId is the unique id belonging
;//to the individual item on the ground. itemTypeId is the id for
;//the type of item it is. This would be the same as the last
;//part in the url on pwdatabase. example:
;//[Ссылки могут видеть только зарегистрированные и активированные пользователи]
;//the itemTypeId for gold is 3044.

local $packet, $packetSize

$packet = '0600'
$packet &= _hex($uniqueItemId)
$packet &= _hex($itemTypeId)
$packetSize = 10

sendPacket($packet, $packetSize, $pid)
EndFunc

Func deselectTarget($pid)
;//сброс тагерта
local $packet, $packetSize

$packet = '0800'
$packetSize = 2

sendPacket($packet, $packetSize, $pid)
EndFunc



Func swapItemInInv($invIndex1, $invIndex2, $pid)
;//Swaps the items in the two given inventory locations
;//The index for a standard unexpanded inventory runs from
;//0, top left, to 31, bottom right
local $packet, $packetSize

$packet = '0C00'
$packet &= _hex($invIndex1, 2)
$packet &= _hex($invIndex2, 2)
$packetSize = 4

sendPacket($packet, $packetSize, $pid)
EndFunc




Func swapEquip($equipIndex1, $equipIndex2, $pid)

local $packet, $packetSize

$packet = '1000'
$packet &= _hex($equipIndex1, 2)
$packet &= _hex($equipIndex2, 2)
$packetSize = 4

sendPacket($packet, $packetSize, $pid)
EndFunc



Func dropGold($amount, $pid)
;//выкинуть денги на пол $ amout количество
local $packet, $packetSize

$packet = '1400'
$packet &= _hex($amount)
$packetSize = 6

sendPacket($packet, $packetSize, $pid)
EndFunc



Func increaseStatsBy($con, $int, $str, $agi, $pid)
;//Use this after level up to increase your stats.

local $packet, $packetSize

$packet = '1600'
$packet &= _hex($con)
$packet &= _hex($int)
$packet &= _hex($str)
$packet &= _hex($agi)

$packetSize = 18

sendPacket($packet, $packetSize, $pid)
EndFunc

Func inviteParty($playerId, $pid)
;//Invite playerId to your party.
local $packet, $packetSize

$packet = '1B00'
$packet &= _hex($playerId)
$packetSize = 6

sendPacket($packet, $packetSize, $pid)
EndFunc

Func acceptPartyInvite($playerId, $partyInviteCounter, $pid)
;//Accept an invite from playerId. partyInviteCounter is a counter that
;//is kept based on the amount of party invites you've had. See post
;//on how to find that value.
local $packet, $packetSize

$packet = '1C00'
$packet &= _hex($playerId)
$packet &= _hex($partyInviteCounter)

$packetSize = 10

sendPacket($packet, $packetSize, $pid)
EndFunc

Func refusePartyInvite($playerId, $pid)
;//Refuses a party invite from playerId
local $packet, $packetSize

$packet = '1D00'
$packet &= _hex($playerId)
$packetSize = 6

sendPacket($packet, $packetSize, $pid)
EndFunc

Func leaveParty($pid)
;оставить свою пати
local $packet, $packetSize

$packet = '1E00'
$packetSize = 2

sendPacket($packet, $packetSize, $pid)
EndFunc

Func evictFromParty($playerId, $pid)
;//кик игрока из пати по его id
local $packet, $packetSize

$packet = '1F00'
$packet &= _hex($playerId)
$packetSize = 6

sendPacket($packet, $packetSize, $pid)
EndFunc

Func startNpcDialogue($npcId, $pid)
;//открыть окно диалога с нпс

local $packet, $packetSize

$packet = '2300'
$packet &= _hex($npcId)
$packetSize = 6

sendPacket($packet, $packetSize, $pid)
EndFunc

Func useItem($index, $itemTypeId, $pid, $equip=0)

local $packet, $packetSize

$packet = '2800'
$packet &= _hex($equip, 2)
$packet &= '01'
$packet &= _hex($index, 2)
$packet &= '00'
$packet &= _hex($itemTypeId)

$packetSize = 10

sendPacket($packet, $packetSize, $pid)
EndFunc

Func useSkill($skillId, $targetId, $pid)
;юзануть скил отлично подходит для скиллсендера
local $packet, $packetSize

$packet = '2900'
$packet &= _hex($skillId)
$packet &= '0001'
$packet &= _hex($targetId)

$packetSize = 12

sendPacket($packet, $packetSize, $pid)
EndFunc

Func cancelAction($pid)
;//отменить каст скила
local $packet, $packetSize

$packet = '2A00'

$packetSize = 2

sendPacket($packet, $packetSize, $pid)
EndFunc

Func startMeditating($pid)
;//сесть в медитацию
local $packet, $packetSize

$packet = '2E00'

$packetSize = 2

sendPacket($packet, $packetSize, $pid)
EndFunc

Func stopMeditating($pid)
;//встать из медитации
local $packet, $packetSize

$packet = '2F00'

$packetSize = 2

sendPacket($packet, $packetSize, $pid)
EndFunc

Func useEmotion($emoteIndex, $pid)

local $packet, $packetSize

$packet = '3000'
$packet &= _hex($emoteIndex, 4)

$packetSize = 4

sendPacket($packet, $packetSize, $pid)
EndFunc

Func beIntimate($pid)
;//поцелуй при поддержке на руках
local $packet, $packetSize

$packet = '3000'
$packet &= '1D00'

$packetSize = 4

sendPacket($packet, $packetSize, $pid)
EndFunc



Func swapItemInBank($bankIndex1, $bankIndex2, $pid)
;положить итем в банк
local $packet, $packetSize

$packet = '3800'
$packet &= '03'
$packet &= _hex($bankIndex1, 2)
$packet &= _hex($bankIndex2, 2)

$packetSize = 5

sendPacket($packet, $packetSize, $pid)
EndFunc

Func splitStackItemInBank($bankIndexSource, $bankIndexDestination, $amount, $pid)

local $packet, $packetSize

$packet = '3900'
$packet &= '03'
$packet &= _hex($bankIndexSource, 2)
$packet &= _hex($bankIndexDestination, 2)
$packet &= _hex($amount, 4)

$packetSize = 7

sendPacket($packet, $packetSize, $pid)
EndFunc

Func swapItemBankAndInv($bankIndex, $invIndex, $pid)

local $packet, $packetSize

$packet = '3A00'
$packet &= '03'
$packet &= _hex($bankIndex, 2)
$packet &= _hex($invIndex, 2)

$packetSize = 5

sendPacket($packet, $packetSize, $pid)
EndFunc


Func initiateSettingUpCatShop($pid)
;//Starts setting up cat shop. This function is needed
;//before setting up the catshop.
local $packet, $packetSize

$packet = '5400'

$packetSize = 2

sendPacket($packet, $packetSize, $pid)
EndFunc

Func toggleFashionDisplay($pid)
;//Switches between fashion and regular appearance.
local $packet, $packetSize

$packet = '5500'

$packetSize = 2

sendPacket($packet, $packetSize, $pid)
EndFunc

Func acceptRez($pid)
;//принять рес то приста
local $packet, $packetSize

$packet = '5700'

$packetSize = 2

sendPacket($packet, $packetSize, $pid)
EndFunc

Func increaseFlySpeed($start, $pid)
;/ускорение на полете
local $packet, $packetSize

$packet = '5A00'
$packet &= _hex($start)

$packetSize = 6

sendPacket($packet, $packetSize, $pid)
EndFunc



Func acceptRequestByMaleToCarryYou($playerId, $pid)

local $packet, $packetSize

$packet = '6100'
$packet &= _hex($playerId)
$packet &= '00000000'

$packetSize = 10

sendPacket($packet, $packetSize, $pid)
EndFunc

Func releaseCarryMode($pid)

local $packet, $packetSize

$packet = '6200'

$packetSize = 2

sendPacket($packet, $packetSize, $pid)
EndFunc



Func summonPet($petIndex, $pid)
;вызов пета
local $packet, $packetSize

$packet = '6400'
$packet &= _hex($petIndex)

$packetSize = 6

sendPacket($packet, $packetSize, $pid)
EndFunc

Func recallPet($pid)
;//убрать пета
local $packet, $packetSize

$packet = '6500'

$packetSize = 2

sendPacket($packet, $packetSize, $pid)
EndFunc

Func setPetMode($petMode, $pid)
;//petMode=0 -> ?
;//petMode=1 -> атака
;//petMode=2 -> защита
local $packet, $packetSize

$packet = '6700'
$packet &= '00000000'
$packet &= '03000000'
$packet &= _hex($petMode)

$packetSize = 14

sendPacket($packet, $packetSize, $pid)
EndFunc



Func setPetStop($pid)

local $packet, $packetSize

$packet = '6700'
$packet &= '00000000'
$packet &= '02000000'
$packet &= '01000000'

$packetSize = 14

sendPacket($packet, $packetSize, $pid)
EndFunc

Func setPetAttack($targetId, $pid)
;//атаковать петом
local $packet, $packetSize

$packet = '6700'
$packet &= _hex($targetId)
$packet &= '01'
$packet &= '00000000'

$packetSize = 11

sendPacket($packet, $packetSize, $pid)
EndFunc

Func setPetUseSkill($targetId, $skillId, $pid)
;//юзануть скилл пета
local $packet, $packetSize

$packet = '6700'
$packet &= _hex($targetId)
$packet &= '04000000'
$packet &= _hex($skillId)
$packet &= '00'

$packetSize = 15

sendPacket($packet, $packetSize, $pid)
EndFunc

Func setPetStandardSkill($skillId, $pid)
local $packet, $packetSize

$packet = '6700'
$packet &= '00000000'
$packet &= '05000000'
$packet &= _hex($skillId)

$packetSize = 14

sendPacket($packet, $packetSize, $pid)
EndFunc

Func useGenieSkill($skillId,$targetId, $pid)

local $packet, $packetSize

$packet = '7400'
$packet &= _hex($skillId, 4)
$packet &= '0001'
$packet &= _hex($targetId)

$packetSize = 10

sendPacket($packet, $packetSize, $pid)
EndFunc

Func feedEquippedGenie($invIndex, $amount, $pid)

local $packet, $packetSize

$packet = '7500'
$packet &= _hex($invIndex, 2)
$packet &= _hex($amount)

$packetSize = 7

sendPacket($packet, $packetSize, $pid)
EndFunc

Func acceptQuest($questId, $pid)
;//получить квест
local $packet, $packetSize

$packet = '2500'
$packet &= '07000000'
$packet &= '04000000'
$packet &= _hex($questId)

$packetSize = 14

sendPacket($packet, $packetSize, $pid)
EndFunc

Func handInQuest($questId,$optionIndex, $pid)

local $packet, $packetSize

$packet = '2500'
$packet &= '06000000'
$packet &= '08000000'
$packet &= _hex($questId)
$packet &= _hex($optionIndex)

$packetSize = 18

sendPacket($packet, $packetSize, $pid)
EndFunc

Func sellItem($itemTypeId,$invIndex,$amount, $pid)

local $packet, $packetSize

$packet = '2500'
$packet &= '02000000'
$packet &= '10000000' ;//nBytes following
$packet &= '01000000' ;//nDifferent items being sold
$packet &= _hex($itemTypeId)
$packet &= _hex($invIndex)
$packet &= _hex($amount)

$packetSize = 26

sendPacket($packet, $packetSize, $pid)
EndFunc

Func buyItem($itemTypeId,$shopIndex,$amount, $pid)
local $packet, $packetSize

$packet = '2500'
$packet &= '01000000'
$packet &= '14000000' ;//nBytes following
$packet &= '00000000'
$packet &= '01000000' ;//nDifferent items being bought
$packet &= _hex($itemTypeId)
$packet &= _hex($shopIndex)
$packet &= _hex($amount)

$packetSize = 30

sendPacket($packet, $packetSize, $pid)
EndFunc

Func repairAll($pid)
;//продать все
local $packet, $packetSize

$packet = '2500'
$packet &= '03000000'
$packet &= '06000000'
$packet &= 'FFFFFFFF'
$packet &= '0000'

$packetSize = 16

sendPacket($packet, $packetSize, $pid)
EndFunc

Func repairItem($itemTypeId, $isEquipped, $locationIndex, $pid)
;//repairs the item of type itemTypeId at locationIndex, if
;//isEquipped=1, location refers to equipment. If isEquipped=0,
;//location refers to inventory.
local $packet, $packetSize

$packet = '2500'
$packet &= '03000000'
$packet &= '06000000'
$packet &= _hex($itemTypeId)
$packet &= _hex($isEquipped, 2)
$packet &= _hex($locationIndex, 2)

$packetSize = 16

sendPacket($packet, $packetSize, $pid)
EndFunc

Func upgradeSkill($skillId, $pid)
;//полвысить лвл скила
local $packet, $packetSize

$packet = '2500'
$packet &= '09000000'
$packet &= '04000000'
$packet &= _hex($skillId)

$packetSize = 14

sendPacket($packet, $packetSize, $pid)
EndFunc

Func sendPacket($packet, $packetSize, $pid) ; главная часть кода

Local $pRemoteThread, $vBuffer, $loop, $result, $OPcode, $processHandle, $packetAddress

;//открыть процесс по его id
$processHandle = memopen($pid)


$functionAddress = DllCall($kernel32, 'int', 'VirtualAllocEx', 'int', $processHandle, 'ptr', 0, 'int', 0x46, 'int', 0x1000, 'int', 0x40)


$packetAddress = DllCall($kernel32, 'int', 'VirtualAllocEx', 'int', $processHandle, 'ptr', 0, 'int', $packetSize, 'int', 0x1000, 'int', 0x40)


$OPcode &= '60' ;//PUSHAD
$OPcode &= 'B8'&_hex($sendPacketFunction) ;//MOV EAX, sendPacketAddress
$OPcode &= '8B0D'&_hex($realBaseAddress) ;//MOV ECX, DWORD PTR [revBaseAddress]
$OPcode &= '8B4920' ;//MOV ECX, DWORD PTR [ECX+20]
$OPcode &= 'BF'&_hex($packetAddress[0]) ;//MOV EDI, packetAddress //src pointer
$OPcode &= '6A'&_hex($packetSize,2) ;//PUSH packetSize //size
$OPcode &= '57' ;//PUSH EDI
$OPcode &= 'FFD0' ;//CALL EAX
$OPcode &= '61' ;//POPAD
$OPcode &= 'C3' ;//RET


$vBuffer = DllStructCreate('byte[' & StringLen($OPcode) / 2 & ']')
For $loop = 1 To DllStructGetSize($vBuffer)
DllStructSetData($vBuffer, 1, Dec(StringMid($OPcode, ($loop - 1) * 2 + 1, 2)), $loop)
Next


DllCall($kernel32, 'int', 'WriteProcessMemory', 'int', $processHandle, 'int', $functionAddress[0], 'int', DllStructGetPtr($vBuffer), 'int', DllStructGetSize($vBuffer), 'int', 0)


$vBuffer = DllStructCreate('byte[' & StringLen($packet) / 2 & ']')
For $loop = 1 To DllStructGetSize($vBuffer)
DllStructSetData($vBuffer, 1, Dec(StringMid($packet, ($loop - 1) * 2 + 1, 2)), $loop)
Next


DllCall($kernel32, 'int', 'WriteProcessMemory', 'int', $processHandle, 'int', $packetAddress[0], 'int', DllStructGetPtr($vBuffer), 'int', DllStructGetSize($vBuffer), 'int', 0)


$hRemoteThread = DllCall($kernel32, 'int', 'CreateRemoteThread', 'int', $processHandle, 'int', 0, 'int', 0, 'int', $functionAddress[0], 'ptr', 0, 'int', 0, 'int', 0)


Do
$result = DllCall('kernel32.dll', 'int', 'WaitForSingleObject', 'int', $hRemoteThread[0], 'int', 50)
Until $result[0] <> 258


DllCall($kernel32, 'int', 'CloseHandle', 'int', $hRemoteThread[0])


DllCall($kernel32, 'ptr', 'VirtualFreeEx', 'hwnd', $processHandle, 'int', $functionAddress[0], 'int', 0, 'int', 0x8000)
DllCall($kernel32, 'ptr', 'VirtualFreeEx', 'hwnd', $processHandle, 'int', $packetAddress[0], 'int', 0, 'int', 0x8000)

;//закрытие процесса
memclose($processHandle)

Return True
EndFunc

Func memopen($pid)
Local $mid = DllCall($kernel32, 'int', 'OpenProcess', 'int', 0x1F0FFF, 'int', 1, 'int', $pid)
Return $mid[0]
EndFunc

Func memclose($mid)
DllCall($kernel32, 'int', 'CloseHandle', 'int', $mid)
EndFunc

Func _hex($Value, $size=8)
Local $tmp1, $tmp2, $i
$tmp1 = StringRight("000000000" & Hex($Value),$size)
For $i = 0 To StringLen($tmp1) / 2 - 1
$tmp2 = $tmp2 & StringMid($tmp1, StringLen($tmp1) - 1 - 2 * $i, 2)
Next
Return $tmp2
EndFunc

Все скилл id есть в Этой теме ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
Вам надо будет найти packcall ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
Код для c# можно найти здесь elitepvpers.com ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
В теме вырезаны нерабочие пакеты!