Поиск Unfreeze Adress - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок
02.01.2013, 21:12
#1
Разведчик
Регистрация: 27.02.2010
Сообщений: 17
Популярность: 10
Сказал(а) спасибо: 6
Поблагодарили 0 раз(а) в 0 сообщениях
Поиск Unfreeze Adress
Подскажите пожалуйста, как с помощью СЕ, или может быть другого софта вычислить анфриз?
поиск юзал.. ба и га с помощью се нахожу, а вот эотт адрес незнаю.. Гуглил, и поиск рыл на форуме, не выходит узнать
если что
BaseAdress = 0x00A591E0
GameAdress = 0x00A59ACC
03.01.2013, 12:34
#2
Старший сержант
Регистрация: 09.04.2010
Сообщений: 204
Популярность: 5518
Сказал(а) спасибо: 49
Поблагодарили 512 раз(а) в 198 сообщениях
Re: Поиск Unfreeze Adress
Я его искал через Olly. Если не ошибаюсь, клиент скомпилен в дебаг режиме, поэтому при потере фокуса он выводит дебаг-сообщение типа "Focus lost" или как-то так. Запускаешь поиск строк, находишь это сообщение, находишь то место, где оно используется - а значит это недалеко от анфриза) Дальше смотришь асм-код, там он простой, буквально пару джампов и все.
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]-cофт и прочее для комфортной игры в PW.
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Пользователь сказал cпасибо:
03.01.2013, 13:10
#3
Рыцарь-лейтенант
Регистрация: 31.01.2011
Сообщений: 413
Популярность: 14489
Золото Zhyk.Ru: 300
Сказал(а) спасибо: 77
Поблагодарили 361 раз(а) в 145 сообщениях
Re: Поиск Unfreeze Adress
Код:
BaseAdress=00A571E0
GameAdress=00A57ACC
Адреса:
Код:
InGameFlag=00A573C8, byte /0 - не в игре 1 - в игре/
OnLineFlag=00A688EC, byte
Unfreeze=00420204 (84 C0 > B0 01) /B0 00 - заморожен/ или 00420206 (88 75 > C6 01)
Zoom=00439EBB (0F 85 1D > E9 1E FF)
UnfreezeFlag=00A57F3C
FullTarget=00630790
ToVillage=006500D0
PetAttack=00962E7C
PetStop=009AC2E0
PetFollow=00962E74
PetOffensive=00962E68
PetDefensive=00962E5C
PetCombat=00962E54
PetCancel=00950C18
PetSkillUse=005A63C0
PetSetMode1=005307F0
PetSetMode2=00630B00
Mining=006505B0
TalkToNPC=00630B60
Walk1=00494620
Walk2=00498290
Walk3=00494EC0
WalkOfs1=000010BC
UseItem=00630580
Pick=00630720
PickWalk=00489470
PackCall 0063DB70
Sell=004D6250
SkillCall=00492A90
ButtonPress=005D40C0
NPCSelect=0064FBD0
Для работы с диалогами :
DialogOpAddr = $0077D3E0;
DlgCancelPush = $00950C18; IdCancel
DlgNoPush = $00950C24;
DlgYesPush = $00950C08;
ChatStart=00A5CAB8
ChatNumber=00A5CAC4
Взято из соседней темы
________________
Больше не занимаюсь читами, ушёл в серверную часть. Новый ник - int 3 .
P.S. Но я всё такой же добрый модератор раздела PW.
03.01.2013, 18:41
#4
Разведчик
Регистрация: 27.02.2010
Сообщений: 17
Популярность: 10
Сказал(а) спасибо: 6
Поблагодарили 0 раз(а) в 0 сообщениях
Re: Поиск Unfreeze Adress
Конечно спасибо, я это находил.. но меня интересует сам процесс поиска этого адреса, а не список готовых.
Не создавать же мне в следующий раз, когда сменится БА, опять новую тему с поиском анфриза
18.01.2013, 00:50
#5
Сержант
Регистрация: 19.01.2011
Сообщений: 168
Популярность: 485
Сказал(а) спасибо: 123
Поблагодарили 67 раз(а) в 48 сообщениях
Re: Поиск Unfreeze Adress
Это же элементарно,Ватсон.
Анфриз = 0,фриз = 1.Тип: 4 байта.
Ставите хот-кей и отлавливаете(активируете,дезактивируете окно и выполняете отсеивание).
Вот и все)
25.01.2013, 05:12
#6
Пехотинец
Регистрация: 19.02.2010
Сообщений: 98
Популярность: 650
Сказал(а) спасибо: 23
Поблагодарили 150 раз(а) в 45 сообщениях
Re: Поиск Unfreeze Adress
хммм)))
если разработчик то легче по структуре поискать))
Код:
unit BA_Finder;
interface
uses
SysUtils, IOUtils, RegularExpressions;
function FindOffsetBySign(source, signature: string): string;
function ReverseBytes(bytecode: string):string;
var
FileBytes: TBytes; // сюда загрузим байты из нужного файла
FileBytesStr: string; // сюда будем складывать те же байты в HEX-виде
i: integer;
myFile : TextFile;
ExeDir: string;
const
BA = '(8B0D(.{8})898D40F1FFFF6A01)'; // тестовые сигнатурки
// LVL = '(8986(.{8})8A4F03)';
implementation
uses Config, setup;
function ReverseBytes(bytecode: string):string;
var
s2:string;
begin
Result:='';
s2:=bytecode;
repeat
Result := Result + Copy(s2, length(s2)-1, 2);
Delete(s2, length(s2)-1, 2);
until length(s2)=0;
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ========================================================
// Ищем оффсет в exe по сигнатуре:
// ========================================================
function FindOffsetBySign(source, signature: string): string;
var // мануал: docwiki.embarcadero.com/VCL/en/RegularExpressions.TRegEx
RegEx: TRegEx; // проверить регулярку можно на regexpr.ru
begin
RegEx := TRegEx.Create(signature);
Result:=ReverseBytes(RegEx.Match(source).Groups.Item[2].Value);
end; // пассивные группы не прокатят!
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
///begin
// try
// GetDir(0, ExeDir);
// AssignFile(myFile, ExeDir + 'Test.txt');
// ReWrite(myFile);
//------------------------------------------------------------------
// FileBytesStr:='';
// FileBytes := TFile.ReadAllBytes
// ('C:GamesPerfect World CH Onlineelementelementclient.exe');
// for i := low(FileBytes) to high(FileBytes) do
// FileBytesStr := FileBytesStr + IntToHex(FileBytes[i], 2);
//------------------------------------------------------------------
// WriteLn(myFile, FindOffsetBySign(FileBytesStr, BA));
// WriteLn(myFile, FindOffsetBySign(FileBytesStr, LVL));
//------------------------------------------------------------------
// CloseFile(myFile);
// except
// on E: Exception do
// Writeln(E.ClassName, ': ', E.Message);
// end;
procedure TForm6.Button4Click(Sender: TObject);
var i:integer;
path:string;
//clientVersion:string;
begin
// showmessage(FindOffsetBySign(edit21.text, BA));
try
Path:=Application.ExeName;
Path:=ExtractFileDir(Path);
GetDir(0, ExeDir);
//------------------------------------------------------------------
FileBytesStr:='';
FileBytes := TFile.ReadAllBytes
(edit21.text); // тут путь до файла + названия)
for i := low(FileBytes) to high(FileBytes) do
FileBytesStr := FileBytesStr + IntToHex(FileBytes[i], 2);
//------------------------------------------------------------------
showmessage(FindOffsetBySign(FileBytesStr, BA));//
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end;
end.
ну както так))
(8B0D(.{8})898D40F1FFFF6A01) ;Base_Address
(8986(.{8})8A4F03) ;LVL_Offset
(898E(.{8})8B5714) ;Culti_Offset
(8996(.{8})8B4718) ;EXP_Offset
(8986(.{8})8B4F04) ;Spirit_offset
(898E(.{8})8B570C) ;HP_OffSet
(8996(.{8})8B471C) ;MP_OffSet
(8986(.{8})8B4F08) ;CHI_OffSet
(898E(.{8})8B5710) ;MaxHP_OffSet
(8996(.{8})8B4720) ;MaxMP_OffSet
(8986(.{8})8A4702) ;MaxCHI_Offset
(8B108996(.{8})8B4004) ;gold_Offset
(6A0A8986(.{8})) ;state_Offset
(8986(.{8})8B40048BC8) ;castid_Offset
(A1(.{8})578B482081C1EC) ;BaseCall_Offset
(568BF18B86(.{8})85C0) ;target_Offset
(8B8E(.{8})3BCB740655) ;pet_Offset
(8B8E(.{8})8B47503BC8) ;str_Offset
(8B96(.{8})8B47543BD0) ;dex_Offset
(8B86(.{8})8B4F5C3BC1) ;vit_Offset
(8B8E(.{8})8B47603BC8) ;mag_Offset
(8B96(.{8})8B47643BD0) ;reputation_Offset
(EB5D8B8E(.{8})B801) ;class_Offset
(8B491C33C08B91(.{8})85D2) ;jump_Offset
(32C0C38B89(.{8})568BB0) ;charid_Offset
(8B83(.{8})8D4C243C) ;name_Offset
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Автор программы PwRuf - Bot и PwRuf - Crafter
26.01.2013, 11:38
#7
Лейтенант-командор
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Re: Поиск Unfreeze Adress
rufat2005 , код копипастить умеешь? а теперь давай объясняй мне как искать сигнатуры!
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Кошельки: WMZ - Z276844220882 ; WMR - R231028582939 ; WMU - U394136909210 ; ЯД - 410011494605270 .
Perfect World : PWDatabaseScanner , Client , PWNickRenamer , PWClientRenamer , База логинов PW , Гайд по варУ , Зарабатываем репутацию .
Delphi : Авторизация на сайте с помощью Indy , Загрузка изображений с интернета в TImage с помощью Indy , Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5 , Основы парсинга с помощью Indy , Делаем Updater до программы с помощью Indy .
Other : ShowIP , FFUUU смайлы в QIP , Как играть в Minecraft (видеокурс) , Как мы захватили человечество :D , Энергия в Лицемер/TopFace , PasGen .
26.01.2013, 14:05
#8
Пехотинец
Регистрация: 19.02.2010
Сообщений: 98
Популярность: 650
Сказал(а) спасибо: 23
Поблагодарили 150 раз(а) в 45 сообщениях
Re: Поиск Unfreeze Adress
Цитата:
rufat2005 , код копипастить умеешь? а теперь давай объясняй мне как искать сигнатуры!
Копипаст вроде отсюда
[
Ссылки могут видеть только зарегистрированные пользователи. ]
я просто показал кусок кода который у меня. хм.. почему та был уверен что там был сигнатура unfreeze
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Автор программы PwRuf - Bot и PwRuf - Crafter
26.01.2013, 14:35
#9
Старший сержант
Регистрация: 21.09.2009
Сообщений: 189
Популярность: 578
Сказал(а) спасибо: 27
Поблагодарили 145 раз(а) в 36 сообщениях
Re: Поиск Unfreeze Adress
Цитата:
если разработчик то легче по структуре поискать))
Ну не нашел я в приведенном коде регулярного выражения для поиска UnFreeze. Смотрел 3 раза.
Аааа, воот оно
(000085D20F95C0(84C0)8885..0400007[45])
Отличие от вышеприведенных примеров в том, что ищется не значение образца в скобках, а его адрес.
А ищется все очень просто. Один из вариантов - сравниваем Hex содержимое нескольких клиентов с известными адресами UnFreeze
Код:
8B9424E8000000 85D2 0F95C0 84C0 88858C040000 75.. // для 00B27A04
8B9424E4000000 85D2 0F95C0 84C0 88858C040000 74.. // для 00A5B90C
E963040000 85D2 0F95C0 84C0 88858C040000 75.. // для 00A571E0
8B9424E0000000 85D2 0F95C0 84C0 888528040000 74.. // для 0098ADDC
Записываем неизменяющиеся фрагменты в регулярное выражение, вместо изменяющихся значений, если они внутри выражения, подставляем точку. Если нужно более сложное описание выражения, читаем [
Ссылки могут видеть только зарегистрированные пользователи. ].
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
Похожие темы
Тема
Автор
Раздел
Ответов
Последнее сообщение
[Помогите!] Zoom и Unfreeze
blTb^^
Общение разработчиков
9
07.10.2012 20:46
[Статья] [Unfreeze для всех версий]
KloneB@DGuY
Разработка ПО для Perfect World
11
16.01.2012 18:33
[Помогите!] Вопрос по Unfreeze'ру.
dart994
Общение и обсуждение Perfect World
0
13.08.2011 18:13
unfreeze
matriCS929394
Общение и обсуждение Counter-Strike
1
23.07.2011 22:20
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 20:59 .