Как найти базовый адрес User32.dll?
, и других как Kernel32,advapi.dll,SetupApi.dll
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [18.97.14.89] |
|
|
Перед отправкой сообщения внимательно прочтите правила раздела!!!

| Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Как найти базовый адрес User32.dll?
, и других как Kernel32,advapi.dll,SetupApi.dll
|
Сообщ.
#1
,
|
|
|
|
Желательно универсальную
|
|
Сообщ.
#2
,
|
|
|
|
Arazel, исходник на FASM.
Прикреплённый файл ApiSearch.rar (2.93 Кбайт, скачиваний: 202)
|
|
Сообщ.
#3
,
|
|
|
|
ProgramMan А на TASM нет нечего? Я синтаксис FASM плохо понимаю
|
|
Сообщ.
#4
,
|
|
|
|
Arazel во всех версия MS Windows база у них одинаковая
|
|
Сообщ.
#5
,
|
|
|
|
Имелось ввиду физический адрес?
|
|
Сообщ.
#6
,
|
|
|
|
Arazel, а эт не факт что они загружены будут. Лучше искать kernel а потом через LoadLibrary.
Цитата Monty @ Arazel во всех версия MS Windows база у них одинаковая Это с каких пор? |
|
Сообщ.
#7
,
|
|
|
|
Ct757 Это я знаю
![]() Но разве тебе не интересно найти User32.dll в памяти |
|
Сообщ.
#8
,
|
|
|
|
Arazel из PEB (Process Environment Block) можно узнать адреса и имена всех загруженных библиотек
Копай PEB_LDR_DATA. |
|
Сообщ.
#9
,
|
|
|
|
Ct757 Я пытаюсь как можно меньше сделать код а ты предлагаешь его повысеть так не пойдет
Я даже именна ф-ций в CRC32 формате минимизировал!Зато файл уменьшился в 1kb Так что надо как можно меньше сделать... Вообщем наверное я воспользуюсь LoadLibraryA |
|
Сообщ.
#10
,
|
|
|
|
Arazel, ну тогда уж можно было что-нибудь менее громоздкое сделать чем crc32
Например какой-нибудь простенький самопальный хэш-алгоритм.Цитата Arazel @ Зато файл уменьшился в 1kb И какой в этом смысл? |
|
Сообщ.
#11
,
|
|
|
|
Цитата Ct757 @ самопальный хэш-алгоритм Ну прям, сейчас я буду создовать настоящий CRC32 а может ещё MD5 или вообще GOST Примерно такую... Но естественно мой код в три раза меньше ![]() ![]() ![]() format PE GUI 4.0 include '%fasminc%\win32a.inc' ;;GetKernel procedure ; GetKernel procedure mov eax, [fs:30h] ; ptr 2 РЕВ test eax, eax js @F ; if we R on 9x - jmp @F mov eax, [eax + 12] ; ptr 2 PEB_LDR_DATA mov esi, [eax + 28] ; ptr 2 InitializationOrderModuleList lodsd mov eax, [eax + 8] ; eax -> VA kernel32.dll jmp @skip @@: mov eax, [eax + 52] mov eax, [eax + 184] @skip: call GetFunctions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; invoke LoadLibrary, szUser32 call GetFunctions xor ebx, ebx invoke MessageBox, ebx, szMessage, szCaption, MB_ICONINFORMATION + MB_OK invoke ExitProcess, ebx ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GetFunctions: xchg eax, ebx ; Search for API mov edx, [ebx + 3ch] ; PE mov esi, [ebx + edx + 78h] ; Export Table RVA lea esi, [ebx + esi + 18h] ; Export Table VA+18h lodsd xchg eax, ecx ; NumberOfNames lodsd ; AddressOfFunctions push eax lodsd ; AddressOfNames add eax, ebx xchg eax, edx lodsd ; AddressOfNameOrdinals add eax, ebx push eax mov esi, edx search_api_name: lodsd add eax, ebx ; eax points to the name of function ; Calc function name hash xor edx, edx ; edx == 0, coz it'll contain hash calc_hash: rol edx, 3 xor dl, byte [eax] ; xor dl with current character inc eax ; character shift cmp byte [eax], 0 ; is we in the end of chain? jnz calc_hash ; Get offset to ordinal mov eax, [esp] ; AddressOfNameOrdinals add dword [esp], 2 ; Move to next ordinal word mov edi, HashTable ok_hash: cmp [edi], edx jnz @F ; Needed function found movzx eax, word [eax] ; Name ordinal shl eax, 2 ; Multiply by 4 add eax, [esp + 4] add eax, ebx mov eax, [eax] add eax, ebx stosd jmp @endif @@: scasd ; Skip function hash @endif: cmp dword [edi], 0 jnz ok_hash dec ecx jnz search_api_name add esp, 8 ret szUser32 db 'user32', 0 szMessage db 'Message!!!', 0 szCaption db 'Caption', 0 HashTable: ; Functions' hashes may be in non-alphabetical order ReadFile dd 00BE25545h IsDebuggerPresent dd 09279E814h GetModuleFileName dd 060F43F1Bh MessageBox dd 014D14C51h GetFileSize dd 09554EFE7h GetProcAddress dd 0F2509B84h CloseHandle dd 0C0D6D616h GlobalFree dd 0585ED3CFh LoadLibrary dd 0A412FD89h GetModuleHandle dd 0C9BFFA7Dh VirtualProtect dd 0C5FF2F46h GlobalAlloc dd 0C2F6D009h CreateFile dd 038C62A7Ah ExitProcess dd 0E6FF2CB9h Zero db 0 ; Terminating NULL is necessary. DON'T DELETE Цитата Ct757 @ И какой в этом смысл? Смысл не в 1kb а в самой задаче! Моя задача: Создать программу которая будет брать на себя очень многое... но при этом получить маленькую размером программу учитывая оптимальность. Использовав как можно больше логического вычисление и как можно меньше переменных. Вот так |
|
Сообщ.
#12
,
|
|
|
|
Цитата Ct757 @ Это с каких пор? И правда ..., с чем я мог перепутать? ![]() Я помню что что-то переходит от версии к версии и не меняется. |
|
Сообщ.
#13
,
|
|
|
|
Цитата Arazel @ Создать программу которая будет брать на себя очень многое... но при этом получить маленькую размером программу учитывая оптимальность. Использовав как можно больше логического вычисление и как можно меньше переменных. Вирусы писать - нехорошо |
|
Сообщ.
#14
,
|
|
|
|
Ct757
Есть одни маленькие детали… 1) Я не занимаюсь созданием вирусов a) Если я знаю Ассемблер и тонкость самого ядра это не значит, что я собираюсь создавать мощные вредоносные программы! b) Если у меня есть право модифицировать чужое приложение! это не значит, что собираюсь с помощью этого приложение уничтожить другие, в том числе информацию… 2) Действительно я могу создать вирус размером 2.0kb (Max)не зависимо, на каком языке (Хоть сам DELPHI) и которая будет выполнять очень многое действий. Но! Во первых таких подобных программ очень много! и я от этого не чего не получаю! Во вторых я не хочу просидеть со стенкой. И в третьих это грех! (Тоже самое про Хакеров) 3) Я создаю очень не обычную программу! |
|
Сообщ.
#15
,
|
|
|
|
Цитата Arazel @ Действительно я могу создать вирус размером 2.0kb Можно привести алгоритм написания такого вируса на FoxPro2.6 хотя бы весьма приблизительно? |