eXeL@B —› Программирование —› Запустить Dll от Vista на XP/2003 |
Посл.ответ | Сообщение |
|
Создано: 22 января 2013 06:49 · Личное сообщение · #1 Пытаюсь заставить работать одну программку на XP/2003, написанную под висту. Использует системную библиотеку msvcrt.dll. Простое перетягивание этой библиотеки не помогло. Отказывается загружаться, при команде "regsvr32 msvcrt_.dll" не проходит даже LoadLibrary. Версию ОС в заголовке подправил, но видимо, этого мало, есть еще что-то. Dependency Walker показывает, что на 2003-м все импорты на месте. Если кто-то разбирается в отличиях PE-заголовков Висты и 2003, ткните пальцем, что ему еще не нравится. Буду очень признателен. Файлики по ссылке ниже: http://rghost.ru/43220631 |
|
Создано: 22 января 2013 07:18 · Поправил: Vovan666 · Личное сообщение · #2 |
|
Создано: 22 января 2013 07:42 · Личное сообщение · #3 |
|
Создано: 22 января 2013 09:15 · Личное сообщение · #4 |
|
Создано: 22 января 2013 14:15 · Личное сообщение · #5 |
|
Создано: 22 января 2013 15:45 · Личное сообщение · #6 |
|
Создано: 22 января 2013 17:19 · Личное сообщение · #7 |
|
Создано: 22 января 2013 17:43 · Личное сообщение · #8 |
|
Создано: 22 января 2013 18:17 · Личное сообщение · #9 |
|
Создано: 22 января 2013 18:22 · Личное сообщение · #10 ajax msvcrt.dll - это системная либа, она не входит в рантаймы, это первое что я пытался сделать. Про regsvr32, я его исключительно для отладки использовал, там первая функция - LoadLibrary, на нее удобно было стать. Собственно на 2003 LoadLibrary и валится, под вистой или 7 все ОК. Что-то в заголовке не то. |
|
Создано: 22 января 2013 18:45 · Личное сообщение · #11 |
|
Создано: 22 января 2013 19:07 · Поправил: ajax · Личное сообщение · #12 |
|
Создано: 22 января 2013 20:55 · Поправил: Chrysalis · Личное сообщение · #13 |
|
Создано: 22 января 2013 21:00 · Личное сообщение · #14 |
|
Создано: 22 января 2013 22:37 · Личное сообщение · #15 Chrysalis пишет: Интересно, а что, для LoadLibrary еще что-то нужно, кроме самой либы? Если библиотека, которая загружается через LoadLibrary, нуждается в других библиотеках, которых нет или они неправильно настроены в системе, то LoadLibrary возвращает ошибку. Соответственно эти другие библиотеки могут нуждаться в третьих библиотеках. И так далее. А так как вся эта порнография происходит динамически, то Dependency Walker не может это все отследить. В любом случае без самого проекта ничего определенного сказать нельзя. ----- http://ntinfo.biz |
|
Создано: 22 января 2013 22:47 · Личное сообщение · #16 Взял я и поглядел те файлы. Во-первых, таскать нативную либу-это зло. А без неё на ХР не пашет ввиду отсутствия импортов. Так что не надо говорить, что всё с ними кошерно. kernel32 не грузится, потому что не может сделать коннект к csr. А msvcrt не грузится, потому что версию явно проверяет на 6. Возьми и отладь точки входа. Не при чём там хедер. | Сообщение посчитали полезным: Chrysalis |
|
Создано: 23 января 2013 04:07 · Личное сообщение · #17 Archer Спасибо за первый реальный совет! Archer пишет: А msvcrt не грузится, потому что версию явно проверяет на 6. Вот, блин! А как все просто то оказалось! Archer пишет: таскать нативную либу-это зло Знаю, что зло, но это было в папке для XP, а им серьезно никто не занимался. Тут надо было хотя бы с 2003-м разобраться. Раз уж разговор зашел про XP, может есть гуманные идеи, как недостающие импорты добавить в msvcrt из нативных либов от 2003-го? |
|
Создано: 23 января 2013 08:07 · Личное сообщение · #18 Chrysalis Выложи уже свою пограмулину, при чем тут длл, которые ты насилуешь я хз. Вот отпатчишь ты проверку версии в msvcrt и че дальше? А если она внутри использует функции kernel32.dll, которых просто нет в хп? Тоже будем патчить? А если эти вызовы идут в несуществующие syscall'ы ntdll? Будем добавлять и заодно ядро с собой таскать и грузить чтоле?) Ежели в программе используется неспецифический рантайм можно попытаться сделать обертки. Либо ставь вбокс с вистой и засовывай это все туда - победа. Ей богу тема из разряда как засунуть движок от мерседеса в инвалидку. |
|
Создано: 23 января 2013 09:39 · Личное сообщение · #19 |
eXeL@B —› Программирование —› Запустить Dll от Vista на XP/2003 |