Wake of Gods Forum | Форум Во Имя Богов

Full Version: Исследование героев
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Понял, в чём проблема события. У тебя и МОРа установка заплаток происходит по сто раз )))
Сейчас ищу ошибку стёка.
Добавлено:
Ответ: под нормальным отладчиком всё чисто.
Quote:почувствуй разницу. откуда в геройской секции такие адреса могут быть?
А у меня JMP в оле)
Sav, признайся ты специально? 108:D
В Иде, если через другой отладчик тоже jmp, оказывается. Но этот другой виснет после 3-х повторяющихся breakpoint-ов, поэтому я его не использовал.
Поправить исходники нужно:
USES Win, Utils, SysUtils, VPUtils; => USES Win;

BEGIN
    [hooks...]
END.

=>

BEGIN
    Win.DisableThreadLibraryCalls(Win.GetModuleHandle('Damage_s.dll'));
    [hooks...]
END.

Код запретит вызывать основую процедуру DLL, которая иначе будет при создании и удалении потоков в программе заново устанавливать хуки, тем самым перезаписывая точки останова в отладчике.
Добавлено:
И точку останова можно ставить только после выполнения кода инициализации Эры, иначе она будет переписана хуком. Зы, точка останова = запись 0xCC по адресу, если что.
Теперь всё нормально.
Большое спасибо!
Quote:USES Win, Utils, SysUtils, VPUtils;
Это, видимо, было сделано специально - иначе файл получается слишком маленький и на него ругается антивирус (Avira, по крайней мере).
Quote:Теперь всё нормально.
Большое спасибо!
Не за что.

Quote:Это, видимо, было сделано специально - иначе файл получается слишком маленький и на него ругается антивирус (Avira, по крайней мере).
Нет. Просто эти модули у тебя и МОРа вообще не используются, а в Эре использовались.
А ругаться на маленький файл глупо. Меньше размер - лучше компилятор.
Berserker Wrote:А ругаться на маленький файл глупо. Меньше размер - лучше компилятор.
Авире скажи.Sm
Мне проще включить туда эти модули, чем разбираться с антивирусом. Поставлю только туда комментарий-напоминание, чтобы не забыть, если что, что можно убрать это.
Sav, скорее всего её эвристику смущает не размер, а твой код, не похожий на код обычного приложения. А если подключить модули, то появляется много чего на вид нормального.
Здесь уже сталкивались подобной проблемой: http://forum.df2.ru/index.php?s=&showtop...t&p=381860.
Поэтому я и подумал именно на размер.
Такой подход даже эвристикой назвать сложно.
Помогите заполнить пробел в знании ассемблера: как работать с командами fild, fstp, fld, fmul, fdivr, fstp и прочими «f…»? Я понимаю, что они предназначены для операций над float – числами с плавающей запятой (как переменные e и e- в ERM). Но что конкретно они делают, что в каких регистрах/ячейках памяти должно находиться и куда возвращается результат – не знаю.
Небольшой хэлп по операциям с плавающей точкой x86:
http://zalil.ru/30233173
Собственно не хэлп, а описание операций.
Ещё рекомендую почитать мануалы от Agner'а http://www.agner.org/optimize/
И от Intel http://www.intel.com/design/pentiumii/ma...245127.htm

А так, если ввести ограничение на неиспользование процессоров ниже Пентиум 3 или Пентиум 4, то лучше использовать гораздо более удобные регистровые инструкции SSE и SSE2 и забить на стековые операции.
(21.11.2010 21:58)Berserker Wrote: [ -> ]Поправить исходники нужно:
USES Win, Utils, SysUtils, VPUtils; => USES Win;
О, кстати. Я этот пост не видел, а как-то сам допёр, когда делал dwellings.dll. Просто меня озадачило, что длл-ки Феанора весят почти в два раза меньше, а делают больше. Подумал: язык тут вряд ли играет особую роль, значит, что-то явно лишнее. Поубирал последовательно используемые средства - длл отказалась компилироваться только без win, а с ней одной работает нормально.
Такой вот метод тыка. 96-copy

etoprostoya, спасибо!
Reference URL's