Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

RusFAQ.ru: программирование на языке Assembler

Выпуск № 440
от 12.12.2002, 01:30

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 2114
Отправлено ответов: 6488
Активность: 306.9 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Broken Sword
Статус: Профессиональный
Общий рейтинг: 128.3
URL: моя рассылка по Protected Mode
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 119.56
[Подробней >>]
keleb-glin
Статус: Доверительный
Общий рейтинг: 115.54
[Подробней >>]
 
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 153.24
[Подробней >>]
igorash
Статус: Профессиональный
Общий рейтинг: 115.23
Телефон: 8(903)251-86-01
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 114.49
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
 
Portnov
Статус: Профессиональный
Общий рейтинг: 115.82
URL: Мой сайтик...
[Подробней >>]
St
Статус: Опытный
Общий рейтинг: 115.93
[Подробней >>]
Maverick
Статус: Профессиональный
Общий рейтинг: 138.6
URL: Задачи по ассемблеру
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
 
masquer
Статус: Профессиональный
Общий рейтинг: 150
[Подробней >>]
Andrew Vext
Статус: Доверительный
Общий рейтинг: 108.59
[Подробней >>]
Sensey
Статус: Профессиональный
Общий рейтинг: 122.41
URL: Страничка рассылки по Паскалю
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]
 
LIFO
Статус: Профессиональный
Общий рейтинг: 122.33
URL: наш сайт
Телефон: 8 01710 24758
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 122.94
[Подробней >>]
nix
Статус: Опытный
Общий рейтинг: 103.58
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 2050. Здравствуйте! У меня вопрос по поводу CR4 почему ошибка:"undefined symbol:CR4" mov ... (ответов: 5)
Вопрос № 2051. У меня есть программа, которая отлична работает под MS VC++ (считывает заводской серийник винта). Он... (ответов: 1)
Вопрос № 2052. Дарова. У меня вот появились вопросы. 1) Если компьютер оперирует тока двоичной системой счисления, ... (ответов: 5)
Вопрос № 2053. Добрый день. В одном из последних ответов Вы сказали, что надыбали доков про ОС и/или прерываниям. Е... (ответов: 1)
Вопрос № 2054. Здравствуйте. В одном из последних ответов Вы сказали, что надыбали доков про ОС и/или прерываниям. ... (ответов: 1)
Вопрос № 2056. Требуется прога на Assembler, которая посылает в файл вводимые с клавиатуры символы и останавливающа... (ответов: 3)
Вопрос № 2057. Добрый день. odin80@xakep.ru... (ответов: 2)
Вопрос № 2058. В дополнение ответа baldr на вопрос 2014. Bob Johnson! Пока не ВЫЛОЖИЛ лабораторные кинь, пожалуйста... (ответов: 1)
Вопрос № 2059. Уважаемые эксперты прошу вас ответить (мне ламеру 13летнему) на такой вопрос!!! Объясните мне как ра... (ответов: 3)
Вопрос № 2060. Здравствуйте,ув. эксперты! В ДОС-е есть прерывания int 25h и int 26h: соотв. чтение/запись логически... (ответов: 5)
Вопрос № 2061. Всем доброе время суток!!! Недавно попал в руки старый журнал "хакер" за сентябрь месяц. Т... (ответов: 6)
Вопрос № 2063. Вот если прога запакована автоматическим распоковщиком, когда она разархевируется и попадает в памят... (ответов: 4)

Вопросов: 12, ответов: 37


 Вопрос № 2050

Здравствуйте!
У меня вопрос по поводу CR4 почему ошибка:"undefined symbol:CR4"
mov EAX,CR4
or EAX,00000010h
mov CR4,EAX
Каким образом можно поменять флаг PSE в регистре CR4 для использования 4Мб-ой страницы?
Процессор:Celeron 667
MASM v.6.1
Спасибо.
pasha_12@mail.ru



Вопрос отправлен: 07.12.2002, 02:55
Отправитель: Pasha

[Следующий вопрос >>] [Список вопросов]

Отвечает Broken Sword

Добрый день, Pasha!
а хрен его знает... в ТАСМ-е та же фигня - он видит только CR0, CR2 и CR3. Но извратиться можно так:
db 0Fh,20h,0E0h ; mov EAX,CR4
or EAX,00000010h
db 0Fh,22h,0E0h ; mov EAX,CR4
p.s. TD зато отображает все корректно, у борланда почему то отладчик всегда летит впереди планеты всей, а ассемблер отстает года на два-три.

Ответ отправлен: 07.12.2002, 10:31
Отправитель: Broken Sword


Отвечает ASMодей

Добрый день, Pasha!
Может ты забыл указать букву 'p' после типа процессора, ведь
регистр CR4 доступен только для привиллегированных команд.


Ответ отправлен: 07.12.2002, 15:49
Отправитель: ASMодей


Отвечает keleb-glin

Приветствую Вас, Pasha!
Знаешь, у меня всё работает. Но только с директивой .586


Ответ отправлен: 08.12.2002, 20:24
Отправитель: keleb-glin


Отвечает Bob Johnson

Доброе время суток, Pasha!
Укажи MASM'у тип процессора:
p586
mov eax, cr4


Ответ отправлен: 09.12.2002, 20:53
Отправитель: Bob Johnson


Отвечает igorash

Приветствую Вас, Pasha!
1. А ты написал в начале кода директиву .686 ???

Ответ отправлен: 07.12.2002, 04:50
Отправитель: igorash


 Вопрос № 2051

У меня есть программа, которая отлична работает под MS VC++ (считывает заводской серийник винта). Она состоит из кода на С++ и ассемблерных вставок. Я хочу использовать одну из функций этой программы под CBuilder 6.0, но борландовский компилятор указывает на строку "_asm Call FWORD PTR [CallgateAddr]" и говорит "[C++ Error] diskid32.cpp(495): E2329 Invalid combination of opcode and operands".
Не подскажете, как это исправить? Различия возникают из-за различий между tasm и masm?
P.S. Полный код программы приложить не удалось, так как он превышает допустимый размер. Могу выслать любому по почте, мой e-mail: TanaT@hotmail.ru



Вопрос отправлен: 07.12.2002, 11:08
Отправитель: TanaT (TanaT@hotmail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает baldr

Здравствуйте, TanaT!
А ты попробуй написать без подчеркивания! TASM и MASM тут не при чем. Просто MS и Borland
опять не сошлись в стандартах. И попробуй написать просто asm Call CallgateAddr.


Ответ отправлен: 08.12.2002, 00:32
Отправитель: baldr


 Вопрос № 2052

Дарова.
У меня вот появились вопросы.
1) Если компьютер оперирует тока двоичной системой счисления, то почему когда я открываю из оболочке FAR прогу, она представлена в шестнадцатеричной системе? Или это FAR специально преобразовывает?(чтобы удобнее было)
2) Вот дан код
в di указатель на последовательность символов
bx=0h
ax=0A0Dh
***********************
....
mov cl, 9

@e:
mov bl, cs:[di]
add bl, cs:[di+1]
add ax, bx
inc di
loop @e
.....
***********************
в конце ax должно получиться
ax=F1Bh
Я угадал эту последовательность(указатель на которую в di). То есть мудился подсчитывал и т.д. А какую мона процедурку написать чтобы она сама находила эту последовательность?
И какой вобще алгоритм нахождения кода(последовательности), т.е. например, если нам дана конечная сумма и задано кол-во символов(т.е. кол-во повторений в цикле) как мона узнать эту последовательность? Т.е. алгоритм процедуры?
3) Вот например когда прогу упаковывают, т.е. уменьшают её размер, автоматическим распаковщиком, в памяти она будет прежней? Т.е. распаковщик, распаковывает прогу в её первоночальный вид и посылает её в память? Ведь дизассемблер ИДА как раз и дизассеблирует, как бы, прогу в памяти?! Тогда почему он ерунду показывает? Т.е. она же распаковщиком привелась в нормальный вид и следовательно в ИДА должна нормально выглядеть?! Чё я не пойму!? Объясните плиз!
4) Дана прога
masm
model tiny
.stack 256h
.data
message db 'Привет$'
.code
start:
mov ax,@data
mov ds,ax
mov ah,09h
mov dx,offset message
int 21h
int 20h
end start
(с помощью пакета tasm)
а) Делаю объекный модуль - всё ок
б) Линкую...(с дерективой ) Выдаёт ошибку - "FATAL:Cannot generete COM file: stack segment present". Чё это за бяка такая и где тогда ошибка в проге!?
5) Чё такое физические, линейные, логические и виртуальные адреса? И чем они друг от друга различаются?
Заранее, всем пасиба!



Вопрос отправлен: 07.12.2002, 13:57
Отправитель: Пупс

[Следующий вопрос >>] [Список вопросов]

Отвечает Portnov

Здравствуйте, Пупс!
1) Да, чтобы удобней было...
4) COM-формат не поддерживает директиву .stack! Просто уберите эту строчку, и усе... Хотя еще может быть бяка, я не помню, понимает ли tasm/tlink директивы .code, .data в COM-файле... Короче, если после убирания директивы .stack еще чего-то будет ругаться, уберите строки с .code и .data, а строку с message db... поставьте после int 20h. Да, и "mov ax,@data; mov ds,ax" в COM-Формате не имеют никакого смысла! уберите это нафиг.
5) У-у.., это к Broken Sword'у, к его рассылке... Там все расписано.
С уважением, Portnov.

Ответ отправлен: 07.12.2002, 17:13
Отправитель: Portnov


Отвечает St

Привет, Пупс!
1) Да
2)
>И какой вобще алгоритм нахождения кода
>(последовательности), т.е. например, если нам дана
>конечная сумма и задано кол-во символов(т.е. кол-во
>повторений в цикле) как мона узнать эту
>последовательность? Т.е. алгоритм процедуры?
По-моему (если я вас правильно понял) существует большое количество последовательностей сумма символов которых быдер равна требуемой, и чем больше длина последовательности тем сложнее перебрать их все, в поисках нужной. Или вам подойдет любая, лишь бы сходился результат? Тогда поделите сумму на число сиволов, и полученное частное подставьте во все символы кроме последнего, в который запишите остаток, если он не равен нулю - тогда и в последний символ тоже запишите частное.
3) Дизассемблеры не распаковывают упакованные программы! Они показывают то, что есть в виде файла на диске. Даже дебаггеры это не делают, они просто исполняют код, который где-то в процессе приводит к распаковке исходной программы в памяти (если нет защиты, когда _полный_ код вообще никогда не существует в памяти). Попробуйте найти распаковщик для данного упаковщика.
4) Уберите слова .stack 256h
5) Наверное здесь найдутся люди которые могут вам это объяснить, но мой совет: почитайте какую-нибудь книгу по процессорам, так всё подробно описано.
St

Ответ отправлен: 07.12.2002, 16:37
Отправитель: St


Отвечает Maverick

Приветствую Вас, Пупс!
б) Линкую...(с дерективой ) Выдаёт ошибку - "FATAL:Cannot generete COM file: stack segment present". Чё это за бяка такая и где тогда ошибка в проге!?
Потому что это exe файл. Он пишет, что представлен сегмент стека. Убери опцию /t из линковщика.


Ответ отправлен: 07.12.2002, 14:46
Отправитель: Maverick


Отвечает masquer

Здравствуйте, Пупс!
1. Ну, тут я затрудняюсь тебе ответить...
2. Универсальный?!! Хе-хе, я бы посмотрел на универсальный кейген для всех алгоритмов.
А чего мучиться, если твоя последовательность дополнительно ничем не органичена, то вариантов может быть море
3. Бред сумасшедшего, абсолютно все неверно. Дизассемлер не загруженный модуль дизассемблирует, этим отладчик занимается. И нет гарантии, что в памяти программа после распаковки будет такой же, какой она была до оной.
5. Это вопрос к Broken Sword-у, или его рассылку почитай.

Ответ отправлен: 09.12.2002, 11:36
Отправитель: masquer


Отвечает Andrew Vext

Здравствуйте, Пупс!
1) Ага преобразовывает. А Windows подлюка, вообще вместо нулей и единиц картинки показывает. А вообще - представьте себе как будет выглядеть 32-разрядное число в двоичной форме и зачем его так выводить.
2. Загружаете программу в отладчик, ставите точку прерывания сразу за циклом, выполняете и когда сработает точка прерывания смотрите содержимое регистров в отладчике. Если отладчика нет - напишите программку, которая выведет число из регистра на экран и вызовите ее по завершении цикла.
3. В память программа загружается в упакованном виде (именно так ее и видит дизассемблер). Распаковка выполняется после запуска.
4. Поместите стек, данные и код в один сегмент.


Ответ отправлен: 09.12.2002, 12:07
Отправитель: Andrew Vext


 Вопрос № 2053

Добрый день. В одном из последних ответов Вы сказали, что надыбали доков про ОС и/или прерываниям. Если не сложно дайте линки, или если их (доков) не так много можно сразу на ящик.
Заранее благодарен.



Вопрос отправлен: 07.12.2002, 15:47
Отправитель: Odin

[Следующий вопрос >>] [Список вопросов]

Отвечает masquer

Приветствую Вас, Odin!
Хиде это я такое сказал?
Если не ошибаюсь, это Maverik сказал :))

Ответ отправлен: 09.12.2002, 11:38
Отправитель: masquer


 Вопрос № 2054

Здравствуйте. В одном из последних ответов Вы сказали, что надыбали доков про ОС и/или прерываниям. Если не сложно дайте линки, или если их (доков) не так много можно сразу на ящик.
Заранее благодарен.



Вопрос отправлен: 07.12.2002, 15:59
Отправитель: Dmitry

[Следующий вопрос >>] [Список вопросов]

Отвечает Maverick

Здравствуйте, Dmitry!
Это были доки по написанию ОС.
Если бы ты указал свой мыльник, это было бы просто волшебно.
Или мне как всему narod'у или yandex'у рассылать? :)))

Ответ отправлен: 07.12.2002, 16:06
Отправитель: Maverick


 Вопрос № 2056

Требуется прога на Assembler, которая посылает в файл вводимые с клавиатуры символы и останавливающая запись при нажатии клавиши ESC.



Вопрос отправлен: 07.12.2002, 16:47
Отправитель: Lexus

[Следующий вопрос >>] [Список вопросов]

Отвечает Sensey

Доброе время суток, Lexus!
А мне нужна прога настройки XR16L784.
Ну и???
Бери пиши...
Почитай www.shegeda.chat.ruxview.zip
Будут вопросы конкретней - пиши...
А требовать - лишнее дело!


Ответ отправлен: 07.12.2002, 18:24
Отправитель: Sensey


Отвечает baldr

Здравствуйте, Lexus!
Если это не очередная лаба, а просто надо такую прогу для себя, то может прокатить такая
штука... Введи в командной строке:
copy con asdf
И набирай текст. В конце нажми -
Будет создан текстовый файл asdf, в котором будет все, что ты введешь.
Если тебе надо именно организовать вывод в файл своими руками, то думаю, тебе все равно, если
сначала строка считается в память, а потом запишется в файл? Тогда можно использовать функцию 0Ah
прерывания 21h. Если строка большая, то можно считывать с помощью функций 1, 6, 7, 8 того же прерывания.
Тогда сразу можно записывать в файл. Функция 3Ch создает файл, функция 40h - записывает данные
в файл, а 3Eh - закрывает его. Алгоритм такой: Открываешь файл, в цикле считываешь символ,
проверяешь его на Esc, если нет, то пишешь в файл и снова тело цикла, иначе - закрываешь файл и
завершаешь программу. Все.


Ответ отправлен: 08.12.2002, 00:31
Отправитель: baldr


Отвечает Maverick

Добрый день, Lexus!
Хмм, требуется...
А ты сам не пробовал написать, ведь ничего сложного нет?
Открываешь файл для чтения записи, читаешь его в буфер, затем выводишь приглашение к вводу символа. Сравниваешь, если ESC, то закрываешь файл и на выход, если другой символ, то передвигаешь указатель на конец файла и пишешь в него. Все это в цикле. В досе есть эти функции. Поверь мне, самому писать интереснее, а вот если где нибудь застопоришся, то тогда и спрашивай.

Ответ отправлен: 08.12.2002, 09:35
Отправитель: Maverick


 Вопрос № 2057

Добрый день. odin80@xakep.ru



Вопрос отправлен: 07.12.2002, 17:57
Отправитель: Dmitry

[Следующий вопрос >>] [Список вопросов]

Отвечает keleb-glin

Спокойной ночи ( keleb-glin@xakep.ru )

Ответ отправлен: 08.12.2002, 20:20
Отправитель: keleb-glin


Отвечает Sensey

Здравствуйте, Dmitry!
И что, туда спама насыпать?
Если конкретно кому-то пишешь - убери галку "Задать вопрос всем экспертам" в форме задания вопроса!


Ответ отправлен: 07.12.2002, 18:26
Отправитель: Sensey


 Вопрос № 2058

В дополнение ответа baldr на вопрос 2014.
Bob Johnson!
Пока не ВЫЛОЖИЛ лабораторные кинь, пожалуйста, и в меня ими.
Я буду признателен, и разопью баночку пива во благо твоего здоровья.
Спасибо.
Daddy_Karlo@bk.ru
З.Ы.
Приму шпаргалку о:
1 Порядок компиляции под ДОС
2(совсем не понятно)Создание исполняемого файла под Виндос.
Зачем ДЕФ? Как правильно его составить?


Приложение:


Вопрос отправлен: 07.12.2002, 19:38
Отправитель: Deddy Karlo (Deddy_Karlo@bk.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Bob Johnson

Добрый день, Deddy Karlo!
Кидаю... Тебе там еще никто ничего "хорошего" не сказал за неличный вопрос? :-)
P.S. А вот пивом лучше поделись...


Ответ отправлен: 09.12.2002, 20:53
Отправитель: Bob Johnson


 Вопрос № 2059

Уважаемые эксперты прошу вас ответить (мне ламеру 13летнему)
на такой вопрос!!!
Объясните мне как распологается прога на ассемблере в регистрах CS и DS????
Ато непонятно везде говорят в рег.CS код проги ,а в рег,Ds
константы ,акак это так???????



Вопрос отправлен: 07.12.2002, 20:00
Отправитель: Radmir (radmir@pisem.net)

[Следующий вопрос >>] [Список вопросов]

Отвечает LIFO

Доброе время суток, Radmir!
В регистре DS-адрес сегмента данных твоей программы,а в CS- адрес сегмента кода твоей программы.
А сегмент - это область памяти, ну это уже совсем другая история...:)


Ответ отправлен: 08.12.2002, 15:04
Отправитель: LIFO


Отвечает baldr

Добрый день, Radmir!
:-00 !! Это кто ж тебя так учил? Руки бы ему оторвать! :-[
Начать мне надо так: память (в реальном режиме) состоит из сегментов. При обращении к любому
участку памяти надо указать номер сегмента (а их размер - 65 Кб) и смещение от его начала в байтах.
Так вот, для адресации можно использовать так называемые сегментные регистры. При размещении программы
в памяти сегмент cs всегда указывает на тот сегмент, в котором находится исполняющийся в данный момент
код. Все остальные сегментные регистры программист может использовать по своему усмотрению, но
обычно сегмент ds настраивают таким образом, чтобы он указывал на сегмент, в котором программа
хранит свои данные. но это совсем не обязательно. Однако, если обращаться к любой именованной
переменной, компилятор думает, что мы обращаемся по смещению в сегменте данных, на который и
указывает ds.


Ответ отправлен: 08.12.2002, 00:30
Отправитель: baldr


Отвечает Maverick

Добрый день, Radmir!
Прога не распологается в этих регистрах :)
Прога распологается в памяти.
Регистр CS указывает на сегмент кода нашей прграмм.
Регистр DS указывает на сегмент данных нашей программы.
В случае com программы они равны, и указывают на тот сегмент памяти, в который загружена наша прога.


Ответ отправлен: 08.12.2002, 09:35
Отправитель: Maverick


 Вопрос № 2060

Здравствуйте,ув. эксперты!
В ДОС-е есть прерывания int 25h и int 26h: соотв. чтение/запись логических секторов. НО. Номер сектора передается в 16-разрядном регистре DX.
Вопрос: Есть ли альтернатива этим функциям, позволяющая передавать номер сектора больше 65535 (напр., 32 разрядами)?
Заранее спасибо!



Вопрос отправлен: 07.12.2002, 22:36
Отправитель: Deus

[Следующий вопрос >>] [Список вопросов]

Отвечает LIFO

Здравствуйте, Deus!
Есть - ПОРТЫ!!!

Ответ отправлен: 08.12.2002, 15:20
Отправитель: LIFO


Отвечает St

Привет, Deus!
ДОС есть ДОС с его ограничениями. Например примечание к описанию этого прерывания:
"Главная корневая запись и любые другие секторы вне раздела DOS недоступны через этот сервис. прерывание INT 13H - это единственный сервис, который предоставляет полный доступ к любой части твердого диска".
St

Ответ отправлен: 09.12.2002, 19:43
Отправитель: St


Отвечает keleb-glin

Приветствую Вас, Deus!
Тебе надо при вызове int 25/26h положить в cx не кол-во читаемых секторов, а 0ffffh, а в ds:bx - адрес структуры данных AbsDiskIORec, в которой:
смещение размер что класть
+0 4 адрес первого читаемого сектора
+4 2 количество секторов
+6 4 ДАЛЬНИЙ адрес буффера чтения/записи
как видишь, адрес сектора - 32 - разрядный.


Ответ отправлен: 08.12.2002, 20:20
Отправитель: keleb-glin


Отвечает Maverick

Приветствую Вас, Deus!
Наверное придется пользоваться int 13h


Ответ отправлен: 08.12.2002, 09:35
Отправитель: Maverick


Отвечает Dark_Lord

Добрый день, Deus!
int 13h, но там совсем другое дело, вообще, самый лучший способ через порты в/в. А 32 - битными переменными ты вообще не особо сможешь в досе пользоваться.

Ответ отправлен: 08.12.2002, 12:56
Отправитель: Dark_Lord


 Вопрос № 2061

Всем доброе время суток!!!
Недавно попал в руки старый журнал "хакер" за сентябрь месяц. Там в статье про асемблер говориться что ан компакте к журналу есть переведенный на русский туториал Айсзилиона , к сожалению ни компакт ни журнал мне преобрести не удалось, так что если у кого есть поделитесь в свою очередь есть интересная инфа которой могу обменяться...
Спасибо
Подводная лодка.
з.ы. на сайт xakep.ru ходил там у них только за ноябрь месяц архив лежит



Вопрос отправлен: 07.12.2002, 23:31
Отправитель: u-777 (u-777@ukr.net)

[Следующий вопрос >>] [Список вопросов]

Отвечает LIFO

Доброе время суток, u-777!
Делюсь.


Ответ отправлен: 08.12.2002, 15:08
Отправитель: LIFO


Отвечает St

Привет, u-777!
У меня есть этот файл, но он, насколько я помню, довольно большой и по почте его кидать сложно. Если есть другие варианты, мой мэйл - st23@yandex.ru
St

Ответ отправлен: 09.12.2002, 19:46
Отправитель: St


Отвечает keleb-glin

Здравствуйте, u-777!
Мануал Айсзелиона весит 1044кб. Если хочешь - напиши, я вышлю. ( keleb-glin@xakep.ru )


Ответ отправлен: 08.12.2002, 20:10
Отправитель: keleb-glin


Отвечает Maverick

Добрый день, u-777!
Есть такой туториал.
Погляди на www.wasm.ru
Там есть.


Ответ отправлен: 08.12.2002, 09:35
Отправитель: Maverick


Отвечает baldr

Добрый день, u-777!
На русском они есть на www.wasm.ru.


Ответ отправлен: 09.12.2002, 00:05
Отправитель: baldr


Отвечает nix

Добрый день, u-777!
Посмотри на wasm.ru:-)


Ответ отправлен: 09.12.2002, 04:57
Отправитель: nix


 Вопрос № 2063

Вот если прога запакована автоматическим распоковщиком, когда она разархевируется и попадает в память в нормальном же виде?! И получается отладчик СофтАйс должен её видеть в нормальном виде? мы же программу отлаживаем в памяти?!
И дизассембер ИДА я заметил даёт смещение как в памяти?
объясните мне плиз про эти упаковщики и дизассемблеры и отладчики. Т.е. хотя бы вобщем.



Вопрос отправлен: 08.12.2002, 00:48
Отправитель: Пупс

[Следующий вопрос >>] [Список вопросов]

Отвечает St

Привет, Пупс!
В память попадает копия с диска и она распаковывается уже в процессе работы программы, так что получить ее в распакованном виде можно если протрассировать программу до того места когда она полностью распакуется. Тогда и надо брать дамп памяти и получать исходную программу (если конечно нет защиты).
St

Ответ отправлен: 09.12.2002, 19:55
Отправитель: St


Отвечает Bob Johnson

Доброе время суток, Пупс!
Она загружается в память вначале запакованной. А потом распакующий код (которому передается управление после загрузки) распаковывает ее уже прямо там. Чтобы увидеть в soft ice распакованный вид проги, в общем случае, надо поставить break на API функцию, которую вызовет программа после распаковки. Обычно это GetModuleHandle, CreateWindow(Ex), RegisterClass и т.д.


Ответ отправлен: 09.12.2002, 20:56
Отправитель: Bob Johnson


Отвечает baldr

Добрый день, Пупс!
Автоматический распаковщик получает управление первым. Он распаковывает в память код проги
и передает ей управление. Отладчики анализируют код в памяти, следовательно, уже распакованный
и полный.


Ответ отправлен: 09.12.2002, 00:04
Отправитель: baldr


Отвечает masquer

Приветствую Вас, Пупс!
прога запакована автоматическим распоковщиком

Запакована распаковщиком??? :))))))) Сам понимаешь - дальше и запутаться можно. Для начала почитай статьи, например, с reversing.net, а то мы на разных языках говорим :)))

Ответ отправлен: 09.12.2002, 11:43
Отправитель: masquer



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (40)
C / C++ (29)
Perl (6)
Delphi (22)
Pascal (24)
Basic / VBA (9)
Java / JavaScript (9)
PHP (4)
MySQL / MSSQL (6)
Пользователю
Windows 95/98/Me (30)
Windows NT/2000/XP (21)
"Железо" (29)
Поиск информации (12)
Администратору
Windows NT/2000/XP (10)
Linux / Unix (14)
Юристу
Гражданское право (10)
Семейное право (3)
Трудовое право (6)
КоАП (3)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное