Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
feslent
52 / 11 / 5
Регистрация: 29.10.2013
Сообщений: 102
1

Invoke + GetProcAddress & LoadLibrary

24.06.2014, 17:55. Просмотров 1171. Ответов 1
Метки нет (Все метки)

Всем привет.

Размышляю на тему обфускации. Решил переопределить стандартный макрос invoke, и снабдить его GetProcAddress / LoadLibrary.
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
56
57
58
    format PE GUI
 
    section '.text' code import readable
 
;   ----------------------------------------------------------------
    include 'win32ax.inc'
;   ----------------------------------------------------------------
 
 
;   ----------------------------------------------------------------
    library kernel32,               'kernel32.dll',\
            user32,                 'user32.dll'
 
    import  kernel32,\
            LoadLibraryA,           'LoadLibraryA',\
            GetProcAddress,         'GetProcAddress'
;   ----------------------------------------------------------------
 
 
macro xinvoke proc, lib, [arg]
{
    common
;   ----------------------------------------------------------------
    stdcall c, lib, proc
;   ----------------------------------------------------------------
    if ~ arg eq
        reverse
        push arg
        common
    end if
    
    call eax
}
 
proc c, lib, proc
    invoke LoadLibraryA, [lib]
    invoke GetProcAddress, eax, [proc]
    ret
endp
 
 
;   ----------------------------------------------------------------
;       entry point
;   ----------------------------------------------------------------
entry $
 
    xinvoke MessageBoxA, user32, 0, text, tittle, MB_OK
    xinvoke ExitProcess, kernel32, 0
 
 
    tittle              db 'caption',           0
    text                db 'example',           0
 
    MessageBoxA         db 'MessageBoxA',       0
    user32              db 'user32.dll',        0
 
    ExitProcess         db 'ExitProcess',       0
    kernel32            db 'kernel32.dll',      0
Вопрос следующий: как оно может сказаться на скорости работы кода, и практикуют ли так вообще? Какие возможны костыли от такого способа поиска адресов api?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2014, 17:55
Ответы с готовыми решениями:

Прокомментируйте, пожалуйста, код, который получает адрес до "LoadLibrary"
Здравствуйте, я нашёл в интернете такой код, который супер магическим способом...

invoke
заранее спасибо! .386 .model flat, stdcall option casemap:none includelib...

процедура invoke
вот эту прогу на сделать с использование процедуры invoke .386 .model flat,...

Invoke AboutBox
Откуда он берёт информацию моём компьютере ? .386 .model flat, stdcall ...

Синтаксис masm и invoke
.486 .model flat, stdcall option casemap :none include...

1
murderer
3321 / 1467 / 134
Регистрация: 06.10.2010
Сообщений: 3,230
25.06.2014, 12:05 2
FreeLibrary забыл.
как оно может сказаться на скорости работы кода
На читаемости кода под отладчиком это никак не отразится, а вот производительность упадёт.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2014, 12:05

Почему invoke WideCharToMultiByte не срабатывает?
Всем привет, подскажите пожалуйста почему у меня WideCharToMultiByte не...

без использования invoke (убрать процедуру)
занося параметры функций GetStdHandle и WriteConsoleA в стек без использования...

LoadLibrary, GetProcAddress: как правильно подгружать функцию из библиотеки?
Подскажите пожалуйста, как правильно подгружать функцию из библиотеки? пытаюсь...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru