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

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


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

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

Выпуск № 403
от 29.10.2002, 16:40

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


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

Bob Johnson
Статус: Профессиональный
Общий рейтинг: 154.95
[Подробней >>]
St
Статус: Доверительный
Общий рейтинг: 113.26
[Подробней >>]
Atmion
Статус: Начальный
Общий рейтинг: 120.93
[Подробней >>]
 
masquer
Статус: Профессиональный
Общий рейтинг: 154.7
[Подробней >>]
Eugene
Статус: Доверительный
Общий рейтинг: 116.98
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 129.54
[Подробней >>]
 
Broken Sword
Статус: Профессиональный
Общий рейтинг: 131.4
URL: моя рассылка по Protected Mode
[Подробней >>]
Maverick
Статус: Опытный
Общий рейтинг: 138.32
URL: Страница по асму и вирмейку
Телефон: 89039415024 (BiLine GSM)
[Подробней >>]
DiGiT[old]
Статус: Опытный
Общий рейтинг: 108.28
[Подробней >>]
 
Ayl
Статус: Профессиональный
Общий рейтинг: 118.08
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 120.78
[Подробней >>]
Portnov
Статус: Профессиональный
Общий рейтинг: 118.8
URL: Мой сайтик...
[Подробней >>]
 
Gibbel
Статус: Профессиональный
Общий рейтинг: 108.57
URL: Страничка обо мне и моих друзьях
[Подробней >>]
oleg
Статус: Опытный
Общий рейтинг: 138.05
URL: форум по математике, компьютерным сетям
Телефон: (8432) 995153
[Подробней >>]
Dron
Статус: Профессиональный
Общий рейтинг: 116.73
URL: Операционная система с нуля!
[Подробней >>]
 
igorash
Статус: Профессиональный
Общий рейтинг: 118.22
[Подробней >>]
Supra
Статус: Доверительный
Общий рейтинг: 118.96
[Подробней >>]
Pablo
Статус: Профессиональный
Общий рейтинг: 126.73
URL: Моя страничка
[Подробней >>]
 
Beeblebrox
Статус: Профессиональный
Общий рейтинг: 113.44
URL: Beeblebrox / TMA HomePage
[Подробней >>]
Sensey
Статус: Профессиональный
Общий рейтинг: 124.31
URL: Страничка рассылки по Паскаля...
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]
Biv
Статус: Опытный
Общий рейтинг: 115.64
[Подробней >>]


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

Вопрос № 1596. Уважаемые эксперты! У меня к вам следующий вопрос: как в программе использовать SetTimer c TimerProc... (ответов: 4)
Вопрос № 1597. Здравствуйте, уважаемые, умнейшие и быстрейшие эксперты ! Я только учусь, в следствии чего много воп... (ответов: 1)
Вопрос № 1598. Добрыый вечер Эксперты! Подскажите пожайлуста как нибудь следить за сменой активного окна пользовате... (ответов: 3)
Вопрос № 1599. Здравствуйте!!! Не могли бы помочь?? Хотя бы подскажите идею...Надо написать обработчик прерываний, ... (ответов: 6)
Вопрос № 1600. Здрасьте, господа! Подскажите, плз, почему в XP и NT не работает управление индикаторами клавы mov ... (ответов: 4)
Вопрос № 1601. Доброе время суток ! Большое спасибо за информацию о "RegisterServiveProcess"! А можно при... (ответов: 2)
Вопрос № 1602. Hello RusFAQ.ru, Thursday, October 24, 2002, 12:00:01 PM, you wrote: Rr> © RusFAQ.ru - Ответ эксперт... (ответов: 1)
Вопрос № 1604. Здравствуйте уважаемые Эксперты! Есть один вопрос:в памяти под DOS висит TSR-программа, по нажатию к... (ответов: 4)
Вопрос № 1605. Уважаемые эксперты! Никак не могу найти IDA.KEY для IDA PRO v4.15. Огромная просьба выслать мне сам ... (ответов: 2)
Вопрос № 1606. Добрый день г-да Эксперты! Хотелось бы уточнить вопрос связанный с TimerProc. Меня больше всего инте... (ответов: 4)
Вопрос № 1607. Здравствуйте эксперты! Однажды я задал вопрос (точно не помню как он был сформулирован): как написат... (ответов: 3)
Вопрос № 1608. Здравствуйте. Оператор mov может определить значение регистра IP ? Например: mov ax,offset L02 ... (ответов: 10)
Вопрос № 1609. здравствуйте. Меня озадачил ответ эксперта oleg-а: "мужчинка , ТЫ где родился, а-а? mov это ком... (ответов: 15)
Вопрос № 1610. Вот проверил это сообщение и действительно получил на счёт 10 англ.фунтов (16$). Если интер... (ответов: 5)

Вопросов: 14, ответов: 64


 Вопрос № 1596

Уважаемые эксперты!
У меня к вам следующий вопрос:
как в программе использовать SetTimer c TimerProc.
Что такое вообще callback функция(те надо ли для нее ченибудь специально определять)?
Если можно хоть элементарный работающий пример.
а то Все мои проги не работают...



Вопрос отправлен: 24.10.2002, 18:53
Отправитель: DadaVas (dadavas@yandex.ru)

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

Отвечает Bob Johnson

Доброе время суток, DadaVas!
Вот недавно некий Евгений Коломеец прислал рабочий код (правда на С), использующий таймер без окна. Смотри в приложении. Для правильной работы должен быть Message Loop.


Приложение:

Ответ отправлен: 25.10.2002, 14:18
Отправитель: Bob Johnson


Отвечает St

Привет, DadaVas!
В SetTimer не обязательно использовать TimerProc, можно обрабатывать таймерные сообщения в основной процедуре окна. Но если уж вы хотите ее использовать, то TimerProc - это обычная процедура, которую вы пишите в своей программе и которая делает то, что вы хотите чтобы происходило через нужный интервал времени. Только эту процедуру вызываете не вы с помощью CALL или INVOKE, а система, которая и передаст ей управление (для этого вы и вводите при вызове TimerProc адрес этой Callback-процедуры). Например WndProc это тоже Callback, ведь туда приходят сообщения от системы (его адрес вы пишите при вызове RegisterClassEx). Таким образом вы или пишите обработчик сообщения таймера в виде отдельной процедуры:
Proc
...
ret
endp
или обрабатываете сообщение WM_TIMER в общем цикле WndProc тек же как любое другое сообщение.
St

Ответ отправлен: 24.10.2002, 20:08
Отправитель: St


Отвечает Atmion

Добрый день, DadaVas!
Callback-функция, это функция, которую ты не вызываешь сам, и адрес которой передаешь операционной системе (например Windows), которая САМА будет вызывать эту твою функцию при наступлении некоторого события. Собственно, главная оконная процедура WndProc (или как там она у тебя называется), обрабатывающая сообщения от Windows - это типичный пример Callback-функции. В твоем случае, как я понял, тебе нужно, чтобы Windows вызывала твою функцию (которую ты назвал TimerProc) по истечении интервала времени, и тебе для этого нужно использовать функцию SetTimer. В данном случае можно создать в программе отдельную функцию TimerProc, или ДОБАВИТЬ в главную оконную процедуру ОБРАБОТЧИК сообщения WM_TIMER. Ну вот, ты можешь вызвать функцию: SetTimer (hwnd, iTimerID, iMsecInterval, TimerProc). Вызвать ее надо где-нибудь в процедуре WinMain или в обработчике сообщения WM_CREATE, и так ты сможешь задать интервал, по истечении которого будет вызываться твоя функция TimerProc, определенная в твоей программе.


Ответ отправлен: 26.10.2002, 19:48
Отправитель: Atmion


Отвечает masquer

Добрый день, DadaVas!
Это ты уже сам решаешь, что ты там будешь определять, можно вообще ноль поставить. За примерами в МСДН.

Ответ отправлен: 25.10.2002, 12:00
Отправитель: masquer


 Вопрос № 1597

Здравствуйте, уважаемые, умнейшие и быстрейшие эксперты !
Я только учусь, в следствии чего много вопросов.
Как написать программу для вычисления 12 чисел Фибоначчи: 1,1,2,3,5,13(Каждое число представляет собой сумму двух предыдущих чисел).
Пожалуста подробнее и программу целиком (т.е. от dosseg (если нужно) до end.).

Какие шестнадцатеричные значения строки и столбца соотвествуют нижнему правому углу экрана 25x45 ?
Какие команды служат для установки курсора по координатам: строка 12, столбец 8
Как очистеть экран начиная с 0-го столбца 12-й строки до 79-го столбца 22-й строки

P.S. Программы под DOS



Вопрос отправлен: 24.10.2002, 19:03
Отправитель: Саша

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

Отвечает Eugene

Добрый день, Саша!
Похоже народ взялся за лабы. Не рановато ли? Студент, как известно, от сессии до сессии живёт весело.
Текст программ я тебе выкладывать не буду, зато подкину идеи
1)
Резервируем 4 ячейки памяти: M1,M2,M3,М4. В 1-й будет f(n), во 2-й f(n-1), в 3-й f(n-2), а 4-я будет временная. Делаем цикл 12 раз:
M4 = M1;
M1 = M2 + M3;
M3 = M2;
M2 = M4;
Всё.
2)
Вопрос немного непонятен, но попробую догадаться.
Нумерация позиции начинается с 0, поэтому сразу узнаём позицию Х = 44, Y = 24. Что в 16-чном представлении значит (2Ch, 18h).
3)
Для этого используй 2-й сервис 10h-го прерывания.
AH = 02
BH = video page number
DH = row
DL = column
4)
Для этого можешь воспользоваться 0ah сервисом, всё того же 10h прерывания, передвигая курсор примером из 3).
AH = 0Ah;
AL = 20h;
BH = video page number;
CX = repeat count;
P.S. если будешь изучать ассемблер, то сможешь написать программки, работающие раз в 10 быстрее этих.

Ответ отправлен: 25.10.2002, 09:44
Отправитель: Eugene


 Вопрос № 1598

Добрыый вечер Эксперты!
Подскажите пожайлуста как нибудь следить за сменой активного окна пользователем?



Вопрос отправлен: 24.10.2002, 19:40
Отправитель: dadavas (dadavas@yandex.ru)

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

Отвечает Bob Johnson

Доброе время суток, dadavas!
Если ты следишь из своей проги (т.е. за окном своей проги) - то просто смотри за сообщением WM_ACTIVATE. Если же из посторонней - то периодически вызывай GetTopWindow и сравнивай полученные значения.


Ответ отправлен: 25.10.2002, 14:18
Отправитель: Bob Johnson


Отвечает masquer

Добрый день, dadavas!
GetWindow с вторым параметром GW_HWNDFIRST и сравниваешь с тем, что тебе нужно

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


Отвечает Eugene

Приветствую Вас, dadavas!
Лови сообщения WM_SETFOCUS и WM_KILLFOCUS.

Ответ отправлен: 25.10.2002, 09:52
Отправитель: Eugene


 Вопрос № 1599

Здравствуйте!!! Не могли бы помочь?? Хотя бы подскажите идею...Надо написать обработчик прерываний, который бы при нажатии Escape выполнял бы функции Entera...заранее благодарна..



Вопрос отправлен: 24.10.2002, 23:18
Отправитель: CherryWoman

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

Отвечает Bob Johnson

Добрый день, CherryWoman!
Прерывание 16h. Функции 00h и 01h. Проверяешь, какая клавиша нажата и если esc - посылаешь код Enter.
P.S. Cherry Cherry Woman(Lady)??? Living in devotion???


Ответ отправлен: 27.10.2002, 13:40
Отправитель: Bob Johnson


Отвечает Dark_Lord

Доброе время суток, CherryWoman!
Я так понял ты под дос пишешь! Тогда надо перехватить прерывание 9 и потом через порты клавы 60h-63h считать/записать последний символ!

Ответ отправлен: 26.10.2002, 19:21
Отправитель: Dark_Lord


Отвечает Broken Sword

Доброе время суток, CherryWoman!
Идея в том, что ты перехватываешь 09h вектор, и читаешь в начале обработчика порт 60h. Если это скан-код клавиши Esc, то... эээээээээээммммм... то......... пихаешь туда скан-код клавиши Enter...
может даже прокатит. А вообще могу выслать исходник частичной кириллизации клавиатуры...(одного ряда)

Ответ отправлен: 25.10.2002, 00:23
Отправитель: Broken Sword


Отвечает Maverick

Приветствую Вас, CherryWoman!
А какая тут идея?
Берешь любой готовый обработчик, перехватываешь прерывание от клавиатуры, сравниваешь ascii код клавиши, если нажата esc:
cmp al,27 ;ESC?
je new_obrabot ;если да - то передаешь на свой обработчик и меняешь ее значение на значение Enter, затем возвращаешь управление оригинальному обработчику.
Если нет, т.е. нажата другая клавиша, то сразу передаешь управление ориг. обработчику.
Если непонятно, то пиши, намалюю код :)
Maverick@nightmail.ru

Ответ отправлен: 25.10.2002, 03:02
Отправитель: Maverick


Отвечает DiGiT[old]

Здравствуйте, CherryWoman!
Где ??? В досе делай так перехватывай прерывание 09. И анализируй код клавиши если он от интера, то пиши туда код ескейпа.

Ответ отправлен: 25.10.2002, 07:46
Отправитель: DiGiT[old]


Отвечает Atmion

Добрый день, CherryWoman!
Надо бы уточнить, имеется в виду обработчик прерываний в DOS, или в Windows. Допустим, речь идет о досовском обработчике. Значит, в ДОСе, являющейся однозадачной операционкой, в любой момент времени ТОЛЬКО ОДНА какая-то программа является активной, т.е. выполняется, и значит она получает ввод с клавиатуры. Стандартный процесс обработки ввода с клавитуры выглядит так:
1) пользователь нажимает любую клавишу
2) контроллер клавиатуры ВНУТРИ клавиатуры посылает скен-код нажатой клавиши в другой контроллер клавиатуры на системной плате
3) контроллер клавиатуры на системной плате помещает этот скен-код в свой порт 60h и посылает сигнал аппаратного прерывания по одной из линий системной шины (линия IRQ1) в контроллер прерываний
4) процедура POST во время начальной загрузки компьютера настроила контроллер прерываний так, что для него линия IRQ1 соответствует вектору прерывания 09h, и теперь контроллер прерываний посылает сигнал на входной контакт процессора с названием INT, а по линиям данных шины передает процессору номер прерывания 09h
5) процессор начинает обработку прерывания - сохраняет текущий контекст выполнения программы (включает в стек содержимое регистров CS, IP, FLAGS), считывает из таблицы векторов прерываний вектор с номером 09h (а вектор - это не что иное как ДАЛЬНИЙ адрес передачи управления, в формате сегмент:смещение) и передает управление по адресу в этом векторе, т.е. вызывает обработчик прерывания 09h (некоторые детали в этом процессе я опустил)
6) Обработчик прерывания 09h считывает скен-код нажатой клавиши из порта 60h контроллера клавиатуры на системной плате и анализирует значение скен-кода.
7) Если скен-код принадлежит одной из управляющих клавиш (а к таким относятся клавиши Ctrl, Alt, Shift, CapsLock, Scroll Lock, Num Lock, Insert и некоторые другие) и к тому же является кодом нажатия клавиши (есть еще скен-коды отпускания клавиш), то в слове флагов клавиатуры, расположенном по адресу 417h (в области данных BIOS) обработчик прерывания 09h устанавливает соответствующий флаг
8) Если скен-код принадлежит ЛЮБОЙ другой, не управляющей клавише (а к таким относятся клавиши Esc и Enter) то обработчик прерывания 09h берет этот скен-код, и с помощью таблицы трансляции скен-кодов в ASCII-коды формирует ДВУХБАЙТОВЫЙ код (старший байт которого содержит скен-код, а младший байт - ASCII-код). Но тут сразу оговорка: для клавиш, с которыми НЕ СВЯЗАНЫ отображаемые на экране буквы или цифры (а это именно клавиши Esc и Enter) обработчик прерывания ТОЖЕ формирует двухбайтовый код, но тут уже младший байт содержит не ASCII-код, а просто ноль. А старший байт - по-прежнему скен-код
9) этот двухбайтовый код обработчик прерывания 09h помещает в кольцевой буфер ввода, расположенный по адресу 41Eh в области данных BIOS
10) текущая программа регулярно вызывает функцию 00h прерывания 16h, которая считывает из буфера ввода этот двухбайтовый код, и получив этот код, программа поступает в соответствии с тем, что именно она считала
Значит, задача решается просто:
1) нужно перехватить прерывание 09h, т.е. установить свой, новый обработчик прерывания клавиатуры
2) внутри нового обработчика надо сохранить старый вектор прерывания 09h (чтобы вызывать старый обработчик, если считанное из порта 60h контроллера клавиатуры значение скен-кода окажется НЕ скен-кодом клавиши Esc)
3) если при очередном вызове новый обработчик считает из порта 60h значение, ОТЛИЧНОЕ ОТ 01h, то он должен просто вызвать старый обработчик
3) если при очередном вызове новый обработчик считает из порта 60h значение 01h (а это и есть скен-код клавиши Esc), то он должен ПОДМЕНИТЬ его на другое значение - 1Ch (это скен-код клавиши Enter), т.е. вместо двухбайтового кода 01h 00h наш обработчик прерывания должен записать в кольцевой буфер ввода другой двухбайтовый код - 1Ch 00h.
Ну вот собственно и все.
P.S. Нужно конечно заранее установить новый обработчик прерывания 09h. Тут есть два варианта: либо ДО запуска той программы, для которой надо сделать так, чтобы при нажатии Esc получалось бы так, как будто нажимается Enter (в этом случае нужно создавать TSR-программу с обработчиком, т.е. резидентный обработчик прерывания), либо в саму программу, которая должна получать Enter вместо Esc, придется встроить этот обработчик.


Ответ отправлен: 27.10.2002, 04:16
Отправитель: Atmion


 Вопрос № 1600

Здрасьте, господа!
Подскажите, плз, почему в XP и NT не работает управление индикаторами клавы
mov ax,0edh
out 60h,ax
mov ax,111b ;включение 3-х инд.
out 60h,ax
Насколько я понимаю, должны включиться все 3 индикатора,
но у меня не работает. В вин98 говорят работает :(
Что не так, а?
Заранее благодарю :)



Вопрос отправлен: 24.10.2002, 23:47
Отправитель: Alexandr

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

Отвечает Bob Johnson

Доброе время суток, Alexandr!
Мне кажется, что ХР не очень радуется, когда кто-попало в порты что-попало кидает...


Ответ отправлен: 27.10.2002, 13:40
Отправитель: Bob Johnson


Отвечает masquer

Приветствую Вас, Alexandr!
А потому что инструкции работы с портами считается привелегированными и в r3 не выполняются в НТ системах

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


Отвечает Dark_Lord

Добрый день, Alexandr!
В смысле в NT и ХР!? Если ты имеешь виду эмуляцию дос, то она в этих виндах не полная, из-за этого и глюки, а в Windows приложении такое вообще не получится!

Ответ отправлен: 26.10.2002, 19:23
Отправитель: Dark_Lord


Отвечает Maverick

Доброе время суток, Alexandr!
Ну просто у xp и nt с досом траблы.
Если ты пишешь проги под дос, то поставь вторую операционку win98 и no problems


Ответ отправлен: 25.10.2002, 03:02
Отправитель: Maverick


 Вопрос № 1601

Доброе время суток !
Большое спасибо за информацию о "RegisterServiveProcess"!
А можно пример программы не видимой по CTRL+ALT+DEL ( ASM/C/C++, если можно )?
Спасибо !



Вопрос отправлен: 25.10.2002, 00:50
Отправитель: Mixa

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

Отвечает Bob Johnson

Приветствую Вас, Mixa!
Extrn RegisterServiceProcess : Proc
...
push 1
push eax
Call RegisterServiceProcess
...
и не видно...


Ответ отправлен: 27.10.2002, 13:40
Отправитель: Bob Johnson


Отвечает masquer

Добрый день, Mixa!
Вот это и был тебе пример программы. В начале добавь этот код и все. Код больше не кидаю, надоело по 2 раза в день...

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


 Вопрос № 1602

Hello RusFAQ.ru,
Thursday, October 24, 2002, 12:00:01 PM, you wrote:
Rr> © RusFAQ.ru - Ответ эксперта masquer
Rr>  Ваш Вопрос № 1593
Rr> Здрасте уважаемые господа.
Rr> Ответье мне на вопрос и/или киньте ссылки на инфу.
Rr> Занимаюсь в данный момент исследованием PE-формата.
Rr> __Задача стоит
Rr> такая: пристыковать к имеющемуся EXE-шнику
Rr> кусок кода(защиты).
Rr> Написал пока процедурку добавления некоего
Rr> объекта в таблицу объектов.
Rr> Защита (далее З)- это прога (появляется виндовое окошко
Rr> с предложением ввести пароль)
Rr> Проблемы:
Rr> - добавляемый объект ессно должен быть код.
Rr> Возможно ли из виндовой проги З сделать *.com? Если нет, то как
Rr> корректно достать код из проги З?
Rr> - блок защиты использует API.
Rr> Как их вызывать, находясь в защищаемой
Rr> проге? Вообще по-русски кто-нить может объяснить
Rr> как эти API вызываются, таблицы импортируемых имен, таблицы
Rr> переходов и т.п.?
Rr> - Как работает защита памяти в FLAT режиме?
Rr> Просто в PE-файле у объектов есть флаги. Значит ли это, что у объекта
Rr> кода можно поставить флаг "записываемый объект" и в него можно будет писать?
Rr> Если в код нельзя писать,
Rr> то по какому принципу работают самомодифицирующиеся проги? (Мне для
Rr> защиты надо шифрацию реализовать)
Rr> З.Ы. Такая каша у меня в голове из-за того что не всегда удается
Rr> состыковать то, что видишь на практике с тем, что пишут в книжках.
Rr> Спасибо.
Rr> Вопрос отправлен:24.10.2002, 02:20

Rr> Отвечает masquer
Rr> Добрый день, Папа!
Здраствуй сынок!
Rr> В двух словах все равно ничего не объяснишь. А может и не стоит
Rr> заморачиваться - все равно ведь сломают?
Главное - не победа, главное - участие.
Rr> Во-первых - какого объекта и в какую таблицу? Ты новую секцию
Rr> добавляешь? Если да, то посоветую тебе изучить формат РЕ как "Отче наш",
Rr> иначе дров наломаешь... Да и антивирусы будут ругаться :))))
Насчет антивирусов пока не знаю. А PE я изучил. Перед сном, правда, не
читаю, как "Отче наш". Впрочем я и "Отче наш" не читаю:). Не понятно
до конца с секцией .idata.
Я так понимаю: В коде есть таблица переходов, в которой лежат длинные
джампы на элементы таблицы импортируемых имён (ТИИ). Кроме имён в ТИИ
должны быть адреса этих функций, которые заполняются при
загрузке проги в память. Так вот, в .idata находится список имён импортируемых
функций. Но
он идет не сначала секции, а после какой-то хери. Эта херь и есть то
место, куда записываются адреса функций? Как определить, какой адрес
соответствует какому имени? Расположение в коде таблицы переходов (где
джампы) от балды или как?
Rr> Можно ли сделать сом? Смотря какой код в этой проге.
Код в этой проге (я ж уже сказал) - простейшее виндовое приложение,
окошко с полем ввода, принимает пароль и закрывается.
Rr> С АПИ тоже непростой вопрос. Если есть уже таблица импорта, то твой
Rr> код может ее и не использовать вообще. Находится адрес kernel32, затем
Rr> адрес GetProcAddress и все. Дальше любую функцию можно
Rr> пользовать.
Кернел находится программно, или надо знать его базу для каждой версии
винды?
Rr> Можно модифицировать ИАТ, но это достаточно муторно, хотя если знаешь
Rr> как, то не так сложно (запутаться легко, правда)
Rr> Ага, то что ты называешь объектом принято называть секцией. Если
Rr> ставишь флаг записываемый - то можешь писать, иначе получишь эксепшн.
Rr> Ты вообще подумай, стоит ли овчинка выделки. То, что ты пытаешься
Rr> сделать отпугнет только начинающего. Тут враз ломаются намного более
Rr> навороченные защиты - защита от отладки, защита от дампа из
Rr> памяти, и т.д. и т.п.
Овчинка выделки стоит. Защиту я делаю для личного потребления. О
крутых хакерах в окрестностях я не слышал. Да и не думаю, что найдется
какой-то профи, который заинтересуется этим. Это во-первых. А во вторых, если
зашифровать охиренным ключом, скажем данные программы, а при запросе ключа
снимать с него хеш-сумму, скажем CRC32, то я че-то
слабо представляю как это вообще можно сломать. Перебором только.
Опять, кому это надо?
Rr> Если у тебя от этого каша в голове, более сложные вещи тебе без ошибок
Rr> будет сложновато реализовать...
Rr> Так что...
Кашу я съем со временем. Так что...
--
Best regards,
Папа mailto:rezervx@ezmail.ru



Вопрос отправлен: 25.10.2002, 03:38
Отправитель: Папа

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

Отвечает masquer

Доброе время суток, Папа!
>Здраствуй сынок!
Можно и без этого...
Rr> В двух словах все равно ничего не объяснишь. А может и не стоит
Rr> заморачиваться - все равно ведь сломают?
>Главное - не победа, главное - участие.
Rr> Во-первых - какого объекта и в какую таблицу? Ты новую секцию
Rr> добавляешь? Если да, то посоветую тебе изучить формат РЕ как "Отче наш",
Rr> иначе дров наломаешь... Да и антивирусы будут ругаться :))))
>Насчет антивирусов пока не знаю. А PE я изучил. Перед сном, правда, не
>читаю, как "Отче наш". Впрочем я и "Отче наш" не читаю:). Не понятно
>до конца с секцией .idata.
>Я так понимаю: В коде есть таблица переходов, в которой лежат длинные
>джампы на элементы таблицы импортируемых имён (ТИИ). Кроме имён в ТИИ
>должны быть адреса этих функций, которые заполняются при
>загрузке проги в память. Так вот, в .idata находится список имён импортируемых
>функций. Но
>он идет не сначала секции, а после какой-то хери. Эта херь и есть то
>место, куда записываются адреса функций? Как определить, какой адрес
>соответствует какому имени? Расположение в коде таблицы переходов (где
>джампы) от балды или как?
Берем любой нормальный туториал и читаем (вольный перевод - мой):
По смещению 80h от начала PE заголовка находится RVA, указывающий на начало
массива IMAGE_IMPORT_DESCRIPTOR, количество элементов этого массива соответствует количеству импортируемых библиотек и имеет такие поля
OriginalFirstThunk - RVA к массиву RVA, указывающих на имена функций
TimeDateStamp - обычно 0 (не имеет значения)
ForwarderChain - то же самое
Name - указатель на имя библиотеки
FirstThunk - RVA к массиву RVA, указывающих на IMAGE_THUNK_DATA, каждый из которых описывает одну импортируемую функцию. Именно эти значения и заполняются загрузчиком.
Может, непонятно объяснил, но это лучше взять любой экзешник, рядом положить описание структуры импорта и под отладчиком сидеть, пока просветление не наступит.
Rr> Можно ли сделать сом? Смотря какой код в этой проге.
>Код в этой проге (я ж уже сказал) - простейшее виндовое приложение,
>окошко с полем ввода, принимает пароль и закрывается.
Вообще зачем тебе *.com файл? Или я что-то непойму...
Rr> С АПИ тоже непростой вопрос. Если есть уже таблица импорта, то твой
Rr> код может ее и не использовать вообще. Находится адрес kernel32, затем
Rr> адрес GetProcAddress и все. Дальше любую функцию можно
Rr> пользовать.
>Кернел находится программно, или надо знать его базу для каждой версии
>винды?
Программно. Даже если ты будешь знать адрес, где _ОБЫЧНО_ находится кернел,
нет никакой гарантии что он там всегда будет находится. Есть такое понятие,
как релокейшн.
[--== все остальное поскипано ==--]

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


 Вопрос № 1604

Здравствуйте уважаемые Эксперты!
Есть один вопрос:в памяти под DOS висит TSR-программа, по нажатию комбинации клавиш сбрасывает инфу об активном процессе на диск. КАК определить активный процесс и найти его PSP?



Вопрос отправлен: 25.10.2002, 11:02
Отправитель: Sashat (sashat@bigmir.net)

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

Отвечает Maverick

Здравствуйте, Sashat!
Ты бы показал исходник, или бы объяснил точнее какую он инфу на диск скидывает. Если DTA, копирует в файл, то там и ищи psp. Вобщем написал бы конкретнее куда скидывает, в виде чего? :)


Ответ отправлен: 25.10.2002, 15:59
Отправитель: Maverick


Отвечает Ayl

Приветствую Вас, Sashat!
Вы можете использовать либо функцию 51h, либо функцию 62h прерывания 21h для получания сегментного адреса PSP прерванной программы. Сегментный адрес возвращается в регистре BX.

Ответ отправлен: 25.10.2002, 11:23
Отправитель: Ayl


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

Добрый день, Sashat!
Функция 62h прерывания INT 21h возвращает в регистре BX
сегментный адрес PSP текущего процесса.


Ответ отправлен: 26.10.2002, 09:44
Отправитель: ASMодей


Отвечает Atmion

Добрый день, Sashat!
Есть такая недокументировання область данных в DOS - называется SDA (Swapping Data Area). По смещению 10h от начала этой области находится сегментный адрес PSP активного процесса. Адрес самой области можно получить, вызвав недокументированную функцию 5D06h прерывания 21h. Она вернет полный адрес SDA в регистрах DS:SI, а в регистре CX будет размер SDA (размер SDA немного различается в разных версиях ДОС, но примерно составляет 2 Кбайта).


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


 Вопрос № 1605

Уважаемые эксперты!
Никак не могу найти IDA.KEY для IDA PRO v4.15. Огромная просьба выслать мне сам IDA.KEY или ссылку.
Заранее огромное спасибо.



Вопрос отправлен: 25.10.2002, 11:31
Отправитель: Николай (kostin@nm.ru)

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

Отвечает Maverick

Добрый день, Николай!
Высылаю, вроде тот.
Ты наверно ошибся, не 4.15 , а 4.1.5


Ответ отправлен: 25.10.2002, 15:59
Отправитель: Maverick


Отвечает masquer

Добрый день, Николай!
Ты найди лучше полный пакет, а то, если ты не в курсе, то ключ от одного пакета не подойдет к другому, даже той же версии.

Ответ отправлен: 25.10.2002, 12:26
Отправитель: masquer


 Вопрос № 1606

Добрый день г-да Эксперты!
Хотелось бы уточнить вопрос связанный с TimerProc.
Меня больше всего интересует в какое состояние надо перевести программу чтобы она ждала перехода в процедуру таймера.
Например a1:
jmp a1
не работает... отсылаю пример.. сообщения через 10 сек он почему не выдает.


Приложение:


Вопрос отправлен: 25.10.2002, 12:54
Отправитель: dadavas (dadavas@yandex.ru)

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

Отвечает St

Привет, dadavas!
Вот кусок вашей програмы:
TimerProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
invoke KillTimer,NULL,hTimer
invoke MessageBox,NULL,addr Sob,addr Sob,MB_OK
invoke ExitProcess,eax
TimerProc endp
Обратите внимание на hWnd:HWND!
Однако никакого окна вы не создали. Откуда тогда возьмктся hWnd?
St

Ответ отправлен: 25.10.2002, 18:25
Отправитель: St


Отвечает Bob Johnson

Приветствую Вас, dadavas!
Так ты ее только повесишь...
Правильо делает, что не работает.
Вот так надо:
SetTimer (.....);
while (GetMessage (&..., 0, 0, 0))
DispatchMessage (&...);
"..." - заменяешь своими параметрами.


Ответ отправлен: 27.10.2002, 13:40
Отправитель: Bob Johnson


Отвечает masquer

Добрый день, dadavas!
А вот так сработает. Сообщения должны бегать...

Приложение:

Ответ отправлен: 25.10.2002, 13:28
Отправитель: masquer


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

Здравствуйте, dadavas!
Насколько я знаю нужно постоянно вызывать функциу GetMessage
и если полученное сообщение - это WM_TIMER, то передавать управление на TimerProc.


Ответ отправлен: 26.10.2002, 09:44
Отправитель: ASMодей


 Вопрос № 1607

Здравствуйте эксперты!
Однажды я задал вопрос (точно не помню как он был сформулирован): как написать компилятор? Мне дали очень хорошую ссылку... .
Я извучил теорию формальных громатик (по этой ссылке)...подошел к самому интересному...и как-то случайно затер все следы... . Сейчас мучаюсь, немогу найти ссылку,
кроме всякой фигни!
Если кто помнит такой вопрос или может мне помочь..., киньте ссылку буду очень благодарен:))
Удачи...!



Вопрос отправлен: 25.10.2002, 13:14
Отправитель: kuper

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

Отвечает Eugene

Приветствую Вас, kuper!
Я к сожалению ту ссылку не пришлю, так как у меня её нету, но я дам ссылку на исходники одного компилятора.
fasm source


Ответ отправлен: 25.10.2002, 15:13
Отправитель: Eugene


Отвечает Portnov

Здравствуйте, kuper!
http://algolang.da.ru

Ответ отправлен: 25.10.2002, 18:06
Отправитель: Portnov


Отвечает Maverick

Добрый день, kuper!
На сайте rusfaq, на главной странице, есть такая опция-поиск в архиве.
Набери ключевые слова и найдешь.

Ответ отправлен: 25.10.2002, 15:58
Отправитель: Maverick


 Вопрос № 1608

Здравствуйте.
Оператор mov может определить значение регистра IP ? Например:
mov ax,offset L02
mov IP ,ax
Компилятору MASM это не нравится. Он говорит, что
undefined symbol : IP
Спасибо.



Вопрос отправлен: 25.10.2002, 13:41
Отправитель: Bayram Annanurov

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

Отвечает Gibbel

Добрый день, Bayram Annanurov!
на самом деле, то что ты хотел сделать выглядит так:
push offset L02
retn
Но проще просто выполнить
jmp L02

Ответ отправлен: 25.10.2002, 14:19
Отправитель: Gibbel


Отвечает Portnov

Доброе время суток, Bayram Annanurov!
Определить значение IP можно, но не таким способом, т.к. такого регистра в некотором смысле вообще не существует. А делается это, например, так:
call label1
label1:
pop ax; Теперь в ax - адрес инструкции call, равный в этом месте IP-Размер инструкции Pop (кажется, два байта).
С уважением, Portnov.


Ответ отправлен: 25.10.2002, 18:09
Отправитель: Portnov


Отвечает St

Привет, Bayram Annanurov!
Нельзя. Менять IP можно только с помощью Jcondition, JMP, CALL, INT, RET, IRET.
St


Ответ отправлен: 25.10.2002, 18:12
Отправитель: St


Отвечает Maverick

Добрый день, Bayram Annanurov!
НЕТ нельзя!


Ответ отправлен: 25.10.2002, 15:59
Отправитель: Maverick


Отвечает Bob Johnson

Здравствуйте, Bayram Annanurov!
Попробуй вместо mov ip, ax использовать jmp ax.
Тогда твою программу можно будет оптимизировать:
jmp L02


Ответ отправлен: 27.10.2002, 13:40
Отправитель: Bob Johnson


Отвечает oleg

Приветствую Вас, Bayram Annanurov!
мужчинка , ТЫ где родился, а-а?
mov это команда, а IP это протокол передачи данных в сети ETHERNET.


Ответ отправлен: 25.10.2002, 13:55
Отправитель: oleg


Отвечает masquer

Приветствую Вас, Bayram Annanurov!
Явно изменить (e)ip не получится, используй:
jmp ax

Ответ отправлен: 25.10.2002, 13:56
Отправитель: masquer


Отвечает Dron

Приветствую Вас, Bayram Annanurov!
так нельзя.
можно вот так:
call a1:
a1:
pop ax ; в Ax значение ip соответствующее a1.
а то, что написал ты, проще изобразить вот так:
jmp L02


Ответ отправлен: 25.10.2002, 14:06
Отправитель: Dron


Отвечает igorash

Здравствуйте, Bayram Annanurov!
IP - зарезервированное слово, попробуй что-то типа ip1, все будет пахать, или ты хочешь с помощью mov заслать в ip - тогда ничего не получится :))
а не проще тогда вместо всего этого писать jmp l2.

Ответ отправлен: 25.10.2002, 15:03
Отправитель: igorash


Отвечает Supra

Здравствуйте, Bayram Annanurov!
Ну ЯСНЫЙ ХРЕН, ЧТО НЕ МОЖЕТ!!!!!!!!!!!!!!!


Ответ отправлен: 26.10.2002, 20:56
Отправитель: Supra


 Вопрос № 1609

здравствуйте.
Меня озадачил ответ эксперта oleg-а:
"мужчинка , ТЫ где родился, а-а?
mov это команда, а IP это протокол передачи данных в сети ETHERNET."
Наверное стоит повторить вопрос:
Оператор mov может определить значение регистра IP ? Например:
mov ax,offset L02
mov IP ,ax
Цитирую Калашникова: "Пара регистров CS:IP задает текущий адрес кода." -часть1.
????????????????????????????????????????
Спасибо.



Вопрос отправлен: 25.10.2002, 14:34
Отправитель: Bayram Annanurov

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

Отвечает Pablo

Здравствуйте, Bayram Annanurov!
Честно говоря я не знаю такой команды как mov ip,ax, потому что для ip нехватает места в банке регистров 0-7, т.к. определено 8 мест и они использованы для регистров ax,dx,cx,bx,si,di,bp,sp.
Но ты можешь обойстись другими командами, например:
mov ax, offset L02
push ax
ret
или
push offset L02
ret

Ответ отправлен: 25.10.2002, 21:30
Отправитель: Pablo


Отвечает Beeblebrox

Доброе время суток, Bayram Annanurov!
Команда CALL может, а MOV - нет. А твой мужчинка-эксперт - просто ламер мастдайный, если так расшифровал аббревиатуру Internet Protocol :)
Например,
call label
label: pop ax
равносильно mov ax,ip
Если надо наоборот, то jmp ax равносильно mov ip,ax

Ответ отправлен: 25.10.2002, 15:17
Отправитель: Beeblebrox


Отвечает Maverick

Здравствуйте, Bayram Annanurov!
Ну он наверно пошутил :)
"Пара регистров CS:IP задает текущий адрес кода."
CS то ты можешь менять, а вот ip не трогай-это святое.
Он показывает на адрес той команды, которая будет выполнена.


Ответ отправлен: 25.10.2002, 15:59
Отправитель: Maverick


Отвечает masquer

Здравствуйте, Bayram Annanurov!
Судя по всему эксперт перепутал IP - Internet Protocol с IP - Instruction Pointer.
Ну, так как рассыка ассемблеру посвящена, то второе более вероятно. Ничего, и не такое бывает... :))))))

Ответ отправлен: 25.10.2002, 15:13
Отправитель: masquer


Отвечает Gibbel

Добрый день, Bayram Annanurov!
Я уже отвечал, что напрямую задать IP невозможно.
2oleg: это рассылка по Ассемблеру, а не по сетям;-)

Ответ отправлен: 25.10.2002, 15:50
Отправитель: Gibbel


Отвечает Dron

Добрый день, Bayram Annanurov!
Ответ конечно достойный отчисления! :)
ip - такой регистр конечно есть!
но явно применять его ты не можешь, меняется он только не явно при выполнении любой команды.
получить значение тоже можно, уже писал как.


Ответ отправлен: 25.10.2002, 14:50
Отправитель: Dron


Отвечает Broken Sword

Приветствую Вас, Bayram Annanurov!
Насчет того, где кто родился, нужно еще поспорить, а насчет регистра IP - его значение могут изменить ТОЛЬКО команды дальних и ближних переходов (jmp), call и возврат из процедур (ret, iret).

Ответ отправлен: 25.10.2002, 14:59
Отправитель: Broken Sword


Отвечает oleg

Доброе время суток, Bayram Annanurov!
Отвечаю для тех кто на бронепоезде.
MOV - это команда пересылки данных между ячейками памяти, регистрами, стеками и т.д., КАЛАШНИКОВУ привет от скромных любителей.
А то что ты написал соответствует тому что было в первом ответе.
Теперяча- cs:ip (писать либо прописными либо строчными буквами, чтобы понятнее было) CS-сегмент кода программы (хранится начальный адрес проги) IP - специальный регистр (укзатель инструкции) содержит смещение очередной инструкции проги.
таким образом получаем : начальный адрес+смещение.
А дальше думаю сам догадаешься как вытащить значение смещения.


Ответ отправлен: 25.10.2002, 15:05
Отправитель: oleg


Отвечает Sensey

Добрый день, Bayram Annanurov!
Регистр IP изменяют только комады переходов, вызов процедур и прерываний, а также просто работа проги. Прямо его изменять нельзя (ИМХО нет таких опкодов, хотя...), поэтому даже символьное имя в ассемблераз TASM MASM не определено.
Ну а oleg конечно же неправ... и по смыслу, и по сути, так как IP это и регистр и протокол передачи в INTERNET
ETHERNET- как подвид INTERNET. То есть INTERNET включает в себя ETHERNET и еще много чего.


Ответ отправлен: 25.10.2002, 15:07
Отправитель: Sensey


Отвечает igorash

Приветствую Вас, Bayram Annanurov!
1.Ну что поделать, и такие у нас эксперты есть :))
2. Задает, но при этом напрямую к ip обращаться нельзя


Ответ отправлен: 25.10.2002, 15:09
Отправитель: igorash


Отвечает Atmion

Здравствуйте, Bayram Annanurov! Команда MOV не может задать значение регистра IP, потому что это команда ПЕРЕСЫЛКИ ДАННЫХ, а не команда ПЕРЕДАЧИ УПРАВЛЕНИЯ, а только команды передачи управления могут изменить содержимое регистров CS и IP, причем эти регистры НЕЛЬЗЯ указывать явно, а можно - только смещения (которые ассемблер сам вычисляет и подставляет в команды JMP, JNE, CALL и т.д. вместо меток), и эти смещения - в зависимости от того, является ли передача управления ближней или дальней, прямой или косвенной, будут либо ПРИБАВЛЯТЬСЯ к текущему содержимому регистра IP, либо ЗАМЕНЯТЬ его текущее содержимое, либо сразу заменять содержимое CS и IP.


Ответ отправлен: 25.10.2002, 23:01
Отправитель: Atmion


Отвечает Bob Johnson

Доброе время суток, Bayram Annanurov!
Ты знаешь... IP = Internet Protocol. Использует для адресации хоста четыре байта, например, 192.168.55.1.
А вот про Ethernet - это он уже нагнал. IP - это протокол совсем другого уровня, а Ehternet - это тип сети и фрейма (например Ethernet 802.3). Протокол IP можно вполне и по Token Ring гонять. Ethernet тут не причем...
В общем не заморачивайся. В АСМ нет ни одной мнемоники, в которой бы явно оперировал IP. Если надо в него загрузить значение - jmp, push - ret, и все такое.


Ответ отправлен: 27.10.2002, 13:42
Отправитель: Bob Johnson


Отвечает Ayl

Доброе время суток, Bayram Annanurov!
Мда... Погорячился эксперт...
По поводу регистра IP - да, он есть, но программно недоступен. Особенно на запись. Получить текущее смещение можно таким образом:
...
call near a
a:
pop ax
...
в регистре ax будет смещение метки a в кодовом сегменте.
Записать значение ни в регистр ip, ни в регистр cs тоже напрямую нельзя, они изменяются только с помощью операторов перехода (jmp или jcc), вызова подпрограмм (call), вызове прерываний (int) и возвратов из подпрограмм (ret) и прерываний (iret). Больше команд для изменения пары cs:ip нет.

Ответ отправлен: 25.10.2002, 15:23
Отправитель: Ayl


Отвечает Biv

Доброе время суток, Bayram Annanurov!
IP можно менять jmp'ом

Ответ отправлен: 26.10.2002, 21:06
Отправитель: Biv


Отвечает Supra

Здравствуйте, Bayram Annanurov!
IP переопределить ТАК НЕЛЬЗЯ, т.к. IP неуправляем( в принципе ),
если нужно вызвать подпрогу, лучше другими способами.


Ответ отправлен: 26.10.2002, 20:55
Отправитель: Supra


 Вопрос № 1610

Вот проверил это сообщение и действительно получил на счёт 10
англ.фунтов (16$). Если интересно, можно поучаствовать. Если
получится, то почему бы и нет. Здесь затраты минимальные. Правда
надо знать немного английский язык, ведь адрес и фамилия для
перечислений на англ. языке.
Приветствуем Вас!
Новая компания из Великобритании,
подобно PayPal (платежная Интернет-система) проводит акцию по набору пользователей.
Уже когда Вы сами зарегистрируетесь в компании на Ваш счет будет зачислено 10 английских
фунтов!
За каждого привлеченного пользователя компания выплачивает Вам $10 .. $16!
Три уровня рефералов - потенциальный заработок $1000 за неделю! Это серьезно и реально!!!
Проверено - работает!
Выплата денег сразу по достижении на Вашем счете $100.
Зарегистрируйтесь сами и привлеките всех Ваших знакомых (подсчитайте сами, сколько Вы
получите только от первого уровня)!
Зайдите по ссылке:
http://www.princegategroup.com/affiliates/t.php?rid=80232
Далее нажмите Join.
В форме регистрации введите латинскими буквами свои:
Имя
Фамилию
Компанию (можно не вводить)
Улицу
Город
Страну
Телефон (у России 7-код города-телефон)(можно придумать)
e-mail (ваш настоящий, иначе вы не сможете зарегистрироваться)
Пароль
Подтвердите пароль
Нажимаете на Signup и все. Через 24 часа на Вашем счету уже появится 10 фунтов ($16)!

Ну и на Ваш e-mail приходит письмо c Вашим id-номером и паролем. Также там будет ссылка, по
которой Вы сможете привлекать людей.
ЧТО ДЕЛАТЬ ПОСЛЕ РЕГИСТРАЦИИ?

После успешной регистрации Вам на счет приходит 10 фунтов ($16 долларов)! Дальше Вы делаете
следующее - ищете рефералов (если захотите, можете разместить на своём сайте их баннер, за
это тоже платят, но это не обязательно). Оплата 10-16 $ за каждого привлеченного вами
реферала (человека, который зарегистрировался по вашей ссылке). За неделю, при работе в
Интернете не более часа в день, мной было привлечено самое меньшее 9, самое большее 23
человека. Посчитайте.
Искать рефералов можно следующим способом: заходите на сайт http://www.job.ru/ или
http://www.rabota.mail.ru и оставляете там своё объявление типа: Работа на домашнем
компьютере в интернете. Это не сетевой маркетинг, не создание сайтов, не спонсоры и не
пирамида, капиталовложений не требуется. Нужно просто привлекать людей по своей ссылке.
Оплата 10-16 $ за каждого привлеченного вами реферала.
Кроме того, сообщите об этой новой компании всем своим друзьям, родственникам и знакомым,
которые имеют доступ в Интернет и попросите их зарегистрироваться по Вашей ссылке. У Вас на
счету появится кругленькая сумма! А если Ваши друзья привлекут своих знакомых, то Ваш
заработок составит тысячи долларов! Серьезно!
ОПЛАТА
Часто просят объяснить, как будет осуществляться перевод денег. Я получаю через Western
Union. Это наиболее простой и надёжный способ получения денег. Вам на e-mail вышлют
секретный код. А потом на дом придет извещение о переводе. Затем надо идти в отделение
Western Union (их очень много, практически в каждом банке), не забыв свой паспорт и получить
деньги (с Вас возьмут не более 10 процентов за пересылку).Также деньги можно получать через
E-gold.
Часто спрашивают: За что и кто платит деньги?
Объясняю: Эти деньги платятся за рекламу. По закону никого нельзя насильственно принудить
смотреть рекламу, поэтому компаниям приходиться платить деньги, чтобы заставить потребителей
смотреть рекламу. Эти деньги компании-рекламодатели (Internet магазины и т.п.) платят
Princegate, а она, в свою очередь, платит небольшой процент нам. Рекламный бюджет у
компаний, как Вы знаете, огромный. Так что деньги, которые платит Princegate, составляют
малую долю рекламного бюджета, но для нас 100$ это деньги (а для американцев они не стоят
потраченного времени). Вы же, привлекая людей или показывая на своём сайте рекламный баннер,
за сравнительно небольшие для компании деньги, как раз зарабатываете свои кровные, так что
это совсем НЕ ХАЛЯВА, как некоторым кажется. То есть Вам платят фактически за то, что Вы
рекламируете компанию.



Вопрос отправлен: 25.10.2002, 15:22
Отправитель: ???

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

Отвечает Beeblebrox

Иди в жопу со своим спамом!

Ответ отправлен: 25.10.2002, 15:48
Отправитель: Beeblebrox


Отвечает oleg

Приветствую Вас, ???!
Доброе время суток, ???!
УЁБОК, ПИДАРМОТ И ТУПОРЫЛАЯ СКОТИНА за свой 1ёбаный спам ответишь по полной программен ублюдок

Ответ отправлен: 25.10.2002, 15:34
Отправитель: oleg


Отвечает masquer

Доброе время суток, ???!
Мля, я бы таких КАЗЛОВ (по другому не скажешь) как ты брал бы за ноги и разрывал бы на две части. Снимал бы это на видео и рассылал бы таким как ты.
Еще и ссылку со свом номером кинул. Ламер и идиот к тому же... - по другому не скажешь.

Ответ отправлен: 25.10.2002, 16:47
Отправитель: masquer


Отвечает Eugene

Не Добрый день, ???!
Этот урод пытается на нас навариться. Дело в том, что за каждого из нас при попытке регистрации он получает деньги, а не мы. Наверно начитался дешёвой литературы о заработке в интернете. Короче пошёл ты на...


Ответ отправлен: 25.10.2002, 17:32
Отправитель: Eugene


Отвечает Atmion

Добрый день, ???!
А не пошел бы ты сам знаешь куда!


Ответ отправлен: 25.10.2002, 23:00
Отправитель: Atmion



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

Внимание!
Форма может работать некорректно в почтовых программах "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 (43)
C / C++ (29)
Perl (4)
Delphi (18)
Pascal (24)
Basic / VBA (8)
Java / JavaScript (8)
PHP (6)
MySQL / MSSQL (10)
Пользователю
Windows 95/98/Me (34)
Windows NT/2000/XP (21)
"Железо" (29)
Поиск информации (13)
Администратору
Windows NT/2000/XP (11)
Linux / Unix (12)
Юристу
Гражданское право (10)
Семейное право (6)
Трудовое право (5)
КоАП (6)

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




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

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

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

В избранное