Регистрация Главная Пользователи Все разделы прочитаны
Сообщения за день Справка Регистрация
Навигация
Zhyk.Ru LIVE! Реклама на Zhyk.Ru Доска почета top.zhyk.ru (beta) Премиум-аккаунт

Функция определения названия предмета

-

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

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

Ответ
 
Опции темы Опции просмотра
Старый 20.01.2012, 23:04   #1
 Пехотинец
Аватар для Jok3r666
 
Jok3r666 скоро будет известенJok3r666 скоро будет известенJok3r666 скоро будет известен
Регистрация: 17.05.2010
Сообщений: 53
Популярность: 204
Сказал(а) спасибо: 11
Поблагодарили 15 раз(а) в 6 сообщениях
 
По умолчанию Функция определения названия предмета

Думаю кому нибудь пригодится

jmpptr = ba+1c+34+CAC+С+[(0-31(40))*4]
itemtype = ba+1c+34+CAC+С+[(0-31(40))*4]+4
Возвращает название в string
сама функция
Код:
function ItemName(hprocess,jumpptr:dword;itemType:integer):string;
var
buf32: array [0 .. 32] of WideChar;
bytescount,ipbuf:dword;
begin
  case itemType of
    //34 книги одевать
     26: begin    //яйца
           ReadProcessMemory(hProcess, ptr(jumpptr+item1_26_ofs), @ipbuf, sizeof(ipbuf), BytesCount);
           ReadProcessMemory(hProcess, ptr(ipbuf+item2_26_ofs), @buf32, sizeof(buf32), BytesCount);
           Result:=buf32;
           end;
     0, 3: begin    //0-шмот 3-бижа
           ReadProcessMemory(hProcess, ptr(jumpptr+item1_0_3_ofs), @ipbuf, sizeof(ipbuf), BytesCount);
           ReadProcessMemory(hProcess, ptr(ipbuf+item2_0_3_ofs), @buf32, sizeof(buf32), BytesCount);
           Result:=buf32;
           end;
     2: begin   //strella
           ReadProcessMemory(hProcess, ptr(jumpptr+item1_2_ofs), @ipbuf, sizeof(ipbuf), BytesCount);
           ReadProcessMemory(hProcess, ptr(ipbuf+item2_2_ofs), @buf32, sizeof(buf32), BytesCount);
           Result:=buf32;
           end;
     4: begin   //4-соски
           ReadProcessMemory(hProcess, ptr(jumpptr+item1_4_ofs), @ipbuf, sizeof(ipbuf), BytesCount);
           ReadProcessMemory(hProcess, ptr(ipbuf+item2_4_ofs), @buf32, sizeof(buf32), BytesCount);
           Result:=buf32;
           end;
     34: begin   //34-книги
           ReadProcessMemory(hProcess, ptr(jumpptr+item1_34_ofs), @ipbuf, sizeof(ipbuf), BytesCount);
           ReadProcessMemory(hProcess, ptr(ipbuf+item2_34_ofs), @buf32, sizeof(buf32), BytesCount);
           Result:=buf32;
           end;
     5, 10, 13, 16, 19, 20, 27, 31, 32, 38, 40, 46:   //31-apteka 32-shar drakona 27-korm 40-краситель   5-батарейки  19-алый,сундук(ПКМ)  20-призы, почти весь шоп,хх,сведения, кровь, осколок(миража), вино, гипы, горн,бао,феня, молоток
        begin
           ReadProcessMemory(hProcess, ptr(jumpptr+item1_5_46_ofs), @ipbuf, sizeof(ipbuf), BytesCount);
           ReadProcessMemory(hProcess, ptr(ipbuf+item2_5_46_ofs), @buf32, sizeof(buf32), BytesCount);
           Result:=buf32;
           end;
     6: begin    //стиль
           ReadProcessMemory(hProcess, ptr(jumpptr+item1_6_ofs), @ipbuf, sizeof(ipbuf), BytesCount);
           ReadProcessMemory(hProcess, ptr(ipbuf+item2_6_ofs), @buf32, sizeof(buf32), BytesCount);
           Result:=buf32;
           end;
     7: begin
           ReadProcessMemory(hProcess, ptr(jumpptr+item1_7_ofs), @ipbuf, sizeof(ipbuf), BytesCount);
           ReadProcessMemory(hProcess, ptr(ipbuf+item2_7_ofs), @buf32, sizeof(buf32), BytesCount);
           Result:=buf32;
           end;
     8, 9, 22, 23: begin    //9- хлеб, банки    8-дк, ресы, трава, формы, рупор, главы
           ReadProcessMemory(hProcess, ptr(jumpptr+item1_8_23_ofs), @ipbuf, sizeof(ipbuf), BytesCount);
           ReadProcessMemory(hProcess, ptr(ipbuf+item2_8_23_ofs), @buf32, sizeof(buf32), BytesCount);
           Result:=buf32;
           end;
     15: begin   //оружее
           ReadProcessMemory(hProcess, ptr(jumpptr+item1_15_ofs), @ipbuf, sizeof(ipbuf), BytesCount);
           ReadProcessMemory(hProcess, ptr(ipbuf+item2_15_ofs), @buf32, sizeof(buf32), BytesCount);
           Result:=buf32;
           end;
     17,11: begin   //17-камни   11-скилы
           ReadProcessMemory(hProcess, ptr(jumpptr+item1_17_ofs), @ipbuf, sizeof(ipbuf), BytesCount);
           ReadProcessMemory(hProcess, ptr(ipbuf+item2_17_ofs), @buf32, sizeof(buf32), BytesCount);
           Result:=buf32;
           end;
     18: begin
           ReadProcessMemory(hProcess, ptr(jumpptr+item1_18_ofs), @ipbuf, sizeof(ipbuf), BytesCount);
           ReadProcessMemory(hProcess, ptr(ipbuf+item2_18_ofs), @buf32, sizeof(buf32), BytesCount);
           Result:=buf32;
           end;
     36: begin
           ReadProcessMemory(hProcess, ptr(jumpptr+item1_36_37_ofs), @ipbuf, sizeof(ipbuf), BytesCount);
           ReadProcessMemory(hProcess, ptr(ipbuf+item2_36_37_ofs), @buf32, sizeof(buf32), BytesCount);
           Result:=buf32;
           end;
     37: begin //хиры
           ReadProcessMemory(hProcess, ptr(jumpptr+item1_37_ofs), @ipbuf, sizeof(ipbuf), BytesCount);
           ReadProcessMemory(hProcess, ptr(ipbuf+item2_37_ofs), @buf32, sizeof(buf32), BytesCount);
           Result:=buf32;
           end;
     43: begin      //гпб
           ReadProcessMemory(hProcess, ptr(jumpptr+item1_43_ofs), @ipbuf, sizeof(ipbuf), BytesCount);
           ReadProcessMemory(hProcess, ptr(ipbuf+item2_43_ofs), @buf32, sizeof(buf32), BytesCount);
           Result:=buf32;
           end;
     41: begin      //джины
           ReadProcessMemory(hProcess, ptr(jumpptr+item1_41_ofs), @ipbuf, sizeof(ipbuf), BytesCount);
           ReadProcessMemory(hProcess, ptr(ipbuf+item2_41_ofs), @buf32, sizeof(buf32), BytesCount);
           Result:=buf32;
           end;
     else
     result:='N\A';
     end;
end;
офсеты для функции
Код:
item1_26_ofs=$a0
item2_26_ofs=$4
item1_41_ofs=$10c
item2_41_ofs=$4
item1_0_3_ofs=$E0
item2_0_3_ofs=$C
item1_2_ofs=$C8
item2_2_ofs=$4
item1_4_ofs=$B4
item2_4_ofs=$8
item1_34_ofs=$B4
item2_34_ofs=$4
item1_5_46_ofs=$4C
item2_5_46_ofs=$4
item1_6_ofs=$D0
item2_6_ofs=$C
item1_7_ofs=$D0
item2_7_ofs=$4
item1_8_23_ofs=$54
item2_8_23_ofs=$C
item1_15_ofs=$E8
item2_15_ofs=$C
item1_17_ofs= $4C
item2_17_ofs=$8
item1_18_ofs=$C4
item2_18_ofs=$4
item1_36_37_ofs=$B8
item2_36_37_ofs=$4
item1_43_ofs=$54
item2_43_ofs=$4
item1_37_ofs=$BC
item2_37_ofs=$4
Если помог, не откажусь от спасибки.
  Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
asert94 (16.02.2012), boostergod (19.10.2012), krysun (22.01.2012)
Старый 27.03.2012, 18:45   #2
 Пехотинец
Аватар для Choochoo
 
Choochoo на правильном пути
Регистрация: 16.09.2010
Сообщений: 94
Популярность: 73
Сказал(а) спасибо: 5
Поблагодарили 21 раз(а) в 5 сообщениях
 
По умолчанию Re: Функция определения названия предмета

Кто может помочь найти офсеты для итемов id 39 и 50 ?
Спасибо заранее
  Ответить с цитированием
Старый 18.04.2012, 16:26   #3
 Пехотинец
Аватар для alegr
 
alegr скоро будет известенalegr скоро будет известенalegr скоро будет известен
Регистрация: 19.01.2011
Сообщений: 57
Популярность: 280
Сказал(а) спасибо: 3
Поблагодарили 35 раз(а) в 9 сообщениях
 
По умолчанию Re: Функция определения названия предмета

и как? работает твоя функция правильно? 32 символа как-то много, он не только название выводит, но и часть описания, нужно или по одному символу считывать пока не встретишь "\r" или считать строку и вырезать всё до \r
  Ответить с цитированием
Старый 11.05.2012, 08:30   #4
 Пехотинец
Аватар для Jok3r666
 
Jok3r666 скоро будет известенJok3r666 скоро будет известенJok3r666 скоро будет известен
Регистрация: 17.05.2010
Сообщений: 53
Популярность: 204
Сказал(а) спасибо: 11
Поблагодарили 15 раз(а) в 6 сообщениях
 
По умолчанию Re: Функция определения названия предмета

Цитата:
Сообщение от alegrПосмотреть сообщение
и как? работает твоя функция правильно? 32 символа как-то много, он не только название выводит, но и часть описания, нужно или по одному символу считывать пока не встретишь "\r" или считать строку и вырезать всё до \r

У меня ничего лишнего не цепляля ни разу
  Ответить с цитированием
Старый 14.05.2012, 02:12   #5
 Пехотинец
Аватар для ktulx
 
ktulx на правильном пути
Регистрация: 01.08.2011
Сообщений: 70
Популярность: 24
Сказал(а) спасибо: 45
Поблагодарили 7 раз(а) в 7 сообщениях
 
По умолчанию Re: Функция определения названия предмета

А как быть со специальными символами вроде звёзночки перед названием пухи/шмота/бижи? Данную функцию не пробовал, но делаю подобным образом и вместо звёздочки выводит знак вопроса, например "?Шлем Демон Страж".
  Ответить с цитированием
Старый 14.05.2012, 04:25   #6
 Сержант
Аватар для BritishColonist
 
BritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауру
Регистрация: 11.12.2010
Сообщений: 110
Популярность: 541
Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
 
По умолчанию Re: Функция определения названия предмета

ktulx, попробуй поставить шрифт, взятый из папки с игрой. В нём есть звёздочки.
Это если выводишь в какой-нибудь Label или Edit. А если в файл, то тут, наверное, ничего не поделаешь.
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
  Ответить с цитированием
Старый 14.05.2012, 04:32   #7
 Пехотинец
Аватар для ktulx
 
ktulx на правильном пути
Регистрация: 01.08.2011
Сообщений: 70
Популярность: 24
Сказал(а) спасибо: 45
Поблагодарили 7 раз(а) в 7 сообщениях
 
По умолчанию Re: Функция определения названия предмета

BritishColonist, вывожу в листбокс. Попробую со шрифтом похимичить. До этого не доводилось )
  Ответить с цитированием
Старый 14.05.2012, 14:34   #8
 Разведчик
Аватар для vogel
 
vogel определенно авторитетная личностьvogel определенно авторитетная личностьvogel определенно авторитетная личностьvogel определенно авторитетная личностьvogel определенно авторитетная личностьvogel определенно авторитетная личностьvogel определенно авторитетная личностьvogel определенно авторитетная личностьvogel определенно авторитетная личность
Регистрация: 17.09.2009
Сообщений: 46
Популярность: 1187
Сказал(а) спасибо: 8
Поблагодарили 50 раз(а) в 13 сообщениях
 
По умолчанию Re: Функция определения названия предмета

Эммм.... Вообще-то названия предметов (включая звёздочки и пр.) хранятся в уникоде, поэтому:
а) логично хранить их в WideString
б) использовать версию дельфей, понимающую уникод
в) в Windows XP вас спасёт только шрифт из комплекта игры, в 7-ке даже Verdana нормально показывает звёздочки.
  Ответить с цитированием
Старый 14.05.2012, 19:38   #9
 Пехотинец
Аватар для ktulx
 
ktulx на правильном пути
Регистрация: 01.08.2011
Сообщений: 70
Популярность: 24
Сказал(а) спасибо: 45
Поблагодарили 7 раз(а) в 7 сообщениях
 
По умолчанию Re: Функция определения названия предмета

vogel, Винда седьмая, с русскими буквами проблем нет, это разве не юникод?

Вообще у меня что-то странное происходит. Висела на кнопке вот такая штука
тык
прекрасно выводит в комбобокс содержимое инвентаря, за исключением всё тех же звёздочек. Но я решил наконец-то вынести это в отдельную функцию по аналогии с описанной в первом посте:
тык

Вызываю
f := GetInventItems(hProcess, 7); //8-я ячейка инвентаря
ShowMessage(f);

Результат - (????'????

Последний раз редактировалось ktulx; 14.05.2012 в 20:14.
  Ответить с цитированием
Старый 15.10.2012, 12:42   #10
 Пехотинец
Аватар для Jok3r666
 
Jok3r666 скоро будет известенJok3r666 скоро будет известенJok3r666 скоро будет известен
Регистрация: 17.05.2010
Сообщений: 53
Популярность: 204
Сказал(а) спасибо: 11
Поблагодарили 15 раз(а) в 6 сообщениях
 
По умолчанию Re: Функция определения названия предмета

Цитата:
Сообщение от ktulxПосмотреть сообщение
vogel, Винда седьмая, с русскими буквами проблем нет, это разве не юникод?

Вообще у меня что-то странное происходит. Висела на кнопке вот такая штука
тык
прекрасно выводит в комбобокс содержимое инвентаря, за исключением всё тех же звёздочек. Но я решил наконец-то вынести это в отдельную функцию по аналогии с описанной в первом посте:
тык

Вызываю
f := GetInventItems(hProcess, 7); //8-я ячейка инвентаря
ShowMessage(f);

Результат - (????'????

Рак где то дальше в этом куске вроде все норм.
  Ответить с цитированием
Старый 17.10.2012, 00:45   #11
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 729
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: Функция определения названия предмета

Хм, а код, что в теме случайно не я писал?

Добавлено через 25 минут
А нет, извиняюсь, писал то же просто на форуме, на дату не посмотрел

Вот, кстати, мой вариант, всё описано полностью
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: 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.



Последний раз редактировалось VeTaL_UA; 17.10.2012 в 01:10. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 19.10.2012, 08:31   #12
 Пехотинец
Аватар для Jok3r666
 
Jok3r666 скоро будет известенJok3r666 скоро будет известенJok3r666 скоро будет известен
Регистрация: 17.05.2010
Сообщений: 53
Популярность: 204
Сказал(а) спасибо: 11
Поблагодарили 15 раз(а) в 6 сообщениях
 
По умолчанию Re: Функция определения названия предмета

Цитата:
Сообщение от VeTaL_UAПосмотреть сообщение
Вот, кстати, мой вариант, всё описано полностью

О5 же нет 50 id и сейчас уже по моему 52 есть, давненько не ковырял.
  Ответить с цитированием
Старый 05.03.2015, 23:23   #13
 Пехотинец
Аватар для diagnost
 
diagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражания
Регистрация: 03.01.2010
Сообщений: 95
Популярность: 1542
Сказал(а) спасибо: 110
Поблагодарили 460 раз(а) в 288 сообщениях
 
По умолчанию Re: Функция определения названия предмета

item1_39_ofs=$58
item2_39_ofs=$4
  Ответить с цитированием
Старый 25.03.2015, 14:55   #14
-= Мастер Света =-
 Рыцарь-лейтенант
Аватар для Smertig
 
Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(
Регистрация: 31.01.2011
Сообщений: 413
Популярность: 14489
Золото Zhyk.Ru: 300
Сказал(а) спасибо: 77
Поблагодарили 361 раз(а) в 145 сообщениях
Отправить сообщение для Smertig с помощью ICQ Отправить сообщение для Smertig с помощью Skype™
 
По умолчанию Re: Функция определения названия предмета

Альтернативный вариант для получения описания любой вещи инжектом:
1. Получаем указатель на ячейку - CELL_PTR
2. Выделяем удалённо в клиенте память - ALLOCATED_MEMORY
3. Инжектим следующий код (в другую память):
Код:
mov ecx, CELL_PTR // this = CELL_PTR
mov eax, [ecx] // eax = virtual table pointer
push 0 // параметр функции
call [eax+0x40] // вызов 11-й функции
mov [ALLOCATED_MEMORY], eax // пишем в выделенную память указатель на строку описания
4. Читаем из ALLOCATED_MEMORY - DESC_PTR
5. Читаем описание по указателю DESC_PTR
6. Освобождаем за собой память
7. PROFIT

Плюсы:
1. Для всех типов вещей один инжект
2. От версии клиента почти не зависит
3. Можно считать описание, не наводя на вещь перед этим
________________
Больше не занимаюсь читами, ушёл в серверную часть. Новый ник - int 3.
P.S. Но я всё такой же добрый модератор раздела PW.

Последний раз редактировалось Smertig; 25.03.2015 в 20:17.
  Ответить с цитированием
Пользователь сказал cпасибо:
Desmond Hume (03.05.2015)
Ответ

Опции темы
Опции просмотра

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] Определения Бота markswim Общение и обсуждение Perfect World 6 03.06.2012 13:24
[Файл] Программа для определения типов хеша todd88 Базы серверов и брут 0 03.08.2010 20:38
Ищу функцию определения Имени персонажа krukovis Общение и обсуждение Perfect World 0 28.06.2010 16:25

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

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

Пишите нам: forum@zhyk.ru
Copyright © 2019 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net