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

RFpro.ru: Ассемблер? Это просто! Учимся программировать


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты данной рассылки

Boriss
Статус: Академик
Рейтинг: 2649
∙ повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 2284
∙ повысить рейтинг »
vladisslav
Статус: 8-й класс
Рейтинг: 1348
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)

Номер выпуска:1422
Дата выхода:27.02.2011, 21:30
Администратор рассылки:Зенченко Константин Николаевич (Модератор)
Подписчиков / экспертов:219 / 66
Вопросов / ответов:1 / 1

Вопрос № 182290: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: 1) Ниже прилагается исходник на tasm который ищет KERNEL32 base адресс. На оси XP\Vista программа работает. Суть задачи сводиться к тому как подкорректировать алгоритм поиска для win7 ? Фо...



Вопрос № 182290:

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:

1) Ниже прилагается исходник на tasm который ищет KERNEL32 base адресс. На оси XP\Vista программа работает.
Суть задачи сводиться к тому как подкорректировать алгоритм поиска для win7 ? Формат tasm



Отправлен: 22.02.2011, 21:00
Вопрос задал: ANATOLY FIRST (3-й класс)
Всего ответов: 1
Страница вопроса »


Отвечает Павел Юрьевич (9-й класс) :
Здравствуйте, ANATOLY FIRST!

Для поиска Kernel32.DLL лучше использовать универсальный алгоритм:

Код:
cld
xor edx, edx

mov edx, [fs:edx+0x30] // получаем указатель на PEB
mov edx, [edx+0x0C] // получаем PEB->Ldr
mov edx, [edx+0x14] // получаем первый модуль из списка InMemoryOrder
next_mod:
mov esi, [edx+0x28] // получаем указатель на список имен модулей (unicode)
push byte 24
pop ecx
xor edi, edi
loop_modname:
xor eax, eax
lodsb // читаем следующий байт имени модуля
cmp al, 'a' // некоторые версии Windows хранят имена в нижнем регистре
jl not_lowercase
sub al, 0x20 // нормализуем
not_lowercase:
ror edi, 13
add edi, eax // добавляем байт к хешу имени
loop loop_modname
cmp edi, 0x6A4ABC5B // сравниваем хеш с KERNEL32.DLL
mov ebx, [edx+0x10] // получаем базовый адрес модуля
mov edx, [edx] // получаем следующий модуль
jne next_mod

// в EBX получаем адрес модуля.

Ответ отправил: Павел Юрьевич (9-й класс)
Ответ отправлен: 22.02.2011, 21:26
Номер ответа: 265980
Россия, Челябинск
ICQ # 197232777

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 265980 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.



    В избранное