GTA Vice City > Справочная информация
Выкладываем наработки по анализу кода, дизассемблированные базы, адреса
xanser:
Может интересно будет, по-моему это 0x813D10 адресс указателя на полицейский вертолет.
Если он полноценный объект класса CVehicle (или CHeli), то доступны например его координаты:
--- Код: C++ ---DWORD* dwPoliceHeli = (DWORD*) (0x813D10); if (*dwPoliceHeli) { BYTE* bHeliBlock = (BYTE*)(*dwPoliceHeli); float* fHeliX = (float*)(bHeliBlock+0x34); float* fHeliY = (float*)(bHeliBlock+0x38); float* fHeliZ = (float*)(bHeliBlock+0x3C); *fHeliZ = max(*fHeliZ,100); // не дает приближаться ниже 100 метров}
Почему этот адрес никто не искал раньше, лично меня бесит этот тупой хеликоптер, лучше сделать свои вертолеты.
Можно также активировать второй вертолет, например при 6 звездах, это известный адрес 0xA10ADB
Sektor:
Цвет лазера снайперки LASER.
Не знаю, но может быть кому это пригодиться, изменить сам цвет лазера, не точки текстуры. Ниже дам конкретные адреса:
--- Код: C++ ---005CCB76 //Alpha005CCB7B //B005CCB7D //G005CCB7F //R
Если присвоим такие значение на примере:
--- Код: C++ --- *(BYTE*)0x05CCB7B = 0; *(BYTE*)0x05CCB7D = 255; *(BYTE*)0x05CCB7F = 0;
то получим это:
Если сделаем так:
--- Код: C++ --- *(BYTE*)0x05CCB7B = 255; *(BYTE*)0x05CCB7D = 0; *(BYTE*)0x05CCB7F = 0;
То результат будет такой:
Если захотите более подробно рассмотреть код, то кнопка "G" вбить туда адрес 05CCB7B в IDA, и вы окажитесь в нужном месте.
mike43842:
так как в ассемблере я понимаю мало, sektor мог бы ты объяснить как ты определил где именно какой цвет и альфу?
005CCB76 //Alpha
005CCB7B //B
005CCB7D //G
005CCB7F //R
Sektor:
Тут совсем все просто:
--- Код: ASM ---.text:005CCB50 070 FF 35 08 D4 69 00 push dword_69D408 ; float.text:005CCB56 074 6A 00 push 0 ; char.text:005CCB58 078 FF 35 98 D3 69 00 push dword_69D398 ; float.text:005CCB5E 07C 6A 01 push 1 ; char.text:005CCB60 080 6A 00 push 0 ; char.text:005CCB62 084 6A 01 push 1 ; char.text:005CCB64 088 6A 00 push 0 ; char.text:005CCB66 08C 6A 00 push 0 ; char.text:005CCB68 090 FF 35 90 D4 69 00 push dword_69D490 ; float.text:005CCB6E 094 FF 35 94 D4 69 00 push dword_69D494 ; float.text:005CCB74 098 50 push eax ; int.text:005CCB75 09C 68 FF 00 00 00 push 0FFh ; char.text:005CCB7A 0A0 6A 00 push 0 ; char.text:005CCB7C 0A4 6A 00 push 0 ; char.text:005CCB7E 0A8 68 80 00 00 00 push 80h ; char.text:005CCB83 0AC 55 push ebp ; int.text:005CCB84 0B0 E8 17 5C F7 FF call sub_5427A0
call sub_5427A0, это как раз и есть то, что рисует партиклы (CParticle), так вот первые у нее параметры, кроме push ebp вот эти:
--- Код: ASM ---.text:005CCB75 09C 68 FF 00 00 00 push 0FFh ; char.text:005CCB7A 0A0 6A 00 push 0 ; char.text:005CCB7C 0A4 6A 00 push 0 ; char.text:005CCB7E 0A8 68 80 00 00 00 push 80h ; char
Это и есть RGBA. Именно через push, функция при вызове принимает эти параметры как через стек. Хочу довести сведенья что вы можете по играть с этими значениями:
--- Код: ASM ---.text:005CCB50 070 FF 35 08 D4 69 00 push dword_69D408 ; float.text:005CCB58 078 FF 35 98 D3 69 00 push dword_69D398 ; float.text:005CCB68 090 FF 35 90 D4 69 00 push dword_69D490 ; float.text:005CCB6E 094 FF 35 94 D4 69 00 push dword_69D494 ; float
Это передаются указатели на float значения, сами же значения находятся тут:
--- Код: ASM ---.data:0069D408 00 00 C0 3F dword_69D408 dd 3FC00000h .data:0069D398 00 00 00 00 dword_69D398 dd 0 .data:0069D490 00 00 48 42 dword_69D490 dd 42480000h .data:0069D494 9A 99 99 3F dword_69D494 dd 3F99999Ah
Что-бы их перевести в более понятный вид float, для этого на примере выделим 3FC00000h это, затем в главном меню IDA, нажмем Edit->Operand type -> Number и наконец Floating Point и наша константа приобретает такой вид:
--- Код: ASM ---.data:0069D408 00 00 C0 3F dword_69D408 dd 1.5
Почему я назвал это константой?
потому-что она использовалась только для чтения, когда нажал кнопку X и проверил ее полностью:
Обратите внимание, как везде type установлен как r, это и есть просто чтение. Таким образом вы определили что это константа а не переменная, это трюк из реверсивной инженерии.
graveman:
xanser, Sektor. Да, весьма интересный материал.
Навигация
Перейти к полной версии