Понял, в чём проблема события. У тебя и МОРа установка заплаток происходит по сто раз )))
Сейчас ищу ошибку стёка.
Добавлено:
Ответ: под нормальным отладчиком всё чисто.
Quote:почувствуй разницу. откуда в геройской секции такие адреса могут быть?
А у меня JMP в оле)
Sav, признайся ты специально?

: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:А ругаться на маленький файл глупо. Меньше размер - лучше компилятор.
Авире скажи.

Мне проще включить туда эти модули, чем разбираться с антивирусом. Поставлю только туда комментарий-напоминание, чтобы не забыть, если что, что можно убрать это.
Sav, скорее всего её эвристику смущает не размер, а твой код, не похожий на код обычного приложения. А если подключить модули, то появляется много чего на вид нормального.
Такой подход даже эвристикой назвать сложно.
Помогите заполнить пробел в знании ассемблера: как работать с командами fild, fstp, fld, fmul, fdivr, fstp и прочими «f…»? Я понимаю, что они предназначены для операций над float – числами с плавающей запятой (как переменные e и e- в ERM). Но что конкретно они делают, что в каких регистрах/ячейках памяти должно находиться и куда возвращается результат – не знаю.
(21.11.2010 21:58)Berserker Wrote: [ -> ]Поправить исходники нужно:
USES Win, Utils, SysUtils, VPUtils; => USES Win;
О, кстати. Я этот пост не видел, а как-то сам допёр, когда делал dwellings.dll. Просто меня озадачило, что длл-ки Феанора весят почти в два раза меньше, а делают больше. Подумал: язык тут вряд ли играет особую роль, значит, что-то явно лишнее. Поубирал последовательно используемые средства - длл отказалась компилироваться только без win, а с ней одной работает нормально.
Такой вот метод тыка.
etoprostoya, спасибо!