![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 23.12.2012
Сообщений: 8
|
![]()
Здравствуйте, заранее извиняюсь за такой может-быть нубский вопрос, в ассемблере я новичок. Проблема: Как с помощью nasm передать управление другому бинарнику? Допустим у нас есть 1.bin и 2.bin, как из 1.bin передать управление 2.bin?
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
смотря что в вашем 2.bin...
насколько я понимаю, либо выделить память, прочитать в эту память 2.bin и передать управление на точку входа, либо воспользоваться функцией ОС: выполнить указанный файл (разумеется, файл должен соответствовать требованиям операционной системы к исполняемым файлам!) |
![]() |
![]() |
![]() |
#3 | |
Регистрация: 23.12.2012
Сообщений: 8
|
![]() Цитата:
Допустим в 2.bin есть следущие строки Код:
|
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
стоп. что значит, "Допустим в 2.bin есть следущие строки" ?!
2.bin - это что - ТЕКСТОВЫЙ файл, содержащий исходный текст программы на ассемблере?! я, исходя из расширения BIN, решил, что это БИНАРНЫЙ файл... я ошибся?... |
![]() |
![]() |
![]() |
#5 |
Регистрация: 23.12.2012
Сообщений: 8
|
![]()
Похоже это я ошибся. То есть нельзя делать jmp на определённую часть бинарника? Тогда нужно загрузить его в память.
Последний раз редактировалось EnderChiken; 22.02.2013 в 13:41. |
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
если это простой бинарник (типа .COM файла), тогда можно загрузить файл в память (прочитать с диска и результат поместить в ОЗУ) и сделать JMP на начало этой памяти (куда грузили). |
|
![]() |
![]() |
![]() |
#7 |
Регистрация: 23.12.2012
Сообщений: 8
|
![]()
Это обыкновенный RAW бинарник (nasm 1.asm -f bin -o 1.bin), так вот мне не понятно как загрузить его в память и сделать jmp туда.
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
![]()
Вопрос лишь в одном - что у вас в данный момент запущено? Если полноценно запущен DOS, то можно выделить область в памяти (функции 48-4a int 21h). Если под windows, то используйте API, а если это один из элементов загрузчика, то процесс выделения памяти должен именно вами и контролироваться. После загружаете туда ваш файл (используя сервисные функции DOS, BIOS или API Windows) и по известному адресу сегмента и смещению (см. ваш бинарник) передаете управление. Например, так:
Код:
Правильно поставленная задача - три четверти решения.
|
![]() |
![]() |
![]() |
#9 | |
Регистрация: 23.12.2012
Сообщений: 8
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#10 | |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 639
|
![]()
Вам же ответили:
Цитата:
ICQ: 677936656 Gmail: ekEmbed@gmail.com
|
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как еще по другому | илхам | Microsoft Office Excel | 1 | 29.01.2013 11:12 |
Как передать управление из одного объекта в другой? | wolf05632 | Microsoft Office Word | 16 | 10.04.2011 08:21 |
При чтении из консоли в одном потоке, не передается управление другому потоку | Хохол | Общие вопросы по Java, Java SE, Kotlin | 3 | 10.11.2010 18:22 |
как из макроса передать управление пользователю, а потом опять макросу? | Тупой | Microsoft Office Excel | 5 | 03.09.2009 23:01 |
передать данные другому приложению | vasya_pupkin | Win Api | 1 | 16.02.2007 20:17 |