Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/22: Рейтинг темы: голосов - 22, средняя оценка - 5.00
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12

поиск базы кернел

16.05.2012, 21:23. Показов 4579. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите наладить(на masm работает -авторский пример, а tasm -не мой, не авторский)
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
Search_kernel32 proc 
 
Search_kernel32_1:
    cmp byte ptr ss:[ebp],00h
    jz kernel_limit_end
 
    cmp word ptr ds:[esi],'ZM'
    jz kernel_search_ok
 
Search_kernel32_2:
    dec byte ptr ss:[ebp]
    sub esi,10000h
    jmp Search_kernel32_1
 
kernel_search_ok:
 
    mov edi,ds:[esi+3ch]
    add edi,esi
    cmp word ptr ds:[edi],'EP'
    je kernel_search_ok_pe
 
 
kernel_limit_end:
    mov esi,0BFF70000h
 
kernel_search_ok_pe:  
 
    mov eax,esi
    ret
 
Search_kernel32 endp
start:  
mov esi,[esp]
        mov ebp,esp
        sub esp,100h
        mov eax,50h
        mov [ebp],eax
        add esi,0ffff0000h
        call Search_kernel32
end start
почему то вылетает при обращении к верхним адрессам ядра, ebp- указывает на стек где хранятся данные(ebp+0 =50р)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.05.2012, 21:23
Ответы с готовыми решениями:

Можно ли программируя в кернел мод повредить комп
Можна ли програмируя в кернел мод павредить комп?

Поиск из базы данных
Пожалуйста помогите разобраться, не так давно стал изучать php, на работе дали задачу создать базу данных с поиском. Поисковик взял с...

Поиск базы на компьютере
Знаю что база есть. знаю это из лога. Но скл сервер мэн студия не отображает её в списке баз. Как такое может быть Добавлено через 3...

45
 Аватар для HITMAN
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
16.05.2012, 21:43
Van111, на сайте wasm.ru есть великолепная статья по этому вопросу
0
 Аватар для Vadimych
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
16.05.2012, 21:47
Лучший ответ Сообщение было отмечено как решение

Решение

Van111, вот, посмотри. Находятся и выводятся на консоль имена и адреса dll`ок, загруженных в адресное пространство процесса. И завязывай с тасмом.

code
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
.686
.model flat,stdcall
option casemap:none
 
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\rtl.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
 
.data
fmt db '0x%X',0
 
.data?
stdin dd ?
stdout dd ?
 
.code
 
start proc
local cbytes:dword
local ir:INPUT_RECORD
local buffer[256]:byte
 
invoke AllocConsole
 
mov ebx,fs:[30h]
mov ecx,(PEB ptr [ebx]).ProcessParameters
mov eax,(RTL_USER_PROCESS_PARAMETERS ptr [ecx]).StdOutputHandle
mov stdout,eax
mov eax,(RTL_USER_PROCESS_PARAMETERS ptr [ecx]).StdInputHandle
mov stdin,eax
mov edi,(RTL_USER_PROCESS_PARAMETERS ptr [ecx]).CommandLine.Buffer
movzx ecx,(RTL_USER_PROCESS_PARAMETERS ptr [ecx]).CommandLine.Len
mov dword ptr [edi+ecx],0a000dh
;invoke WriteConsoleW,stdout,edi,ecx,addr cbytes,0
 
mov ebx,(PEB ptr [ebx]).Ldr
mov ebx,(PEB_LDR_DATA ptr [ebx]).InLoadOrderModuleList.Flink
 
mov ebx,(LDR_DATA_TABLE_ENTRY ptr [ebx]).InLoadOrderModuleLinks.Flink
mov esi,ebx
@@:
push esi
mov esi,(LDR_DATA_TABLE_ENTRY ptr [ebx]).BaseDllName.Buffer
invoke lstrlenW,esi
test eax,eax
je @1
mov ecx,eax
push ecx
lea edi,buffer
rep movsw
mov dword ptr [edi],0a000dh
pop ecx
pop esi
add ecx,2
invoke WriteConsoleW,stdout,addr buffer,ecx,addr cbytes,0
 
mov edi,(LDR_DATA_TABLE_ENTRY ptr [ebx]).DllBase
invoke wsprintf,addr buffer,addr fmt,edi
mov ecx,eax
mov word ptr [ecx+buffer],0a0dh
add ecx,2
invoke WriteConsole,stdout,addr buffer,ecx,addr cbytes,0
@1:
mov ebx,(LDR_DATA_TABLE_ENTRY ptr [ebx]).InLoadOrderModuleLinks.Flink
cmp ebx,esi
jnz @b
 
@@:
invoke ReadConsoleInput,stdin,addr ir,sizeof ir,addr cbytes
cmp ir.KeyEvent.AsciiChar,1bh
jnz @b
 
invoke FreeConsole
invoke ExitProcess,0
start endp
end start
3
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
16.05.2012, 21:51  [ТС]
IOAN, своими руками хочу сделать
Vadimych, спасибо, masm не может подключить либу написанную на борланд с++
0
 Аватар для Vadimych
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
16.05.2012, 21:52
Цитата Сообщение от Van111 Посмотреть сообщение
masm не может подключить либу написанную на борланд с++
Странно.
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
16.05.2012, 22:04  [ТС]
Vadimych, блин у tasm и masm даже результат add с одинаковыми числами разный))

Добавлено через 1 минуту
Цитата Сообщение от Vadimych Посмотреть сообщение
Странно.
в последних моих постах написаны ошибки которые он выкидывает
0
 Аватар для Vadimych
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
16.05.2012, 22:11
Цитата Сообщение от Van111 Посмотреть сообщение
tasm и masm даже результат add с одинаковыми числами разный))
А где верный результат? tasm или masm?
0
 Аватар для HITMAN
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
16.05.2012, 22:11
Цитата Сообщение от Van111 Посмотреть сообщение
блин у tasm и masm даже результат add с одинаковыми числами разный))
Это уже мистика проц. один результаты разные!
0
 Аватар для Vadimych
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
16.05.2012, 22:13
Цитата Сообщение от Van111 Посмотреть сообщение
в последних моих постах написаны ошибки которые он выкидывает
Я дюже не всматривался. Помню только, либу с расширением .a подключить ты пытался.
0
 Аватар для _lucius_
391 / 179 / 2
Регистрация: 14.03.2012
Сообщений: 443
16.05.2012, 22:42
Van111 из SEH получи адрес который будет указывать куда-то в kernel32. Выровни его и смотри MZ. Если не нашел то -10000h и т.д. пока не найдеш.

Добавлено через 20 минут
Вот:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
    assume fs:nothing
    mov eax,fs:[0]
    mov eax,dword ptr [eax+4]
    mov edx,10000h
    dec edx
    add eax,edx
    not edx
    and eax,edx
@@: sub eax,10000h
    cmp word ptr [eax],'ZM'
    je @F
    jmp @B
@@:
В итоге в eax'e будет база кернела.
1
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
16.05.2012, 22:53
_lucius_, твой пример выдаёт адрес ntdll.dll...
а вообще в чём проблема то?
Assembler
1
2
3
4
5
6
7
8
9
...
.data
    _kernel32 db 'kernel32.dll',0   ;или - kernelbase.dll, смотря какая тебе нужна
.code
start:
    invoke GetModuleHandle,addr _kernel32
           ;eax = handle = адрес kernel32
    invoke ExitProcess,0
end start
0
 Аватар для _lucius_
391 / 179 / 2
Регистрация: 14.03.2012
Сообщений: 443
16.05.2012, 23:07
Цитата Сообщение от zzzyyyxxx Посмотреть сообщение
а вообще в чём проблема то?
Он не может API использовать. Импорта нет, код внедряемый.

Добавлено через 2 минуты
Цитата Сообщение от zzzyyyxxx Посмотреть сообщение
_lucius_, твой пример выдаёт адрес ntdll.dll
Хмм.. бред какой-то. Ведь дефолтный SEH обработчик в кернел сидит. У тебя какая ось?
0
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
16.05.2012, 23:14
Цитата Сообщение от _lucius_ Посмотреть сообщение
бред
кто мешает проверить?
в таких вещах я доверяю больше программам, чем словам... у меня WIN7..


Цитата Сообщение от _lucius_ Посмотреть сообщение
Импорта нет, код внедряемый.
нафиг импорт, вычисляй напрямую адрес нужной API и всё...
1
 Аватар для _lucius_
391 / 179 / 2
Регистрация: 14.03.2012
Сообщений: 443
16.05.2012, 23:26
Не ну проверял. У меня на Win XP SP3 на кернел возвращает. Спасиб что про семерку предупредил. Ща пойду проверю.

Добавлено через 7 минут
zzzyyyxxx, да ты прав посмотрел в 64 разрядной семёрке. Действительно на ntdll возвращает. Тогда можно вместо указателя на SEH обработчик, просто с верхушки стека адрес взять. Он тоже на кернел указывает.

Добавлено через 1 минуту
Assembler
1
2
3
4
5
6
7
8
9
    mov eax,[esp]
    mov edx,10000h
    dec edx
    add eax,edx
    not edx
    and eax,edx
@@: sub eax,10000h
    cmp word ptr [eax],'ZM'
    jne @B
1
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
16.05.2012, 23:57
_lucius_, чёта я никак не въеду в твой код...
смотри, допустим мы находимся в точке входа.. чтобы получить адрес kernel32.dll его можно снять с верхушки стэка простым mov eax,[esp] и всё(что твоя программа успешно и делает, при том занимая 9 строк кода, но...) но немного усложним задачу..
допустим мы находимся в какой то области программы, в которой и необходимо вставить вычисление адреса kernel32.dll, соответственно стэк (очень даже возможно) будет сдвинут и вместо адреса kernel32 будет лежать какое либо значение.. оно не имеет для нас большого значения, хотя в принципе от него будет зависеть то, как быстро сдохнет инфицированная программа, т.к. считывая с верхушки это "левое" значение твой код завалит всю программу, очень вероятно, что будет обращение к адресу запрещённому для чтения, что и можешь проверить например так:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    pop esi  ;вынимаем адрес kernel32.dll
    
    mov eax,[esp]
    mov edx,10000h
    dec edx
    add eax,edx
    not edx
    and eax,edx
@@: sub eax,10000h
    cmp word ptr [eax],'ZM'
    je @F
    jmp @B
@@: 
 
    push esi  ;восстанавливаем его
PS: ты только не подумай, что мне лишь бы придраться к чему нибудь, просто я так думаю было бы очень даже хорошо, когда выложенный код проверяли бы.. ну типа тебе же на будущее, чтобы ошибок не было, мало-ли, может ты захочешь реально где-то применить эти знания...
1
 Аватар для _lucius_
391 / 179 / 2
Регистрация: 14.03.2012
Сообщений: 443
17.05.2012, 00:09
Цитата Сообщение от zzzyyyxxx Посмотреть сообщение
смотри, допустим мы находимся в точке входа.. чтобы получить адрес kernel32.dll его можно снять с верхушки стэка простым mov eax,[esp] и всё(что твоя программа успешно и делает, при том занимая 9 строк кода, но...)
Так ты во внутрь образа кернела адрес получиш. А мой код находит именно указатель на базу (т.е. начало), что и нужно Van111'у. Там расположена MZ сигнатура. Т.е. отталкиваясь от туда мы можем указатель на экспорт получить. А в кернеле у нас LoadLibrary и GetProcAddress. След-но мы можем и все остальные функции получить.

Добавлено через 3 минуты
Цитата Сообщение от zzzyyyxxx Посмотреть сообщение
но немного усложним задачу.. допустим мы находимся в какой то области программы, в которой и необходимо вставить вычисление адреса kernel32.dll, соответственно стэк (очень даже возможно) будет сдвинут и вместо адреса kernel32 будет лежать какое либо значение..
Это да. Мой код применим при ровном стеке. Т.е. точка входа должна быть на внедряемом коде. Ща я другой способ настрачу. Он в любом месте кернел получит, но кода будет поболее.
0
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
17.05.2012, 00:10
Цитата Сообщение от _lucius_ Посмотреть сообщение
Так ты во внутрь образа кернела адрес получиш.
ёпрст.. эт у меня мой код до твоего вычислял адрес и засунул его в стек..(для сверки, недоглядел)
а в остальном, программка всё-таки падает..

Цитата Сообщение от _lucius_ Посмотреть сообщение
Ща я другой способ настрачу. Он в любом месте кернел получит, но кода будет поболее.
а смысл? те же API намного удобнее и компактнее.. вычисляй адреса нужных функций и всё пучком...
0
 Аватар для _lucius_
391 / 179 / 2
Регистрация: 14.03.2012
Сообщений: 443
17.05.2012, 00:17
Цитата Сообщение от zzzyyyxxx Посмотреть сообщение
а смысл? те же API намного удобнее и компактнее.. вычисляй адреса нужных функций и всё пучком...
Как ты понять то не можеш, что нет у нас API если мы внедряемся. Если будем в импорте инфицированного файла искать нужных функций может и не быть.
0
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
17.05.2012, 00:29
_lucius_, да большая часть программ пакованы.. а все пакеры с которыми я встречался имеют на борту данные функции...
либо как вариант, можно сделать свою таблицу адресов, для Win7 и XP, а перед обращением проверить заголовок самой GetModuleHandle(либо её части, а то некоторые перехватчики API могут исказить её начало), дабы не вызвать падения программы при обращении..

хотя если ты так настроен к API, то вычисли своими силами все адреса подключённых dll...
0
 Аватар для _lucius_
391 / 179 / 2
Регистрация: 14.03.2012
Сообщений: 443
17.05.2012, 00:47
Цитата Сообщение от zzzyyyxxx Посмотреть сообщение
_lucius_, да большая часть программ пакованы.. а все пакеры с которыми я встречался имеют на борту данные функции...
Это ведь все равно не точно. Да и протекторы могут сами скрыто эти функции использовать. Так что их может и не быть. Покрайней мере крипторы я такие встричал.
Цитата Сообщение от zzzyyyxxx Посмотреть сообщение
либо как вариант, можно сделать свою таблицу адресов, для Win7 и XP, а перед обращением проверить заголовок самой GetModuleHandle(либо её части, а то некоторые перехватчики API могут исказить её начало), дабы не вызвать падения программы при обращении..
Это вообще плохой вариант. Нам ведь не только 7 и XP нужно, но и другие масдаи. Тем более адреса могут быть разными в рамках одной ОС.
Цитата Сообщение от zzzyyyxxx Посмотреть сообщение
хотя если ты так настроен к API, то вычисли своими силами все адреса подключённых dll...
Запросто.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.05.2012, 00:47
Помогаю со студенческими работами здесь

Поиск термина из базы
Всем привет. возникла проблема с memo. задача. есть два документа( один новый другой старый) с большим количеством терминов (каждый...

Поиск по таблице из базы данных
У меня есть таблицка в базе данных и форма search.aspx в которой я задаю Имя и Фамилию и ищу по этой таблице всех у кого такое имя или...

Поиск базы данных из списка
Добрый день! Потребовалось перебросить журнал регистрации от одной бд к другой. А там где они хранятся очень много баз свои логи пишут....

Сделать поиск по таблицам базы
Не дружу совсем с VBA, нужно сделать поиск по 2 таблицам, например пользователь пишет простые вещества из таблицы Порядковый номер и он...

Поиск базы данных в сети
Всем привет. Вопрос в следующем: Delphi 7 + Mysql (База уже подключена к программе через драйвер MySQL Connector ODBC) Хочу...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru