Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Help -> Работа с Ntdll.dll |

25.11.2007, 21:50
|
|
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме: 1845671
Репутация:
1338
|
|
Help -> Работа с Ntdll.dll
Из своей программы, получаю адресс загрузки NTDLL.DLL и хочу анализировать PE-заголовок, но при попытки проверки MZ-сигнатуры выдается сообщение об ошибки, ошибка доступа к памяти, доступ к памяти запрешен!
VirtualProtect на весь SizeOfImage из NTDLL.DLL тоже не помогает, хотя функция возвращает не ноль.
При просмотре программы через ollyDBG, моя программа анализирует загловок NTDLL.DLL и выполняет то, что запланировано без ошибок.
Как я понел: При выполнении моей проги в контексте отладчика (т.е. при просмотре в ольке) ошибок при обращении к адрессному пространству NTDLL.DLL - НЕТ, как добиться нормальной работы, в чем тут проблема??? 
Последний раз редактировалось GlOFF; 25.11.2007 в 22:27..
|
|
|

25.11.2007, 23:02
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
фрагмент кода в студию
|
|
|

25.11.2007, 23:27
|
|
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме: 1845671
Репутация:
1338
|
|
Код:
mov edx, 7C900000
cmp word ptr[edx], 5A4Dh ; cmp 'MZ'
jnz @end
Ошибка при попытке чтения word по адресу загрузки ntdll.dll (7C900000 - на WinXP SP2).
Последний раз редактировалось GlOFF; 25.11.2007 в 23:31..
|
|
|

25.11.2007, 23:34
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
>>mov edx, 7C900000
cmp word ptr[edx], 5A4Dh ; cmp 'MZ'
jnz @end
А ты уверен, что адрес загрузки там? C помощью LoadLibrary или GetModuleHandleA получаешь адрес загрузки и все прекрасно работает.
Последний раз редактировалось 0x0c0de; 25.11.2007 в 23:38..
|
|
|

25.11.2007, 23:37
|
|
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме: 1845671
Репутация:
1338
|
|
0x0c0de При загрузки модуля NTDLL.DLL по умолчанию уже подгружено к каждому процесу, наподобия как kernel32.dll?
|
|
|

25.11.2007, 23:41
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
>>0x0c0de При загрузки модуля NTDLL.DLL по умолчанию уже подгружено к каждому процесу, наподобия как kernel32.dll?
Да
|
|
|

26.11.2007, 00:15
|
|
HARDstasy
Регистрация: 26.11.2004
Сообщений: 1,367
Провел на форуме: 4226592
Репутация:
2175
|
|
GlOFF, компилятор?
даже делфя нормально сгенерила код и все отрабатывает вне оли:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
res: integer;
begin
res := 0;
asm
pushad
MOV EDX,$7C900000
CMP WORD PTR [EDX],$5A4D
JNZ @fail
mov res, 1
jmp @ending
@fail:
mov res, 0
@ending:
popad
end;
if res = 1 then Showmessage('Found!') else Showmessage('Failed !')
end;
|
|
|

26.11.2007, 00:28
|
|
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме: 1845671
Репутация:
1338
|
|
Разобрался
Странный факт! Заходим в ОЛЮ, при загрузке модуля на вершине стека [esp] лежит адресс в kernel32 , а на [esp+4] адресс в ntdll.
А при запуске вне отладчика, по [esp+4] совсем другой адресс.  Вот я и оперался на [esp+4].
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|