Форум программистов, компьютерный форум, киберфорум
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для alex-rudenkiy
5 / 5 / 0
Регистрация: 02.01.2013
Сообщений: 438

Прокомментируйте, пожалуйста, код, который получает адрес до "LoadLibrary"

19.08.2017, 18:07. Показов 1813. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, я нашёл в интернете такой код, который супер магическим способом получает адрес до "LoadLibrary" и мне очень при очень интересно как он работает, объясните пожалуйста как он работает (желательно поставив комментарии).

P.S. Желательно хотелось услышать KyberMax

Самое главное, код :

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
        CLD
        XOR EDX,EDX
        MOV DL,30h
        PUSH DWORD PTR FS:[EDX]
        POP EDX
        MOV EDX,DWORD PTR DS:[EDX+0Ch]
        MOV EDX,DWORD PTR DS:[EDX+14h]
        jmp3:
            MOV ESI,DWORD PTR DS:[EDX+28h]
            XOR ECX,ECX
            MOV CL,18h
            XOR EDI,EDI
        jmp2:
            XOR EAX,EAX
            LODS BYTE PTR DS:[ESI]
            CMP AL,61h
            JL SHORT jmp1
            SUB AL,20h
    
        jmp1:
            ROR EDI,0Dh
            ADD EDI,EAX
            LOOP SHORT jmp2
            CMP EDI,6A4ABC5Bh
            MOV EBX,DWORD PTR DS:[EDX+10h]
            MOV EDX,DWORD PTR DS:[EDX]
            JNE SHORT jmp3
            MOV EDX,DWORD PTR DS:[EBX+3Ch]
            ADD EDX,EBX
            PUSH DWORD PTR DS:[EDX+34h]
            MOV EDX,DWORD PTR DS:[EDX+78h]
            ADD EDX,EBX
            MOV ESI,DWORD PTR DS:[EDX+20h]
            ADD ESI,EBX
            XOR ECX,ECX
        
        nextelement:
            INC ECX
            LODS DWORD PTR DS:[ESI]
            ADD EAX,EBX
            CMP DWORD PTR DS:[EAX],50746547h
            JNE SHORT nextelement
            CMP DWORD PTR DS:[EAX+4h],41636F72h
            JNE SHORT nextelement
            CMP DWORD PTR DS:[EAX+8h],65726464h
            JNE SHORT nextelement
            DEC ECX
            MOV ESI,DWORD PTR DS:[EDX+24h]
            ADD ESI,EBX
            MOV CX,WORD PTR DS:[ECX*2+ESI]
            MOV ESI,DWORD PTR DS:[EDX+1Ch]
            ADD ESI,EBX
            MOV EDX,DWORD PTR DS:[ECX*4h+ESI]
            ADD EDX,EBX
            mov edi, edx ;EDI = адрес нашей loadlibrary
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.08.2017, 18:07
Ответы с готовыми решениями:

Метод получает не тот адрес, который передается
Всем привет. Вроде простецкая задача, но видимо гдето накасячил, и теперь вылезла дикая ошибка. в общем сама проблема на скрине:...

Прокомментируйте пожалуйста код
Объясните пожалуйста как работает данный кусок кода: template <typename T> Deque <T> Deque<T>::operator + (const...

Прокомментируйте код пожалуйста
#include<iostream.h> #include<stdio.h> #include<conio.h> #include<graphics.h> class Point { int X,Y; public: ...

1
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
20.08.2017, 08:37
Лучший ответ Сообщение было отмечено Убежденный как решение

Решение

Опишу кратко.

С каждым потоком связана структура TEB (Thread Information Block), на нее указывает FS[0]. TEB имеет указатель на структуру PEB (Process Environment Block). Через PEB можно добраться до двухсвязного списка загруженных модулей. Элементом списка является структура содержащая имя модуля и его базу загрузки. Мы можем пройтись по списку, сравнивая имя с “kernal32.dll”, и найдя нужный модуль взять его базу. Имея базовый адрес парсим таблицу экспорта, получаем адрес LoadLibrary.

Например:
Assembler
1
2
3
4
        XOR EDX,EDX
        MOV DL,30h
        PUSH DWORD PTR FS:[EDX]
        POP EDX
Смотрим TEB, смещение 0x30 указывает на PEB => в EDX указатель на PEB. Далее:
Assembler
1
MOV EDX,DWORD PTR DS:[EDX+0Ch]
Смотрим PEB, смещение 0x0C указывает на Ldr. Далее:
Assembler
1
MOV EDX,DWORD PTR DS:[EDX+14h]
Смотрим PEB_LDR_DATA, смещение 0x14 указывает на список InMemoryOrderModuleList (элементом списка является структура LDR_DATA_TABLE_ENTRY).

Далее сам, смотри структуры, разбирайся.
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.08.2017, 08:37
Помогаю со студенческими работами здесь

Прокомментируйте пожалуйста код
// Zadacha1.1.cpp: определяет точку входа для консольного приложения. ////Задано четырехзначное число N. //Будут ли все цифры этого...

Пожалуйста, прокомментируйте код
Спасибо !!! можете и этот код также прокомментировать буду очень благодарен!!! (defun _sort (f lst &optional a b c) (if...

Прокомментируйте, пожалуйста, код программы.
Доброго дня всем! Перед Вами - 2 программы - 1 шифрует текст методом гаммирования, вторая - генератор простых чисел. Если не трудно -...

Прокомментируйте пожалуйста код header.h
header.h #include <iostream> #include <fstream> #include <string> #include <typeinfo> #include <stdarg.h> #include <vector> ...

Пожалуйста прокомментируйте мой код
Прокомментируйте каждую строчку пожалуйста, кроме выводов результатов и т.п. : ```py eng_abc = 'abcdefghijklmnopqrstuvwxyz' ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru