eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июня!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: Artificia, figgler (+1 невидимый пользователь)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Вопросы новичков —› EvePilot
Посл.ответ Сообщение

Ранг: 0.1 (гость)
Статус: Участник

Создано: 2 июня 2013 19:15 · Поправил: xolseg New!
Цитата · Личное сообщение · #1

И так, не так давно начал играть в еву, нашел бота и попытался его сломать, начал это делать на другом форуме, но пришел сюда, надеясь найти помощи.
И так, в триал версии EVEMiner есть "защита" с таймером в 120 минут, после идет выключение программы. Данное ограничение я убрал, знаний хватило.
EVEPilotFixtimeminer

Дальше, я взялся убирать ограничение EVETrader и тут столкнулся с проблемой.
Суть такова, разрешено покупать/продавать в триал версии только книжки "скилов"/навыков.
Если не лицензии нету, выскакивает окошко:

проверки находятся по "адресам":
Pe.fje(f5e) : Int32
Pe.fPe(f5e) : Int32
Pe.N3e(ffe) : Int32


И далее идет репост моего поста с другого форума, подскажите пожалуйста направление куда копать или объясните что я не так делаю. Я не прошу всё делать за меня, прошу только подсказать.

Code:
  1. Label_1CD3:
  2.                 if (ffe_0.General_WriteDebugLog && ffe_0.General_DetailedDebugLog)
  3.                 {
  4.                     UHe.ee("Trader", "Trading of " + current.string_0 + " disabled in trial mode. Code 3");
  5.                 }
  6.                 Class3.he(0x10, "Trader Trial Limitation", "Trial verion of a trader may be used to trade skillbooks only. Purchase full version license to trade: {0}", 0x1e, new object[] { current.string_0 });
  7.                 return 0x3;


Label_1CD3: вызывается в Label_1C4C
Code:
  1. Label_1C4C:
  2.                     if (ge != 0x96)
  3.                     {
  4.                         goto Label_1CD3;
  5.                     }

Идём выше по цепочке:
Code:
  1. Label_1C1C:
  2.                    if (pe.ge == 0x0)
  3.                     {
  4.                         goto Label_1C4C;
  5.                     }
  6.                     ge = pe.ge;
Code:
  1.  
  2. Label_1C34:
  3.                    pe = Class0.Oe.Je(ge);
  4.                     if (pe != null)
  5.                     {
  6.                         goto Label_1C1C;
  7.                     }


И вот тут начинаются выкрутасы:
Code:
  1. if (flag)
  2.         {
  3.             using (List<Nne>.Enumerator enumerator = ffe_0.Trader_CurrentOrders.GetEnumerator())
  4.             {
  5.                 Nne current;
  6.                 while (enumerator.MoveNext())   // - функция до выхода значения false (т.е. получается если bool flag = false оно должно ниже стать таковым, но ни как не true)
  7.                 {
  8.                     nIe.VPe pe; // - это для чего тут?
  9.                     current = enumerator.Current; // - это более менее понятно
  10.                     nIe.V5e ve = Class0.Re.Je((int) current.se); // - это не понятно (nIe.V5e ve это равно Class0.Re.Je((int) current.se) этому?
  11.                     if (ve == null) // - если ve = null, то идет вызов 1C65
  12.                     {
  13.                         goto Label_1C65; // - вызов проверки на валидность итема
  14.                     }
  15.                     int ge = ve.Int32_1; // - а тут что? int ge равен ve.Int32_1 - этому числу? вынесу в примечание.
  16.                     goto Label_1C34; // - вызов проверок для вывода окна с ошибкой.


И так, вот тут я не понимаю не черта.
Что это делает и чем занимается? Я понимаю что условия если, что то, то то-то.
Что за значение, откуда берутся и почему сравниваются.
Т.е. мне нужно, как то вернуть значение false. Что бы окно не показывалось с ошибкой, каким образом мне это сделать?
Выставить nIe.V5e ve = false или Class0.Re.Je((int) current.se) = false? Если да, то выглядит это проще чем кажется. А если нет, то придется подумать, но что то с логикой у меня плоховато.


Примечание, goto Label_1C65 это:
Code:
  1. Label_1C65:
  2.                 if (ffe_0.General_WriteDebugLog && ffe_0.General_DetailedDebugLog)
  3.                 {
  4.                     UHe.ee("Trader", string.Concat(new object[] { "Item with ID ", (int) current.se, ", Name ", current.string_0, " not found in the database. Code 0" }));
  5.                 }
  6.                 return 0x0;



Примечание, public int Int32_1 это:
Code:
  1. public int Int32_1
  2. {
  3.     get
  4.     {
  5.         int num;
  6.         try
  7.         {
  8.             num = (int) base[this.ie.de];
  9.         }
  10.         catch (InvalidCastException exception)
  11.         {
  12.             throw new StrongTypingException("The value for column 'marketGroupID' in table 'invtypes' is DBNull.", exception);
  13.         }
  14.         return num;
  15.     }
  16.     set
  17.     {
  18.         base[this.ie.de] = value;
  19.     }
  20. }

Ранг: 0.2 (гость)
Статус: Участник

Создано: 10 июля 2013 14:52 New!
Цитата · Личное сообщение · #2

Интересное начинание. Я в свое время пытался, но у меня ничего не получалось в связи с полным отсутствием опыта. Не могли бы вы поделиться информацией как удалось убрать таймер? А то файл который вы выложили уже потерли.

Ранг: 300.0 (мудрец)
Статус: Участник

Создано: 10 июля 2013 15:41 · Поправил: Veliant New!
Цитата · Личное сообщение · #3

Копай в сторону Class0.Oe.Je
Class0.Re.Je по смыслу просто проверяет есть ли вообще вещи с таким id

Либо патч вот тут if (ge != 0x96) чтоб всегда проходило условие (id книжки так понимаю)

Ранг: 0.2 (гость)
Статус: Участник

Создано: 28 сентября 2013 22:12 New!
Цитата · Личное сообщение · #4

xolseg, Пожалуйста, скажи как ты убрал ограничение на 120 минут.
 eXeL@B —› Вопросы новичков —› EvePilot

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS