Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

РУОФФ Адреса и оффсеты

-

Разработка ПО для Perfect World

- Бюро разработчиков Zhyk.Ru: создание ботов, снифферов и прочих программ для Perfect World

Ответ
 
Опции темы
Старый 07.10.2013, 17:57   #1096
 Пехотинец
Аватар для Unheilig))
 
Unheilig)) на правильном путиUnheilig)) на правильном пути
Регистрация: 13.12.2012
Сообщений: 58
Популярность: 197
Сказал(а) спасибо: 23
Поблагодарили 31 раз(а) в 10 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от bespanikiПосмотреть сообщение
действительно не верен, сорри, ну как говорил подсмотрено в настройках какого то бота. (я себе ток офсеты переписывал, поэтому не помню где взял).
Unheilig)), А если не секрет, зачем тебе WID пета, он же после каждого призыва разный?

так это же не wid a id, а нужен он мне для проверки если ид призванного пета = ид пета из ячейки n то..


просто при проверке ид призванного пета=ид моба (ну и само собой, потом хп\имя и прочее для пета надо брать как от моба) у меня хп пета не показывает пока его в таргет не взять

Последний раз редактировалось Unheilig)); 07.10.2013 в 18:14.
  Ответить с цитированием
Старый 07.10.2013, 18:26   #1097
Заблокирован
 Рыцарь-капитан
Аватар для semoder
 
semoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе цену
Регистрация: 02.05.2009
Сообщений: 525
Популярность: 4586
Золото Zhyk.Ru: 20
Сказал(а) спасибо: 37
Поблагодарили 767 раз(а) в 220 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от tiandduПосмотреть сообщение
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
 Пехотинец
Аватар для bespaniki
 
bespaniki неизвестен в этих краяхbespaniki неизвестен в этих краяхbespaniki неизвестен в этих краях
Регистрация: 11.12.2009
Сообщений: 83
Популярность: -270
Сказал(а) спасибо: 7
Поблагодарили 26 раз(а) в 9 сообщениях
Отправить сообщение для bespaniki с помощью Skype™
 
По умолчанию 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пасибо:
Unheilig)) (08.10.2013)
Старый 08.10.2013, 06:47   #1099
 Разведчик
Аватар для shura_luka
 
shura_luka на правильном путиshura_luka на правильном пути
Регистрация: 08.11.2009
Сообщений: 36
Популярность: 154
Сказал(а) спасибо: 7
Поблагодарили 31 раз(а) в 21 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

semoder, ты не мог бы дать код той процедурки поиска скилов на автоите ато както влом делфи изучать.
  Ответить с цитированием
Старый 08.10.2013, 12:00   #1100
 Пехотинец
Аватар для bespaniki
 
bespaniki неизвестен в этих краяхbespaniki неизвестен в этих краяхbespaniki неизвестен в этих краях
Регистрация: 11.12.2009
Сообщений: 83
Популярность: -270
Сказал(а) спасибо: 7
Поблагодарили 26 раз(а) в 9 сообщениях
Отправить сообщение для bespaniki с помощью Skype™
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Ребята, ну подскажите плиз как проверить доступность квеста, а точнее как использовать CallIsQuestAvailable=0x007F2C00 . А то вот сейчас доделал свою версию ГЕОбота (всю ночь летал, писал, тестил, исправлял... ). И наконец норм работает, но хотелось бы не летать впустую к Ли Мэнбей, если квест недоступен
  Ответить с цитированием
Старый 08.10.2013, 14:42   #1101
Заблокирован
 Рыцарь-капитан
Аватар для semoder
 
semoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе цену
Регистрация: 02.05.2009
Сообщений: 525
Популярность: 4586
Золото Zhyk.Ru: 20
Сказал(а) спасибо: 37
Поблагодарили 767 раз(а) в 220 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от shura_lukaПосмотреть сообщение
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пасибо:
shura_luka (14.01.2015)
Старый 08.10.2013, 15:39   #1102
 Пехотинец
Аватар для _DVD_
 
_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе
Регистрация: 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
 Пехотинец
Аватар для bespaniki
 
bespaniki неизвестен в этих краяхbespaniki неизвестен в этих краяхbespaniki неизвестен в этих краях
Регистрация: 11.12.2009
Сообщений: 83
Популярность: -270
Сказал(а) спасибо: 7
Поблагодарили 26 раз(а) в 9 сообщениях
Отправить сообщение для bespaniki с помощью Skype™
 
По умолчанию Re: РУОФФ Адреса и оффсеты

_DVD_, это AHK а не AutoIT данный кусок я уже давно видел, ток не могу уловить суть, надеялся кто разжует... Ну если не дождусь придется либо оставить как есть, либо еще и ассемблер познавать

Добавлено через 3 минуты
botovod2011, многие офсеты неверны, и я так понял это CrazyBOT ? если да, то забудь, там как сказал разработчик, одними офсетами делу не поможешь... В общем был прекрасный бот и его нестало(((

Последний раз редактировалось bespaniki; 08.10.2013 в 17:03. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 08.10.2013, 17:12   #1104
 Разведчик
Аватар для botovod2011
 
botovod2011 вызывает надежду
Регистрация: 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
 Пехотинец
Аватар для Unheilig))
 
Unheilig)) на правильном путиUnheilig)) на правильном пути
Регистрация: 13.12.2012
Сообщений: 58
Популярность: 197
Сказал(а) спасибо: 23
Поблагодарили 31 раз(а) в 10 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от botovod2011Посмотреть сообщение
))) Эмм Разрааботчик разработчиком Но видит мобов,радиус,лут,хп,мп,итд кроме вышеуказанного ) Дайте плиз офсеты в лс буду очень благодарен. Попытка не пытка а модет востановлю из исходников))))

Добавлено через 3 минуты


))) Эмм разрааботчик разработчиком. Но видит мобов,радиус,соедененяет клиент лут,хп,мп,итд кроме вышеуказанного ) Дайте плиз офсеты в лс буду очень благодарен. Попытка не пытка а может востановлю из исходников))))

ну если у тебя есть исходники крези бота то выкладывай) все дружно восстановить поможем)

в нем надо не только офсеты править, но и много другого.

Добавлено через 4 минуты
если кому надо - количество петов в клетке:
ba+1c+34+12a8+c

Последний раз редактировалось Unheilig)); 08.10.2013 в 17:21. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 08.10.2013, 17:32   #1106
 Пехотинец
Аватар для bespaniki
 
bespaniki неизвестен в этих краяхbespaniki неизвестен в этих краяхbespaniki неизвестен в этих краях
Регистрация: 11.12.2009
Сообщений: 83
Популярность: -270
Сказал(а) спасибо: 7
Поблагодарили 26 раз(а) в 9 сообщениях
Отправить сообщение для bespaniki с помощью Skype™
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от botovod2011Посмотреть сообщение
))) Эмм разрааботчик разработчиком. Но видит мобов, радиус,соедененяет клиент лут,хп,мп,итд кроме вышеуказанного ) Дайте плиз офсеты в лс буду очень благодарен. Попытка не пытка а может востановлю из исходников))))

ох.. загляни в первое сообщение, там многие офсеты, те которых нет, мелькают на последних 10 страницах темы. Если заработает поделишься, я чуток пытался, но бот зависает поэтому пока забил. т.к. нет надобности и кроме того занят своим ботом, сегодня всю ночь делал модуль для выполнения облета ( квест дом за скрепку), писал почти с нуля (хотя че скромничать, с нуля ) поэтому устал, чтобы еще ковырять чужих ботов. А на повестке дня начать делать модуль для автоматического выполнения квеста поиска драконов

Также многие офсеты ищи в настройках других ботов. Судя по твоему нику ты ботовот со стажем, разберешься
  Ответить с цитированием
Старый 09.10.2013, 00:49   #1107
 Старший сержант
Аватар для sumikot
 
sumikot излучает ауруsumikot излучает ауруsumikot излучает ауруsumikot излучает ауруsumikot излучает ауруsumikot излучает ауру
Регистрация: 21.09.2009
Сообщений: 189
Популярность: 578
Сказал(а) спасибо: 27
Поблагодарили 144 раз(а) в 36 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от CherryOoПосмотреть сообщение
ребята, помогите, кому не сложно, мне нужны оффсеты на фоксбот

Оффсет, помеченный красным, "вшит" в программу фоксбота:
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 сохраняет имена функций и переменных. Надеялся найти офсет и заменить... Все понятно, только в теле всех функций каша. Так что просить офсеты от бота бессмысленно, пока кто-нибудь головастый не заменит их на актуальные в файле программы, или пока не всплывет исходник.
Так что, Вишенка, ждать помощи бесполезно...
ЗЫ. Может, в свободное время еще поковыряюсь...

Цитата:
Сообщение от CherryOoПосмотреть сообщение
Не сиськи красят девушку. А нет, сиськи, всё правильно.

ЗЫЗЫ. Я думал, что девушку красят кисточкой. Теперь буду знать - чтобы покрасить девушку, кроме краски нужна еще другая девушка...

Последний раз редактировалось sumikot; 09.10.2013 в 01:00.
  Ответить с цитированием
Старый 09.10.2013, 04:58   #1108
 Пехотинец
Аватар для bespaniki
 
bespaniki неизвестен в этих краяхbespaniki неизвестен в этих краяхbespaniki неизвестен в этих краях
Регистрация: 11.12.2009
Сообщений: 83
Популярность: -270
Сказал(а) спасибо: 7
Поблагодарили 26 раз(а) в 9 сообщениях
Отправить сообщение для bespaniki с помощью Skype™
 
По умолчанию 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 будут имена скиллов)) как дальше совмещать с ид скиллов будешь, придумай хД

У дельфи логика понятная, вроде ничего сложного нету))


попробовал на 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
Заблокирован
 Рыцарь-капитан
Аватар для semoder
 
semoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе цену
Регистрация: 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
 Разведчик
Аватар для redmagic
 
redmagic никому не известный тип
Регистрация: 12.04.2010
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от botovod2011Посмотреть сообщение
Вложение 49807 Вот исходники поможете буду благодарен. Там ни одного исполняемого файла нужно собрать их.

Для реанимации необходима Dll. Я не видел ее в свободном доступе. Та что уже откомпилированна с последней версией - нуждается в изменениях так как поменялись некоторые значения в функциях (при этом они не подтягиваются из конфига адресов)
с ходу вижу решения:
1. если есть исходник Dll править функции. Изменения можно найти в этой ветке или самостоятельно из дизассемблера PW.
2. взять последнюю dll из бота. Снять с нее пакер (я видел упакованную неолитом, но есть и другие реализации. Возможно есть и не упакованная.). И поменять уже напрямую в теле Dll нужные байты. Это не так сложно, так как функции в исходниках все на асме и их легко узнать под отладчиком.
3. написать патчер памяти который будет менять эти байты в запущенном процессе бота в уже распакованной в памяти Dll.

Возможно есть откомпилированная исправленная Dll - но я не встречал.
P.S. для этого бота есть два варианта это dllClient.dll и PWclient.dll На сколько я понимаю отличия не сильные, а попросту вторая это перекомпилированная и переименованная первая (возможно что то добавлено, лень было сравнивать экспортируемые функции).
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Руоф] Адреса и оффсеты Kitsune Разработка ПО для Perfect World 200 27.06.2014 22:34
оффсеты Maty Общение разработчиков 8 14.03.2012 21:00
Нужны адреса и оффсеты PWI Mr_R@NDOM Общение разработчиков 8 14.09.2011 23:01
[Помогите!] Адреса и Оффсеты для клиента 1.3.4 - 1.4.1 _Wolf_ Общение разработчиков 1 23.08.2011 17:34

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 01:28.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net