Сейчас на форуме: Rio, tyns777, zombi-vadim (+7 невидимых) |
eXeL@B —› Программирование —› Запуск файла из памяти |
Посл.ответ | Сообщение |
|
Создано: 09 августа 2014 10:03 · Поправил: just76 · Личное сообщение · #1 Всем привет! Изучаю статью "Запуск файла из памяти" с ресурса WASM. Столкнулся с проблемой. не могу понять почему в одном случае файл запускается а в другом нет. Все вроде работатет отлично, но если я в исходник добаляю функцию - "invoke MessageBox, 0, 0, 0 ,0" то файл не запускается. Прилагаю исходник + файл для заупуска ( MessageBox обычный ) + пример в котором не хочет запускатся файл. Почему так происходит? Помогите пожалуйста разобратся. c658_09.08.2014_EXELAB.rU.tgz - fasm_run.rar |
|
Создано: 09 августа 2014 11:26 · Поправил: dosprog · Личное сообщение · #2 Code:
Всё нормально запускаетс и с- и без MessageBox'а в файле START.ASM. Завершается в обоих случаях с GP#. В листинге обозначил ошибку. |
|
Создано: 09 августа 2014 12:00 · Личное сообщение · #3 |
|
Создано: 11 августа 2014 12:22 · Личное сообщение · #4 переделал пример на masm. прилагаю 2 бинарника, оба запускают файл ( простое окно ) из ресурсов. первый ( good.exe ) работает отлично, ко второму ( notgood.exe ) я добавил функцию MessageBox, и он перестал запускать файл ( простое окно ). в чем дело я понять не могу. не понимаю почему так происходит. кому не лень гляньте в ольке. в чем может быть дело. а то я всю голову сломал. да, после проецирования файла, в ольке такая картина: ----------------------------------------------------------------------------------------------- CPU Disasm Address Hex dump Command Comments 00401000 6A 00 PUSH 0 00401002 E8 95010000 CALL <JMP.&user32.MessageBoxA> ; Jump to KERNEL32.GetModuleHandleA 00401007 A3 18304000 MOV DWORD PTR DS:[403018],EAX 0040100C E8 85010000 CALL <JMP.&kernel32.ExitProcess> ; Jump to KERNELBASE.GetCommandLineA 00401011 A3 1C304000 MOV DWORD PTR DS:[40301C],EAX 00401016 6A 0A PUSH 0A 00401018 FF35 1C304000 PUSH DWORD PTR DS:[40301C] 0040101E 6A 00 PUSH 0 00401020 FF35 18304000 PUSH DWORD PTR DS:[403018] 00401026 E8 06000000 CALL 00401031 0040102B 50 PUSH EAX 0040102C E8 5F010000 CALL <JMP.ExitProcess> ; Jump to KERNEL32.ExitProcess ----------------------------------------------------------------------------------------------- 00401002 E8 95010000 CALL <JMP.&user32.MessageBoxA> ; Jump to KERNEL32.GetModuleHandleA - почему так? 0040100C E8 85010000 CALL <JMP.&kernel32.ExitProcess> ; Jump to KERNELBASE.GetCommandLineA - почему так? спасибо за внимание, надеюсь на помощь в решении вопроса. пароль к файлу: 123asd 69c7_11.08.2014_EXELAB.rU.tgz - example.rar |
|
Создано: 11 августа 2014 12:24 · Поправил: ajax · Личное сообщение · #5 |
|
Создано: 11 августа 2014 12:29 · Личное сообщение · #6 |
|
Создано: 11 августа 2014 13:47 · Поправил: DenCoder · Личное сообщение · #7 |
|
Создано: 11 августа 2014 13:58 · Личное сообщение · #8 |
|
Создано: 11 августа 2014 14:16 · Личное сообщение · #9 |
|
Создано: 11 августа 2014 14:24 · Личное сообщение · #10 |
|
Создано: 11 августа 2014 14:35 · Личное сообщение · #11 |
|
Создано: 11 августа 2014 14:42 · Личное сообщение · #12 |
|
Создано: 11 августа 2014 17:16 · Поправил: dosprog · Личное сообщение · #13 |
|
Создано: 11 августа 2014 17:35 · Личное сообщение · #14 |
|
Создано: 11 августа 2014 18:32 · Личное сообщение · #15 |
eXeL@B —› Программирование —› Запуск файла из памяти |
Эта тема закрыта. Ответы больше не принимаются. |