You are not logged in.
Такое действительно возможно. Если так, я сильно извиняюсь.
Если это был первый пост - это вполне вероятно. Обычно я смотрю на дату регистрации и количество постов (ну, и на содержимое поста). Но, в общем потоке вполне мог ошибиться (ежедневно удаляется порядка десятка спамеров).
struct A {
int b;
char * c;
};
void d (A* pa);
//...
A e;
d (&e);
Основная обновляемая база - EfLC 1.1.2.0
Увы, последние два месяца, на новой работе так напрягают, что я уже забыл, когда послений раз в дизассемблер залезал
__cdecl
(иначе, невозможны были бы функции с переменным числом параметров, например, printf)
@Tarith - Попробовать можно.
Нужен .exe-шник (выложить куда-нибудь и кинуть мне ссылку).
Скорее всего, достаточно будет убрать проверку результата XLiveUnprotectData
@Den_spb - Если верить debug info из GTA III, эта структура, оригинально называлась CPlayerInfo.
Их не пул, а массив. Для III/VC/SA, в массиве два элемента (на консолях был режим с двумя игроками, каждый со своего пада). Для IV - 16/32 объекта (консоли/PC).
Возможно, это от незнания о FORCE_WEATHER (не помню, как он в опкодах называется)
@Wire - Все структуры с описаниями есть в RenderWare SDK
по смещению +0x18 в любом Entity хранится указатель либо на RpClump, либо RpAtomic.
BoundBox возвращается виртуальным методом _m24 в CEntity и всех его потомках.
Не _делал_. Делаю. Но, как говорится - чуть-чуть не считается.
Я всегда говорил, что времени у меня на это постоянно не хватает, и если его сделает кто-то другой, я буду только рад.
Особенно, после того, как будет готов нормальный декомпилятор, и можно будет писать полноценные миссии и сюжет (в смысле, будет нормальное построение структур и глобального сегмента, а также сигнатурный анализатор).
[@~AquaZ~ - Можно, но все места, использующие __thiscall придется заменять ассемблерными вставками, а их там много.
gta_dll оно называется по историческим причинам. Вернее, в настоящий момент оно называется sa_dll, чтобы не путать с vc_dll и iv_dll.
@Yoda, @~AquaZ~ -
Распространение компакта (не)легально настолько же, насколько и любого другого No-DVD.
Оригинальный .exe - шифрованный, и сделать с ним что-то достаточно тяжело.
То, что называется 1.0US (как и 1.1US и 1.0EU) - это не до конца расшифрованные .exe соответствующей версии. Т.е., в них осталось ~10M мусора и ~3000 шифрованных фрагментов кода, которые расшифровываются на базе этого мусора. В компакте - все эти фрагменты расшифрованы и мусор выкинут (ох, и задолбался же я это делать), так что он более оригинальный чем 1.0US, который брался за основу 
Прикладывать к моду его не стоит; на крайний случай, можно выложить на какой-нибудь файлообменник и дать ссылку.
@Sw[ee]t, @Voron295 -
#include <windows.h>
BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
switch (ul_reason_for_call) {
case DLL_PROCESS_ATTACH:
// инициализируемся
break;
case DLL_PROCESS_DETACH:
// освобождаем ресурсы
break;
}
return true;
}
@DK22Pac - применить функцию для всех атомиков в клампе; применить функцию ко всем объектам фрейма.
@Shag - соответствующий объект должен присутствовать в .dff
@DK22Pac - про renderPrimitive (как и про RwRenderStateSet), лучше всего заглянуть в документацию (там все написано подробно). Аналогично с RpAtomic -> RpClump -> RwFrame
вкратце, clump - это набор atomic-ов
отказывается ставиться с какой формулировкой?
С настройкой линукса не справляется даже народ, который точки доступа делает.
А что. на ноуте виндовой наклейки нету?
Снести линукс. Линукс и WiFi - вещи слабосовместимые.
Если не хочется виндов - поставить FreeBSD.
Да, только заземление должно быть нормальным, как положено по СНИПам (а не "провод в цветочный горшок"
)
Это утечка напряжения в фильтре блока питания. (Там на входе стоят два конденсатора).
Заземление решает эту проблему. (и многие другие).
Теоретически, ничего опасного в этом нет, но за корпус и за батарею одновременно браться сильно не рекомендуется).
@DK22Pac - Кусок какого-то кода 
Кусок слишком мелкий, чтобы сказать, что он делает
_vB0 = ??? / 32767.f * 0.3f + 0.7f * static_cast<float>(_vB0) / 65535.f
RwEngineInstance->RwRenderStateSet (rwRENDERSTATETEXTURERASTER, ????)
??? - то, что отсутствует в этом куске.
PS. Сам-то кусок я нашел, но он противный, нужно разбирать почти всю функцию, чтобы понять, что там делается. Там цикл по массиву структур над которым хорошо поработал оптимизатор и есть куча указателей в середину структур.
http://www.hexblog.com/wp-content/uploa … hinsky.pdf
Рекомендуется. Здесь есть еще несколько вещей, с которыми лично я не сталкивался.
У меня нету базы listenera напишите, что я должен изменить ну какие адреса. (или объясните как загрузить базу в программу ida pro 6.1 demo)
demo не позволяет загружать сохраненные базы (ограничение демо-версии).
Ищи не-демо (рутрекер в помощь).
@444andrei444 - погоду не смотрел, а с маркерами - это багофича. В оригинале, предполагалось, что цвет маркера - это индекс в таблице от 0, до 8. На практике, если значение больше восьми, то оно возвращается просто так, без обращений к таблице.
есть где-нибудь годный гайд с примерами на тему инжекта кода?
хочу повторить код, который есть в стандартном exe (естественно вызывать его в нужное мне время и с нужными мне параметрами), но я не знаю, как найденный код перенести на C++ (сложность в том, чтобы обозначить границы действительно нужного ассемблерного кода).
...
если нет гайдов, не мог бы кто-нибудь привести пример описания у себя функции с параметрами (здесь уже речь об описании прототипа функции, без использования ассемблерных вставок)?
Гайда нет. Все, что могу предложить - посмотреть, как я это делаю в gta_sa_dll или в openRage.
и ещё. когда копаю эти функции, нередко натыкаюсь на "ненужные" параметры перед собственно вызовом функции по адресу (наряду с важными для функции значениями (передаваемыми параметрами) в стек пихаются какие-нибудь нули или единицы (независимо от параметров)). как у себя описывать такие функции (тут уже не куски кода, а описание функции на C++ с указанием её адреса в пространстве)? в смысле, есть функция void FUNCTION (int, float). я точно уверен, что важны два параметра и могу определить их в отладчике, однако в коде зачем-то в стек пихается больше значений, чем два. в общем, я даже не знаю как сформулировать вопрос
как приложение понимает, что функция, вызываемая как FUNCTION (10, 234.55) на самом деле принимает только 2 параметра и как мне описать такую FUNCTION, если я наткнусь на непонятные "лишние" параметры в стеке?
http://sannybuilder.com/forums/viewtopic.php?id=159 - здесь есть все, кроме, собственно, примеров.
В дополнение к этому, стоит сказать, что для __cdecl функций можно описывать параметры произвольно. Для __stdcall и __thiscall, важно, чтобы совпадал общий размер параметров. Тип незадействованных параметров - не критичен.
ещё. предположим, я хочу повторить функцию лечения игрока (например, ту, которая срабатывает при покупке газировки). вот я нашёл, какая операция меняет собственно значение здоровья игрока. где-то выше этого кода стопроцентно всегда идёт нужный для работы функции код. как понять, где этот нужный код начинается? неужели нужен весь код до первого встречного выше ret?
Можно, конечно. заменить только несколько команд через __declspec(naked). На практике, это делать очень сильно не рекомендуется. Подавляющее большинство функций в отреверсенном виде занимает меньше ста строк. Разводить ради этого возню с ассемблером и регистрами - непродуктивно.
Впрочем, из этого правила есть исключение. новые компиляторы могут не соблюдать calling convention для внутренних функций и передавать параметры в произвольных регистрах. В этом случае, корректный реверсин требует переписывания всех "неправильных" функций, и общий объем получаться вполне ощутимым. В этом случае, naked функции оправданы.
@444andrei444 - Почему же? Нужно просто найти эту текстуру в памяти и заменить на свою.
auto generateLicenseplateMaterial = reinterpret_cast<RpMaterial * (__cdecl *)(CClump *, char *, DWORD)>(0x6FE0F0);