![]() |
eXeL@B —› Вопросы новичков —› Visual Build |
Посл.ответ | Сообщение |
|
Создано: 09 февраля 2009 23:56 · Поправил: s0larian · Личное сообщение · #1 Всем привет. Начал копать Visual Build Professional. В комплекте две проги: главная и консольная. Консольная отломалась за 20 минут - в самой проге отламывается проверка eval/date и всё. Патчатся два куска: Code:
Code:
А вот с GUI версией просто труба. В самой проге реализован только обработчик событий (этих самых build events) который вызывается из кода DLL-ки и делает SendMessage() в главный поток. Думаю что через этот интерфейс идут только строки - то что появляется в логе. Всё остальное, похоже, реализовано в VisBuildSvr.dll и исполняется в отдельном потоке. www.kinook.com/Download/VisBuildProEval.exe Беда в том, что dll-ка распаковывается на лету и после первого breakpoint-a всё начинает сыпаться... Сделал dump dll-ки с PE tools. Экспорт есть, импорт тоже, но не полный - не хватает 9ти ф-ций - по одной из последних 9и dll: rapidshare.com/files/196142284/VisBuildSvr.dll.html rapidshare.com/files/196142685/VisBuildSvr_d.zip.html Update 1: Проблема была с non-bound imports - создал их заново, depends нормально всё показывает: rapidshare.com/files/196157548/VisBuildSvr_d.dll.3-imp.zip.html Народ, посмотрите пожалуйста - что-то я упустил - прога говорит что регистрация компонента не фачед... В dll-ке COM компонет живёт, помимо остального... Update 2: visbuildcmd.exe глючит начиная вот тут: Code:
Это ж системный вызов и должен работать - инициализировать COM компонент загрузив DLL... Хм, что-то криво в дампе? Вылет в kernel32!InterlockedIncrement из-за кривого указателя. Вот stack в WinDBG: Code:
посмотрел в IDA - там куски стандартных MS библиотек... Не должно это глючить: Code:
![]() |
|
Создано: 10 февраля 2009 08:39 · Личное сообщение · #2 |
|
Создано: 10 февраля 2009 11:06 · Личное сообщение · #3 |
|
Создано: 10 февраля 2009 20:39 · Личное сообщение · #4 |
|
Создано: 10 февраля 2009 22:39 · Личное сообщение · #5 Кто сказал, что одинаковые то? Арма сама писана на Сях, если ида опознаёт как рантайм-это не значит, что это нужная функция. По моему мнению, ОЕП=8c306, это РВА. Стало быть, дампить на этом адресе и прикручивать импорт и релоки, стандартный анпак. Ну или тулзами попробуй типа армагеддона, если ручками лень, авось, возьмут. ![]() |
|
Создано: 11 февраля 2009 10:26 · Личное сообщение · #6 Хммм.. похоже ты прав - помучил либу в Оле и вывалился в код тут: Code:
это тоже runtime initialization. Снял dump, почистил импорт, но беда в том, что рушится вот тут: Code:
по-моему, в последней строчке должен быть вызов HeapCreate()... посмотрел ещё по коду -- импортов не хватает... Вот dump: rapidshare.com/files/196674101/VisBuildSvr.dll.zip.html А как добыть правильный импорт? ImpRec показывет, вроде, точно то же что уже есть в DLL-ке... ![]() |
|
Создано: 11 февраля 2009 19:40 · Личное сообщение · #7 Видимо, с анпаком ты мало дело имел. Импрек хренота. И покажет он мусор, потому что сама таблица ИАТ вынесена вообще за пределы образа в динамически аллокаемую память, а часть импорта ещё и на переходники перенаправлена, их импрек вообще не распознает. Чтоб импрек увидел всё нормально, пошаманить придётся немного. Ещё юзается код сплайсинг, куски кода выносятся за пределы образа, дамп неполный и будет падать. Попробуй почитать статьи про Armadillo/попробуй тулзы автоматические для неё/подожди, когда ещё кто-нить анпакнет, у меня сейчас к сожалению времени мало свободного. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Visual Build |