You are not logged in.
Допустим, есть адресс
0x11DC83C - [dword] __pLastPlayerVehicle // 1.0.7
Как его найти в ArtMoney или CheatEngine? Нужно ли ещё что-то добавлять?
Ещё пытался свериться так: перешёл в ArtMoney по адрессу 0x401000, включил тип данных "ASM instruction"
Но получаю совсем другие команды, нежели те, что вижу в IDA.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Не знаю, как в ArtM, но в CE надо вводить адрес, и там вообще можно вводить типа такого eax.dll+смещение.
А про разность кода - в art money, наверное, стоит какой-нибудь бесплатный дизасм движок, различия не большие, но могут быть, а если уж код совсем другой, то x3
Last edited by Jack Daniel's (17-12-2011 14:08)
Offline
Я только сегодня разобрался. Надо к адресу добавлять +0x9C0000.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Ещё пара вопросов.
1) Куда (в какую процедуру) лучше делать инжект в IV? (чтобы код работал постоянно)
2) Как настроить проект в MSVC++, чтобы после компиляции dll была готова к использованию в игре?
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Offline
Хм, как тогда делают плагины для 4? (тот же ин-гейм редактор weapon.dat)?
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Как-то так:
dwLoadOffset = (DWORD)GetModuleHandle (NULL)-0x400000;
С глобальной точки зрения, это не совсем корректный пример, потому что он позволяет получить адрес загрузки только основного модуля, но, в практических целях его хватит.
Offline
Т.е., к статичному адресу в IDA надо будет добавить dwLoadOffset?
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
В общем, всё заработало, спасибо, listener.
Тут приметил, что очень часто используется регистр xmm0 и команда movss, что они делают?
IDA сразу кидает этот код в __asm{ }
Ну и ещё, я так и не понял, есть ли в структуре авто незавсимые crBone (или это характеристика исключительно для моделей?, - ведь в SA указатели на rwFrame хранились в структуре автомобиля...)
Или ещё одно предположение - в структуре автомобиля находятся "упрощенные" структуры crBone (которые содержат только информацию о положении компонента).
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Это так скажем "отдельные" регистры (в x86 каждый имеет размер 64 бита, в x64 - 128) для других целей, однако можно использовать их как обычные регистры. Советую почитать об этом где-нибудь отдельно.
Попутный вопрос, если кто знает:
Как переслать из fpu регистра (ну, или памяти) в старший разряд mmx регистра данные (я знаю только как в младший)?
Last edited by Jack Daniel's (11-03-2012 14:47)
Offline
что касается xmmN - они всегда по 128 бит. В x86 их 8, в x64 - 16.
Они могут использоваться для разных целей. Самая распространенная - использование для floating point, чтобы не возиться со стековой сопроцессорной арифметикой.
Альтернативное (вообще-то, оно задумывалось как основное) использование - параллельное выполнение действий над несколькими операндами.
// прибавление числа ко всем элементам вектора двумя командами __inline Vector4& operator += (const float f) { v = _mm_add_ps (v, _mm_set_ps1 (f)); return *this; }
С пересылкой: нужно именно MMX или SSE ? MMX не работает с плавающей точкой.
@DK22Pac -
Вместо указателя на rwFrame, есть указатели на несколько структур.
Кусочек ivModels.h
class ivBaseModelInfo { // size = 0x60 public: // ... здесь были методы... phArchetypeGta * m_pArchetype; // +04 - физика gtaFragType * m_pFragType; // +08 - frag. используется только в ivPedModelInfo и ivVehicleModelInfo ivDrawableReference * m_pDrawableRef; // +0C - модель. Используется для всех остальных классов Vector4 m_vCenter; // +10 //#define m_fRadius (m_vCenter.w) // +1C Vector4 m_vAabbMin; // +20 //#define m_fDrawDistance (m_vAabbMin.w) // +2C Vector3 m_vAabbMax; // +30 //#define m_dwModelId (_f30.pad) // +3C DWORD m_dwFlags; // +40 -- 0x800000: auto allocated DWORD m_dwRefCount; // +44 WORD m_wTxdId; // +48 WORD m_wFirst2dfxRef;// +4A - index of the first 2dfx reference in ivModelInfoStore::ms_2dfxRefs1 WORD m_wAmatCount; // +4C - number of the first audio material WORD m_wFirstAmatID; // +4E - count of the audio materials used WORD _f50; // +50 - index of _F27FC4 WORD m_wBoundId; // +52 WORD m_wLodId; // +54 WORD m_wAnimationId; // +56 WORD m_wBlendshapeId;// +58 BYTE m_nb2dEffectCount; // +5A BYTE _f5B; // 2dfx flags: 0x40 - have light shaft DWORD _f5C; // +5C TODO: m_dwFragTypeAssignTime ? }; struct ivDrawableReference { rage::rmcDrawable * pDrawable; // +0 ivCustomShaderEffectBase * pShaderEffect; // +4 DWORD _f8; ivDrawableReference * pPrev; // +C ivDrawableReference * pNext; // +10 // и здесь были методы };
Offline
А, да, невнимательно прочел его пост, попутал xmm и mmx)
А насчет пересылки: было бы хорошо по mmx, да, т.к по нему не нашел полной информации (кроме сайтиков с десятком опкодов для работы с ним)
Last edited by Jack Daniel's (12-03-2012 12:24)
Offline