 |
РУОФФ Адреса и оффсеты - Разработка ПО для Perfect World - Бюро разработчиков Zhyk.Ru: создание ботов, снифферов и прочих программ для Perfect World |
07.10.2013, 17:57
|
#1096
|
|
|
|
Пехотинец
|
 Регистрация: 13.12.2012
 Сообщений: 58
 Популярность: 197
 Сказал(а) спасибо: 23
Поблагодарили 31 раз(а) в 10 сообщениях
|
Re: РУОФФ Адреса и оффсеты
Последний раз редактировалось Unheilig)); 07.10.2013 в 18:14.
|
|
|
07.10.2013, 18:26
|
#1097
|
|
|
|
Рыцарь-капитан
|
 Регистрация: 02.05.2009
 Сообщений: 525
 Популярность: 4586
 Золото Zhyk.Ru: 20
 Сказал(а) спасибо: 37
Поблагодарили 767 раз(а) в 220 сообщениях
|
Re: РУОФФ Адреса и оффсеты
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
ReadProcessMemory(hProcess, ptr(lpBaseAdd3 + $107C), @s_begin, 4, byesRead);
ReadProcessMemory(hProcess, ptr(lpBaseAdd3 + $1080), @s_max, 4, byesRead);
ReadProcessMemory(hProcess, ptr(lpBaseAdd + $108), @n_begin, 4, byesRead);
ReadProcessMemory(hProcess, ptr(lpBaseAdd + $114), @n_max, 4, byesRead);
|
|
 |
|
 |
|
Подмени на
ReadProcessMemory(hProcess, ptr(lpBaseAdd3 + $12BC), @s_begin, 4, byesRead);
ReadProcessMemory(hProcess, ptr(lpBaseAdd3 + $12C0), @s_max, 4, byesRead);
ReadProcessMemory(hProcess, ptr(lpBaseAdd + $128), @n_begin, 4, byesRead);
ReadProcessMemory(hProcess, ptr(lpBaseAdd + $134), @n_max, 4, byesRead);
Неужели лень начинать искать оффсеты самому? обновления начали бы казать детской шалостью ^_^
Последний раз редактировалось semoder; 08.10.2013 в 00:31.
|
|
|
08.10.2013, 02:38
|
#1098
|
|
|
|
Пехотинец
|
 Регистрация: 11.12.2009
 Сообщений: 83
 Популярность: -270
 Сказал(а) спасибо: 7
Поблагодарили 26 раз(а) в 9 сообщениях
|
Re: РУОФФ Адреса и оффсеты
Unheilig)), во, разобрался)))
Код:
WID BA + 1C + 34 +12A8 + 3C
номер клетки призванного пета N = BA + 1C + 34 +12A8 + 08
(если не призван, то там мусор)
HP = BA + 1C + 34 +12A8 +(N*4+10) +38
%HP = BA + 1C + 34 +12A8 + (N*4+10) +1C //Float
Loyale = BA + 1C + 34 +12A8 + (N*4+10) + 04
Hungry = BA + 1C + 34 +12A8 +(N*4+10) +08
Lvl = BA + 1C + 34 +12A8 +(N*4+10) +24
SkillID1 = BA + 1C + 34 +12A8 +(N*4+10) +40
SkillID2 = BA + 1C + 34 +12A8 +(N*4+10) +50
SkillID3 = BA + 1C + 34 +12A8 +(N*4+10) +60
SkillID4 = BA + 1C + 34 +12A8 +(N*4+10) +70
откат скила SkillID1 = BA + 1C + 34 +12A8 +(N*4+10) +48
откат скила SkillID2 = BA + 1C + 34 +12A8 +(N*4+10) +58
откат скила SkillID3 = BA + 1C + 34 +12A8 +(N*4+10) +68
откат скила SkillID4 = BA + 1C + 34 +12A8 +(N*4+10) +78
все проверил, теперь точно рабочие офсеты. С мистиками правда не все фурычит.
|
|
|
Пользователь сказал cпасибо:
|
|
08.10.2013, 06:47
|
#1099
|
|
|
|
Разведчик
|
 Регистрация: 08.11.2009
 Сообщений: 36
 Популярность: 154
 Сказал(а) спасибо: 7
Поблагодарили 31 раз(а) в 21 сообщениях
|
Re: РУОФФ Адреса и оффсеты
semoder, ты не мог бы дать код той процедурки поиска скилов на автоите ато както влом делфи изучать.
|
|
|
08.10.2013, 12:00
|
#1100
|
|
|
|
Пехотинец
|
 Регистрация: 11.12.2009
 Сообщений: 83
 Популярность: -270
 Сказал(а) спасибо: 7
Поблагодарили 26 раз(а) в 9 сообщениях
|
Re: РУОФФ Адреса и оффсеты
Ребята, ну подскажите плиз как проверить доступность квеста, а точнее как использовать CallIsQuestAvailable=0x007F2C00 . А то вот сейчас доделал свою версию ГЕОбота (всю ночь летал, писал, тестил, исправлял...  ). И наконец норм работает, но хотелось бы не летать впустую к Ли Мэнбей, если квест недоступен
|
|
|
08.10.2013, 14:42
|
#1101
|
|
|
|
Рыцарь-капитан
|
 Регистрация: 02.05.2009
 Сообщений: 525
 Популярность: 4586
 Золото Zhyk.Ru: 20
 Сказал(а) спасибо: 37
Поблагодарили 767 раз(а) в 220 сообщениях
|
Re: РУОФФ Адреса и оффсеты
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
semoder, ты не мог бы дать код той процедурки поиска скилов на автоите ато както влом делфи изучать.
|
|
 |
|
 |
|
Код:
Func _MEMORYREAD($IV_ADDRESS, $AH_HANDLE, $SV_TYPE = "dword")
If Not IsArray($AH_HANDLE) Then
SetError(1)
Return 0
EndIf
Local $V_BUFFER = DllStructCreate($SV_TYPE)
If @error Then
SetError(@error + 1)
Return 0
EndIf
DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
If Not @error Then
Local $V_VALUE = DllStructGetData($V_BUFFER, 1)
Return $V_VALUE
Else
SetError(6)
Return 0
EndIf
EndFunc
Код:
Func GETSKILL()
$S_BEGIN = _MEMORYREAD(_MEMORYREAD(_MEMORYREAD($GAMEADD, $MEMID) + 52, $MEMID) + 4796, $MEMID)
$S_MAX = _MEMORYREAD(_MEMORYREAD(_MEMORYREAD($GAMEADD, $MEMID) + 52, $MEMID) + 4800, $MEMID)
$TMP = _MEMORYREAD($BASEADD, $MEMID)
$N_BEGIN = _MEMORYREAD($TMP + 296, $MEMID)
$N_MAX = _MEMORYREAD($TMP + 308, $MEMID)
For $I = 0 To $S_MAX - 1
$TMP = _MEMORYREAD($S_BEGIN + $I * 4, $MEMID)
$TMP = _MEMORYREAD($TMP + 8, $MEMID)
$IDSKILL1[$I] = $TMP
$TMP = $TMP + $TMP * 4
$TMP = $TMP * 2
$ID = $TMP
$TMP = Mod($TMP, $N_MAX)
$TMP = _MEMORYREAD($N_BEGIN + $TMP * 4, $MEMID)
$IDTMP = _MEMORYREAD($TMP + 8, $MEMID)
While $IDTMP <> $ID
$TMP = _MEMORYREAD($TMP, $MEMID)
$IDTMP = _MEMORYREAD($TMP + 8, $MEMID)
WEnd
$TMP = _MEMORYREAD($TMP + 4, $MEMID)
$TMP = _MEMORYREAD($TMP, $MEMID)
$LIST1[$I] = _MEMORYREAD($TMP, $MEMID, "wchar[100]")
Next
EndFunc
В LIST1 будут имена скиллов)) как дальше совмещать с ид скиллов будешь, придумай хД
У дельфи логика понятная, вроде ничего сложного нету))
Последний раз редактировалось semoder; 08.10.2013 в 14:53.
|
|
|
Пользователь сказал cпасибо:
|
|
08.10.2013, 15:39
|
#1102
|
|
|
|
Пехотинец
|
 Регистрация: 17.09.2010
 Сообщений: 66
 Популярность: 701
 Сказал(а) спасибо: 32
Поблагодарили 63 раз(а) в 46 сообщениях
|
Re: РУОФФ Адреса и оффсеты
 |
Цитата: |
 |
|
|
|
|
|
|
|
Ребята, ну подскажите плиз как проверить доступность квеста, а точнее как использовать CallIsQuestAvailable=0x007F2C00 . |
|
 |
|
 |
|
bespaniki, это кусок из FlyWQ, может поможет
Код:
checkQuestPresent(questId, client)
{
global
;Get the process Id from the given client title
winget, pid, PID, %client%
;Get the process handle from the given client title
If ProcessHandle%PID% =
{
ProcessHandle%PID% := DllCall("OpenProcess", "int", 2035711, "char", 1, "UInt", PID, "UInt")
logThis("ProcessHandle: " . ProcessHandle%PID%, "main")
}
functionSize := 100
;Allocate memory to store the packet to be sent, and the method to call the send packet function
If returnAddress%PID% =
{
returnAddress%PID% := DllCall("VirtualAllocEx", "Uint", ProcessHandle%PID%, "Uint", 0, "Uint", 0x4, "Uint", 0x1000, "Uint", 0x40)
logThis("returnAddress: " . returnAddress%PID%, "main")
}
If functionAddress%PID% =
{
functionAddress%PID% := DllCall("VirtualAllocEx", "Uint", ProcessHandle%PID%, "Uint", 0, "Uint", functionSize, "Uint", 0x1000, "Uint", 0x40)
logThis("functionAddress: " . functionAddress%PID%, "main")
}
revHex(revReturnAddress, returnAddress%PID%)
revHex(revQuestId, questId)
revHex(revQuestFunctionAddress, questFunctionAddress)
revHex(revBaseAddress, realBaseAddress)
revHex(revQuestFunctionOffset, questFunctionOffset)
revHex(revPlayerOffSet, playerOffSet, 2)
;60 PUSHAD
;B8 80 45 66 00 MOV EAX, 00664580
;8B 0D 7C 65 98 00 MOV ECX, DWORD PTR [98657C]
;8B 49 1C MOV ECX, DWORD PTR [ECX+1C]
;8B 49 30 MOV ECX, DWORD PTR [ECX+34]
;8B 89 DC 0D MOV ECX, DWORD PTR [ECX+DDC]
;68 DD 06 PUSH 6DD
;FF D0 CALL NEAR EAX
;A3 32 54 76 98 MOV DWORD PTR [98765432], EAX
;61 POPAD
;C3 RET
func =
func = %func%60 ;PUSHAD
func = %func%B8%revQuestFunctionAddress% ;MOV EAX, questFunction
func = %func%8B0D%revBaseAddress% ;MOV ECX, DWORD PTR [baseAddress]
func = %func%8B491C ;MOV ECX, DWORD PTR [ECX+1C]
func = %func%8B49%revPlayerOffSet% ;MOV ECX, DWORD PTR [ECX+playerOffSet]
func = %func%8B89%revQuestFunctionOffset% ;MOV ECX, DWORD PTR [ECX+questFuncOffset]
func = %func%68%revQuestId% ;PUSH questId
func = %func%FFD0 ;CALL NEAR EAX
func = %func%A3%revReturnAddress% ;MOV DWORD PTR [returnAddress], EAX
func = %func%61 ;POPAD
func = %func%C3 ;RET
MCode(checkQuestFunction, func)
DllCall("WriteProcessMemory", "UInt", ProcessHandle%PID%, "UInt", functionAddress%PID%, "Uint", &checkQuestFunction, "Uint", functionSize, "Uint *", 0)
SetFormat, IntegerFast, d
hThrd := DllCall("CreateRemoteThread", "Uint", ProcessHandle%PID%, "Uint", 0, "Uint", 0, "Uint", functionAddress%PID%, "Uint", 0, "Uint", 0, "Uint", 0)
loop
{
result := DllCall( "WaitForSingleObject", UInt,hThrd, UInt,50 )
if(result <> 258)
{
break
}
sleep 50
if(A_Index > 100)
{
break
}
}
local returnValue := readMemory(returnAddress%PID%, client)
DllCall( "CloseHandle", UInt,hThrd )
;DllCall("VirtualFreeEx", "Uint", ProcessHandle, "Uint", functionAddress, "Uint", 0, "Uint", 0x8000)
;DllCall("VirtualFreeEx", "Uint", ProcessHandle, "Uint", returnAddress, "Uint", 0, "Uint", 0x8000)
;DllCall( "CloseHandle", UInt,ProcessHandle )
return returnValue
}
в структуре пати попалось кол-во членов пати
+072C PartyMember, array /Структуры членов группы/
+18 Count, dword /кол-во членов в группе/
+14 +[i*4],( i = 0 to 9) +0C Id, dword /ID персонажа в группе/
________________
© Mel
Последний раз редактировалось _DVD_; 08.10.2013 в 18:38.
|
|
|
08.10.2013, 17:00
|
#1103
|
|
|
|
Пехотинец
|
 Регистрация: 11.12.2009
 Сообщений: 83
 Популярность: -270
 Сказал(а) спасибо: 7
Поблагодарили 26 раз(а) в 9 сообщениях
|
Re: РУОФФ Адреса и оффсеты
_DVD_, это AHK а не AutoIT данный кусок я уже давно видел, ток не могу уловить суть, надеялся кто разжует... Ну если не дождусь придется либо оставить как есть, либо еще и ассемблер познавать
Добавлено через 3 минуты
botovod2011, многие офсеты неверны, и я так понял это CrazyBOT ? если да, то забудь, там как сказал разработчик, одними офсетами делу не поможешь... В общем был прекрасный бот и его нестало(((
Последний раз редактировалось bespaniki; 08.10.2013 в 17:03.
Причина: Добавлено сообщение
|
|
|
08.10.2013, 17:12
|
#1104
|
|
|
|
Разведчик
|
 Регистрация: 01.11.2011
 Сообщений: 17
 Популярность: -20
 Сказал(а) спасибо: 0
Поблагодарили 16 раз(а) в 5 сообщениях
|
Re: РУОФФ Адреса и оффсеты
[QUOTE=
botovod2011, многие офсеты неверны, и я так понял это CrazyBOT ? если да, то забудь, там как сказал разработчик, одними офсетами делу не поможешь... В общем был прекрасный бот и его нестало((([/QUOTE]
))) Эмм разрааботчик разработчиком. Но видит мобов,радиус,соедененяет клиент лут,хп,мп,итд кроме вышеуказанного ) Дайте плиз офсеты в лс буду очень благодарен. Попытка не пытка а может востановлю из исходников))))
Последний раз редактировалось botovod2011; 08.10.2013 в 17:16.
Причина: Добавлено сообщение
|
|
|
08.10.2013, 17:16
|
#1105
|
|
|
|
Пехотинец
|
 Регистрация: 13.12.2012
 Сообщений: 58
 Популярность: 197
 Сказал(а) спасибо: 23
Поблагодарили 31 раз(а) в 10 сообщениях
|
Re: РУОФФ Адреса и оффсеты
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
))) Эмм Разрааботчик разработчиком Но видит мобов,радиус,лут,хп,мп,итд кроме вышеуказанного ) Дайте плиз офсеты в лс буду очень благодарен. Попытка не пытка а модет востановлю из исходников))))
Добавлено через 3 минуты
))) Эмм разрааботчик разработчиком. Но видит мобов,радиус,соедененяет клиент лут,хп,мп,итд кроме вышеуказанного ) Дайте плиз офсеты в лс буду очень благодарен. Попытка не пытка а может востановлю из исходников))))
|
|
 |
|
 |
|
ну если у тебя есть исходники крези бота то выкладывай) все дружно восстановить поможем)
в нем надо не только офсеты править, но и много другого.
Добавлено через 4 минуты
если кому надо - количество петов в клетке:
ba+1c+34+12a8+c
Последний раз редактировалось Unheilig)); 08.10.2013 в 17:21.
Причина: Добавлено сообщение
|
|
|
08.10.2013, 17:32
|
#1106
|
|
|
|
Пехотинец
|
 Регистрация: 11.12.2009
 Сообщений: 83
 Популярность: -270
 Сказал(а) спасибо: 7
Поблагодарили 26 раз(а) в 9 сообщениях
|
Re: РУОФФ Адреса и оффсеты
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
))) Эмм разрааботчик разработчиком. Но видит мобов, радиус,соедененяет клиент лут,хп,мп,итд кроме вышеуказанного ) Дайте плиз офсеты в лс буду очень благодарен. Попытка не пытка а может востановлю из исходников))))
|
|
 |
|
 |
|
 ох.. загляни в первое сообщение, там многие офсеты, те которых нет, мелькают на последних 10 страницах темы. Если заработает поделишься, я чуток пытался, но бот зависает поэтому пока забил. т.к. нет надобности и кроме того занят своим ботом, сегодня всю ночь делал модуль для выполнения облета ( квест дом за скрепку), писал почти с нуля (хотя че скромничать, с нуля  ) поэтому устал, чтобы еще ковырять чужих ботов. А на повестке дня начать делать модуль для автоматического выполнения квеста поиска драконов
Также многие офсеты ищи в настройках других ботов. Судя по твоему нику ты ботовот со стажем, разберешься
|
|
|
09.10.2013, 00:49
|
#1107
|
|
|
|
Старший сержант
|
 Регистрация: 21.09.2009
 Сообщений: 189
 Популярность: 578
 Сказал(а) спасибо: 27
Поблагодарили 145 раз(а) в 36 сообщениях
|
Re: РУОФФ Адреса и оффсеты
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
ребята, помогите, кому не сложно, мне нужны оффсеты на фоксбот
|
|
 |
|
 |
|
Оффсет, помеченный красным, "вшит" в программу фоксбота:
BA +0x1C +0x1C +0x24 +0x18 +(i*0x4) +0x4
Пробовал дизассемблировать, и ничего из получившегося не дошло:
Код:
.method public hidebysig specialname int32 get_TargetMobHP() noinlining
{
nop
nop
ldc.i4.0
ret
}
.method public hidebysig specialname int32 get_TargetMobMaxHP() noinlining
{
nop
nop
ldc.i4.0
ret
}
Я знал, что Microsoft Net сохраняет имена функций и переменных. Надеялся найти офсет и заменить... Все понятно, только в теле всех функций каша. Так что просить офсеты от бота бессмысленно, пока кто-нибудь головастый не заменит их на актуальные в файле программы, или пока не всплывет исходник.
Так что, Вишенка, ждать помощи бесполезно...
ЗЫ. Может, в свободное время еще поковыряюсь...
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
Не сиськи красят девушку. А нет, сиськи, всё правильно.
|
|
 |
|
 |
|
ЗЫЗЫ. Я думал, что девушку красят кисточкой. Теперь буду знать - чтобы покрасить девушку, кроме краски нужна еще другая девушка...
Последний раз редактировалось sumikot; 09.10.2013 в 01:00.
|
|
|
09.10.2013, 04:58
|
#1108
|
|
|
|
Пехотинец
|
 Регистрация: 11.12.2009
 Сообщений: 83
 Популярность: -270
 Сказал(а) спасибо: 7
Поблагодарили 26 раз(а) в 9 сообщениях
|
Re: РУОФФ Адреса и оффсеты
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
Код:
Func _MEMORYREAD($IV_ADDRESS, $AH_HANDLE, $SV_TYPE = "dword")
If Not IsArray($AH_HANDLE) Then
SetError(1)
Return 0
EndIf
Local $V_BUFFER = DllStructCreate($SV_TYPE)
If @error Then
SetError(@error + 1)
Return 0
EndIf
DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
If Not @error Then
Local $V_VALUE = DllStructGetData($V_BUFFER, 1)
Return $V_VALUE
Else
SetError(6)
Return 0
EndIf
EndFunc
Код:
Func GETSKILL()
$S_BEGIN = _MEMORYREAD(_MEMORYREAD(_MEMORYREAD($GAMEADD, $MEMID) + 52, $MEMID) + 4796, $MEMID)
$S_MAX = _MEMORYREAD(_MEMORYREAD(_MEMORYREAD($GAMEADD, $MEMID) + 52, $MEMID) + 4800, $MEMID)
$TMP = _MEMORYREAD($BASEADD, $MEMID)
$N_BEGIN = _MEMORYREAD($TMP + 296, $MEMID)
$N_MAX = _MEMORYREAD($TMP + 308, $MEMID)
For $I = 0 To $S_MAX - 1
$TMP = _MEMORYREAD($S_BEGIN + $I * 4, $MEMID)
$TMP = _MEMORYREAD($TMP + 8, $MEMID)
$IDSKILL1[$I] = $TMP
$TMP = $TMP + $TMP * 4
$TMP = $TMP * 2
$ID = $TMP
$TMP = Mod($TMP, $N_MAX)
$TMP = _MEMORYREAD($N_BEGIN + $TMP * 4, $MEMID)
$IDTMP = _MEMORYREAD($TMP + 8, $MEMID)
While $IDTMP <> $ID
$TMP = _MEMORYREAD($TMP, $MEMID)
$IDTMP = _MEMORYREAD($TMP + 8, $MEMID)
WEnd
$TMP = _MEMORYREAD($TMP + 4, $MEMID)
$TMP = _MEMORYREAD($TMP, $MEMID)
$LIST1[$I] = _MEMORYREAD($TMP, $MEMID, "wchar[100]")
Next
EndFunc
В LIST1 будут имена скиллов)) как дальше совмещать с ид скиллов будешь, придумай хД
У дельфи логика понятная, вроде ничего сложного нету))
|
|
 |
|
 |
|
попробовал на C# переделать, но почему-то выдает только 1 скил, а с некоторыми персонажами зависает (на друле например, скил жалящий рой)
Если будет время гляньте плиз где ошибся.
Код:
int S_BEGIN;
int S_MAX;
int N_BEGIN;
int N_MAX;
int TMP;
int IDTMP;
int ID;
byte[] buff = new byte[4];
byte[] simv = new byte[4];
int read;
string SName = "";
IntPtr hProcess = WinApi.OpenProcess(WinApi.ProcessAccessFlags.All, false, pid);
WinApi.ReadProcessMemory(hProcess, Offsets.GA, buff, 4, out read);
WinApi.ReadProcessMemory(hProcess, (BitConverter.ToInt32(buff, 0) + 52), buff, 4, out read);
WinApi.ReadProcessMemory(hProcess, (BitConverter.ToInt32(buff, 0) + 4796), buff, 4, out read);
S_BEGIN = BitConverter.ToInt32(buff, 0);
WinApi.ReadProcessMemory(hProcess, Offsets.GA, buff, 4, out read);
WinApi.ReadProcessMemory(hProcess, (BitConverter.ToInt32(buff, 0) + 52), buff, 4, out read);
WinApi.ReadProcessMemory(hProcess, (BitConverter.ToInt32(buff, 0) + 4800), buff, 4, out read);
S_MAX = BitConverter.ToInt32(buff, 0);
WinApi.ReadProcessMemory(hProcess, Offsets.BA, buff, 4, out read);
TMP = BitConverter.ToInt32(buff, 0);
WinApi.ReadProcessMemory(hProcess, TMP + 296, buff, 4, out read);
N_BEGIN = BitConverter.ToInt32(buff, 0);
WinApi.ReadProcessMemory(hProcess, TMP + 308, buff, 4, out read);
N_MAX = BitConverter.ToInt32(buff, 0);
int[] IDSKILL = new int[S_MAX];
for (int ii=0; ii <= S_MAX - 1; ii++)
{
WinApi.ReadProcessMemory(hProcess, S_BEGIN + ii *4, buff, 4, out read);
TMP = BitConverter.ToInt32(buff, 0);
WinApi.ReadProcessMemory(hProcess, TMP +8, buff, 4, out read);
TMP = BitConverter.ToInt32(buff, 0);
IDSKILL[ii] = TMP;
TMP = TMP + TMP * 4;
TMP = TMP*2;
ID = TMP;
TMP= (int)Math.IEEERemainder(TMP, N_MAX); //остаток от деления
WinApi.ReadProcessMemory(hProcess, N_BEGIN + TMP*4, buff, 4, out read);
TMP = BitConverter.ToInt32(buff, 0);
WinApi.ReadProcessMemory(hProcess, TMP + 8, buff, 4, out read);
IDTMP = BitConverter.ToInt32(buff, 0);
while( IDTMP != ID)
{
WinApi.ReadProcessMemory(hProcess,TMP, buff, 4, out read);
TMP = BitConverter.ToInt32(buff, 0);
WinApi.ReadProcessMemory(hProcess, TMP + 8, buff, 4, out read);
IDTMP = BitConverter.ToInt32(buff, 0);
}
WinApi.ReadProcessMemory(hProcess,TMP + 4, buff, 4, out read);
TMP = BitConverter.ToInt32(buff, 0);
WinApi.ReadProcessMemory(hProcess,TMP, buff, 4, out read);
TMP = BitConverter.ToInt32(buff, 0);
for (int s = 0; s < 200; ) //читаю строку по 2 байта
{
WinApi.ReadProcessMemory(hProcess, (TMP + s), simv, 2, out read);
SName = SName + BitConverter.ToChar(simv, 0);
s = s + 2;
}
listBox3.Items.Add(SName);
}
WinApi.CloseHandle(hProcess);
Код:
[DllImport("kernel32.dll")]
public static extern Int32 ReadProcessMemory(
IntPtr hProcess,
Int32 lpBaseAddress,
[In, Out] Byte[] buffer,
Int32 size,
out Int32 lpNumberOfBytesRead
);
хмм... а ID скилов выдает правильно...
Последний раз редактировалось bespaniki; 09.10.2013 в 05:20.
|
|
|
09.10.2013, 06:02
|
#1109
|
|
|
|
Рыцарь-капитан
|
 Регистрация: 02.05.2009
 Сообщений: 525
 Популярность: 4586
 Золото Zhyk.Ru: 20
 Сказал(а) спасибо: 37
Поблагодарили 767 раз(а) в 220 сообщениях
|
Re: РУОФФ Адреса и оффсеты
Попробуй так, шарп не знаю))
Код:
int s_begin;
int s_max;
int i;
int tmp;
string s;
WinApi.ReadProcessMemory(hProcess,PersStruct + 0x12BC, s_begin, 4, out read);
WinApi.ReadProcessMemory(hProcess,PersStruct + 0x12C0, s_max, 4, out read);
int n_begin;
int n_max;
WinApi.ReadProcessMemory(hProcess,BA, tmp, 4, out read);
WinApi.ReadProcessMemory(hProcess,tmp + 0x128, n_begin, 4, out read);
WinApi.ReadProcessMemory(hProcess,tmp + 0x134, n_max, 4, out read);
for (i = 0; i < s_max; i++)
{
WinApi.ReadProcessMemory(hProcess,s_begin + i * 4, tmp, 4, out read);
WinApi.ReadProcessMemory(hProcess,tmp + 8, tmp, 4, out read);//tmp=id скилла
tmp = tmp + tmp * 4;
tmp = tmp * 2;
tmp = tmp % n_max;
WinApi.ReadProcessMemory(hProcess,n_begin + tmp *4, tmp, 4, out read);
WinApi.ReadProcessMemory(hProcess,tmp + 4, tmp, 4, out read);
WinApi.ReadProcessMemory(hProcess,tmp, tmp, 4, out read);
WinApi.ReadProcessMemory(hProcess,tmp, s, 4, out read);//s=имя скилла
}
|
|
|
09.10.2013, 10:34
|
#1110
|
|
|
|
Разведчик
|
 Регистрация: 12.04.2010
 Сообщений: 2
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: РУОФФ Адреса и оффсеты
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
Вложение 49807 Вот исходники поможете буду благодарен. Там ни одного исполняемого файла нужно собрать их.
|
|
 |
|
 |
|
Для реанимации необходима Dll. Я не видел ее в свободном доступе. Та что уже откомпилированна с последней версией - нуждается в изменениях так как поменялись некоторые значения в функциях (при этом они не подтягиваются из конфига адресов)
с ходу вижу решения:
1. если есть исходник Dll править функции. Изменения можно найти в этой ветке или самостоятельно из дизассемблера PW.
2. взять последнюю dll из бота. Снять с нее пакер (я видел упакованную неолитом, но есть и другие реализации. Возможно есть и не упакованная.). И поменять уже напрямую в теле Dll нужные байты. Это не так сложно, так как функции в исходниках все на асме и их легко узнать под отладчиком.
3. написать патчер памяти который будет менять эти байты в запущенном процессе бота в уже распакованной в памяти Dll.
Возможно есть откомпилированная исправленная Dll - но я не встречал.
P.S. для этого бота есть два варианта это dllClient.dll и PWclient.dll На сколько я понимаю отличия не сильные, а попросту вторая это перекомпилированная и переименованная первая (возможно что то добавлено, лень было сравнивать экспортируемые функции).
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 12:46.
|
 |