Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чужой код. Помогите разобраться в чужом коде. 
V
    Опции темы
try_to_get
Дата 15.8.2007, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 426
Регистрация: 19.3.2007
Где: Россия

Репутация: нет
Всего: 2



Код

.386
.model flat, stdcall
option casemap:none

pushz macro szText:VARARG
    **********
    ********
    ********
nexti:
endm

includelib C:\masm32\lib\kernel32.lib

ExitProcess PROTO :DWORD

.data
    db 0
.code
    invoke ExitProcess, 0
start:

include inc\****_****.inc

include inc\****_****.inc

include inc\****.inc

end start



После директивы .code вызывается процедура ExitProcess, по идеи программа должна завершиться, и прекратить работу, но после, подключаются части кода программы и программа продолжает работать. 
Почему автор решил в начале завершить программу, какой смысл в этом? 
Или я не так понял?! 


--------------------
Алгоритм не роскошь, а средство достижения цели!
user posted image
PM MAIL   Вверх
Severyanin
Дата 16.8.2007, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: 1
Всего: 9



Скорее всего, разгадка кроется в тех модулях, которые подключаются потом. Не могли бы вы их код тоже выложить. А то интересно smile 


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
ksili
Дата 16.8.2007, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



А то, что ExitProcess расположен до метки start, ничего? На него точно управление приходит? (я вообще-то в этом не рублю)



--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
try_to_get
Дата 16.8.2007, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 426
Регистрация: 19.3.2007
Где: Россия

Репутация: нет
Всего: 2



Severyanin  А тему не закроют?

Добавлено через 11 минут и 39 секунд
Вот, вот нашел

Цитата

Что же касается вызова функции ExitProcess, то здесь проблема кроется в системах старше Windows XP (Win9x\Me\NT\2000). При попытке запустить код без такого вызова программа попросту не запускалась в перечисленных системах. Причем молча. Скорее всего, это связано с тем, что в данных системах загрузчик не хочет загружать программы без секций импорта.


Но все равно не понятно?!  smile

Добавлено через 13 минут и 50 секунд
Кто поможет, получит плюсики.  smile 


--------------------
Алгоритм не роскошь, а средство достижения цели!
user posted image
PM MAIL   Вверх
MAKCim
Дата 16.8.2007, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 1
Всего: 207



Цитата(try_to_get @  16.8.2007,  09:01 Найти цитируемый пост)
Но все равно не понятно?!

ну судя по цитате
где-то в коде должен быть вызов ExitProcess()
а т. к он (вызов) по сути нужен только фиктивно, поэтому мы помещаем его в такое место, откуда он не может быть сделан, т. е до start


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Severyanin
Дата 16.8.2007, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: 1
Всего: 9



А я думаю, что этот вызов был нужен для корректного завершения потока, вызвавшего даную программу. Сначала закрываем его, а потом - переходим на основной цикл. Я так думаю smile (Мимино smile )


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
ksili
Дата 16.8.2007, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



По-моему, MAKCim, прав. ExitProcess'у же вроде должен быть передан хэндл процесса. А там ноль. Так что она я думаю не вызывается, а находится там фиктивно.


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Severyanin
Дата 16.8.2007, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: 1
Всего: 9



Нет, это не хэндл, а признак успешного завершения. Первым аргументом ему передается код ошибки


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
try_to_get
Дата 16.8.2007, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 426
Регистрация: 19.3.2007
Где: Россия

Репутация: нет
Всего: 2



Цитата

где-то в коде должен быть вызов ExitProcess()

Да, есть.

Все я понял, загрузчик не мог найти правильного выхода в программе ret или тот же ExitProcess, и ExitProcess был помещен в .code, но только не понятно почему процессор не завершает программу или код работает только в метке start: .... end start

А сам выход осуществляется очень интересным способом:

значит в данных есть 

dd 0D66358ECh ; ExitProcess Таблица хешей пока точно не разбирался в этом.

дальше 

есть переменная  _ExitProcess        equ dword ptr [ebp-4*12]

автор не хотел давать знать что он использует kernel32? тому кто будет дизасемб. его прогу

Поправите меня если я ошибся...  smile






--------------------
Алгоритм не роскошь, а средство достижения цели!
user posted image
PM MAIL   Вверх
Severyanin
Дата 16.8.2007, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: 1
Всего: 9



Цитата

код работает только в метке start: .... end start

Да. Это то же самое. что main{}.
Цитата

значит в данных есть 

dd 0D66358ECh ; ExitProcess

Это дамп вызова этой самой ExitProcess без ошибки.


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
try_to_get
Дата 16.8.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 426
Регистрация: 19.3.2007
Где: Россия

Репутация: нет
Всего: 2



Как и обещал

MAKCim      +1
Severyanin +1
ksili             +1


--------------------
Алгоритм не роскошь, а средство достижения цели!
user posted image
PM MAIL   Вверх
Severyanin
Дата 17.8.2007, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: 1
Всего: 9



Спасибо smile 


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
ksili
Дата 17.8.2007, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Ух-ты! и мне чо ли?
Вот Severyanin реально заслужил


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
try_to_get
Дата 17.8.2007, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 426
Регистрация: 19.3.2007
Где: Россия

Репутация: нет
Всего: 2



Цитата

Ух-ты! и мне чо ли?
 могу отнять 1.
Отнять?


--------------------
Алгоритм не роскошь, а средство достижения цели!
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0859 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.