Current time: 14.04.2024, 02:11 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Исследование героев
» туториал(ы)
Author Message
GhostManSD Offline

Posts: 1054
Post: #256

Подскажите, как быть. Нашел временный адрес, где хранится нужное значение. В АМ на него более 200 указателей. И как узнать, какой из них нужен?
В Олли щелкал по тому же адресу references, нашел опять-таки за 200 адресов. Но как там искать нужное - тем более не знаю.


Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
(This post was last modified: 16.01.2011 02:24 by GhostManSD.)
16.01.2011 02:21
Visit this user's website Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #257

Найди участок кода, где используется адрес и посмотри там, с помощью какого указателя он получен.
16.01.2011 20:00
Find all posts by this user Quote this message in a reply
GhostManSD Offline

Posts: 1054
Post: #258

Как при обращении к адресу A (на который стоит хук) заменить процедуру в адресе B? Например, изначально в адресе B стоит "MOV ECX 4", а надо, чтобы было "MOV 8". Имеется в виду код в Паскале.


Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
28.01.2011 01:37
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16471
Post: #259

Посмотри в Оле, сколько байтов занимает сама команда, а сколько константа. Например, если 2 байта команда, то прибавь к адресу 2, а затем напиши: PINTEGER(адрес)^:=8. Если константа однобайтовая, то PBYTE(адрес)^:=4;


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
28.01.2011 01:45
Find all posts by this user Quote this message in a reply
etoprostoya Offline

Posts: 1809
Post: #260

Ссылка в первом сообщении темы не работает.
28.01.2011 01:56
Find all posts by this user Quote this message in a reply
GhostManSD Offline

Posts: 1054
Post: #261

Berserker, можно подробнее для идиота?
1. Что подразумевается под константой? Адрес хука?
2. Где смотреть, что сколько байт занимает?
Простите, если мои вопросы кажутся непроходимо тупыми...


Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
28.01.2011 02:37
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16471
Post: #262

Для идиота смысла нет, а умному человеку почему бы не объяснить? Sm
Image: original.jpg
Видишь, B9 - байт-команда = MOV ECX, SomeConst, а сама константа занимает 4 байта и находится, естественно, байтом правее от адреса команды. Соответственно, нужно записать по адресу 701001(в моём случае) 8.
PINTEGER($701001)^:=8.

Однако это только для кода вога, для которого разрешена запись. Для остального нужно использовать процедуру:

Code:
PROCEDURE WriteAtCode (Addr: POINTER; Buf: POINTER; Count: INTEGER);
VAR
    OldPageProtect:    INTEGER;

BEGIN
    {!} ASSERT(CodeAddr <> NIL);
    {!} ASSERT(Buf <> NIL);
    {!} ASSERT(Count > 0);
    Windows.VirtualProtect(CodeAddr, Count, PAGE_READWRITE, @OldPageProtect);
    MOVE(Buf^, CodeAddr^, Count);
    Windows.VirtualProtect(CodeAddr, Count, OldPageProtect, NIL);
END; // .PROCEDURE WriteAtCode

Вызывать так.

Code:
VAR
  Patch: INTEGER;

Patch:=8;
WriteAtCode(Ptr(адрес), @Patch, 4);


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
28.01.2011 03:43
Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 622
Post: #263

Quote:Однако это только для кода вога, для которого разрешена запись.
А разве то ли в ТЕ, то ли в Эре защита со всех секций не снята?
___________
Где хранятся записи о требованиях к отстройке? Раскуривание CD:B результатов не дало.
(This post was last modified: 28.01.2011 17:24 by feanor.)
28.01.2011 17:19
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16471
Post: #264

Не снята. Просто воговская часть имеет флаг на запись и расценивается как данные. А вот содовская, как и ранее, сгенерит исключение.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
28.01.2011 19:17
Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 622
Post: #265

Quote:А вот содовская, как и ранее, сгенерит исключение.
Хм..у меня не генерит, не смотря на то, что я делаю, скажем, так:
Code:
*(int*)(0x59F898+1) = CREATURE_ENERGY_ELEM;
28.01.2011 19:45
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16471
Post: #266

Перепроверил. Был не прав. Очень странно. Выходит теперь любая ошибка запросто портит код, а когда уже будет исключение, анализировать будет нечего.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
28.01.2011 19:47
Find all posts by this user Quote this message in a reply
GhostManSD Offline

Posts: 1054
Post: #267

Подскажите, пожалуйста, каков адрес x-переменных функций? Возможно ли вывести какую-нибудь общую формулу в духе [адрес функции 1 * номер функции] + [адрес x1 * номер x]?


Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
03.02.2011 06:08
Visit this user's website Find all posts by this user Quote this message in a reply
Prayer Offline

Posts: 56
Post: #268

Здравствуйте!
Никто случаем не занимался изменением главного меню игры? Меня интересует дизабил некоторых кнопок. Как, например, это реализовано, если ваш компьютер клиент в сетевой игре:

Image: 8397f4f51de37314eb76b6f63954a254.jpeg

Позарез нужно отключить или убрать из меню вообще кнопку "Показать дополнительные опции", чтоб на серваке ее тоже нельзя было использовать. Нашел дефку кнопки - gspbutt.def, текста на ней в genrltxt.txt.

Почитал данную ветку, полез на wasm.ru начал читать "Крекинг с нуля" 141, скачал Olly. Даже бряк поставил на gspbutt.def 147
И только потом понял, что я вообще не соображаю, что дальше делать105 Видать в моем возрасте уже позновато с нуля начать програмировать, при том что общие навыки в этом деле + знание языков = 0,000108
(This post was last modified: 03.02.2011 10:27 by Prayer.)
03.02.2011 10:25
Find all posts by this user Quote this message in a reply
GhostManSD Offline

Posts: 1054
Post: #269

На фига бряк-то? Смещай координаты просто за пределы экрана.

Или забей нопами отрисовку.


Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
(This post was last modified: 03.02.2011 13:46 by GhostManSD.)
03.02.2011 13:46
Visit this user's website Find all posts by this user Quote this message in a reply
GhostManSD Offline

Posts: 1054
Post: #270

Мастера, подскажите, пожалуйста, как по умному сделать. Нужно, чтобы при хуке на адресе A:
1) сравнивалось значение по адресу B с -1 (CMP DWORD [адресB], -1);
2) если по адресу B и вправду -1, то команда по адресу C будет MOV ECX, DWORD [EDX*4+$68A36C];
3) если по адресу B отличное от -1 значение, то команда по адресу C будет MOV ECX, DWORD [адресB*4+$68A36C].

Я пробовал менять опкод и аргумент через PINTEGER, но у меня выходит хрень какая-то. Помогите, пожалуйста!


Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
03.02.2011 15:12
Visit this user's website Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group