ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

21.01.2010, 17:53
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме: 3008839
Репутация:
1502
|
|
mov esi,[eax+0x1c]
lodsd
~
mov eax, [eax+0x1c]
mov eax, [eax]
и нафиг не нужны эти первый пуш и последний поп
>> там постоянно
никто ничего не обещает. Вот если ты так уверен в порядке - ну-ка сходу скажи, где в цепочке будет kernelbase.dll?
__________________
Bedankt euch dafür bei euch selbst.
H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
|
|
|

21.01.2010, 18:59
|
|
Новичок
Регистрация: 16.12.2009
Сообщений: 14
Провел на форуме: 20162
Репутация:
0
|
|
как получать API? Сколько кода просмотрел нигде не нашел рабочего
|
|
|

21.01.2010, 19:00
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме: 3008839
Репутация:
1502
|
|
почитай например http://www.phrack.com/issues.html?issue=62&id=7
__________________
Bedankt euch dafür bei euch selbst.
H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
|
|
|

21.01.2010, 19:13
|
|
Постоянный
Регистрация: 23.05.2005
Сообщений: 617
Провел на форуме: 1262031
Репутация:
71
|
|
Таких пару статей прочитьтать и на дурку )))
|
|
|

21.01.2010, 19:59
|
|
Участник форума
Регистрация: 26.08.2009
Сообщений: 133
Провел на форуме: 193434
Репутация:
79
|
|
2desTiny
а зачем мне kernelbase.dll?
главное я чотко уверен, что под всей линейкой ntdll->kernel32. Остальное в принципе не интересно ) в данном случае. Поэтому проверять не надо.
|
|
|

21.01.2010, 21:06
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме: 3008839
Репутация:
1502
|
|
>>главное я чотко уверен
А вот семёрке плевать на твою уверенность.
__________________
Bedankt euch dafür bei euch selbst.
H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
|
|
|

21.01.2010, 21:38
|
|
Участник форума
Регистрация: 26.08.2009
Сообщений: 133
Провел на форуме: 193434
Репутация:
79
|
|
ладно, пойду семерку ставить на виртуалку и смотреть )
|
|
|

21.01.2010, 22:21
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Для самоуверенных читать мой пост где я кинул кусок кода и там описал что и как.
И То что нужно искать там LoadLibraryExA/W потому что других подобных нету.
Это пришлось сделать именно из-за W7 потому как именно kernelbase там получалась а не kernel32.
|
|
|

22.01.2010, 01:02
|
|
Новичок
Регистрация: 16.12.2009
Сообщений: 14
Провел на форуме: 20162
Репутация:
0
|
|
Верно ли написан код получения GetProcAddress ? Вроде все как в туториале
Код:
.386
.model flat, stdcall
option casemap:none
includelib \masm32\lib\kernel32.lib
ExitProcess PROTO : DWORD
.data
db 0
ProcAd db "GetProcAddress",0h
Counter db 0h
OrdinalTableVA db 0h
AddressTableVA db 0h
Kernel db 0h
.code
start:
;считаем дельта смещение
call VirDelta
VirDelta:
sub dword ptr [esp], offset VirDelta
push dword ptr [esp]
;jmp ReadSEH
; Читаем SEH
ReadSEH:
xor edx, edx ; edx = 0
assume fs:flat
mov eax, fs:[edx] ; читаем элемент SEH
dec edx ; edx = 0FFFFFFFFh
; Ищем элемент со значением 0FFFFFFFFh
SearchKernel32:
cmp [eax], edx ; сравниваем очередной с 0FFFFFFFFh
je CheckKernel32 ; прыгаем, если нашли
mov eax, [eax] ; получаем следующее значение
jmp SearchKernel32 ; если не нашли - ищем дальше
; Определяем адрес Kernel32
CheckKernel32:
mov eax, [eax + 4] ; получаем адрес ГДЕ-ТО в
; kernel32.dll
xor ax, ax ; выравниваем полученный адрес
; Ищем сигнатуру MZ
SearchKernelMZ:
cmp word ptr [eax], 5A4Dh ; сверяем сигнатуру MZ
je CheckKernelMZ ; сигнатура верна, переходим на
; проверку сигнатуры PE
sub eax, 10000h ; если не равна MZ, то ищем дальше
jmp SearchKernelMZ
; Проверяем сигнатуру PE
CheckKernelMZ:
mov edx, [eax + 3Ch] ; переходим на PE-заголовок
cmp word ptr [eax + edx], 4550h ; сверяем сигнатуру
jne _Exit ; неверная сигнатура, поэтому
; выходим
call GetAPI
_Exit:
invoke ExitProcess, 0h
;поиск адреса GetProcessAddress
GetAPI:
mov edx, offset Kernel
mov [edx], eax
mov esi, offset ProcAd
mov edx, esi
@_1:
cmp byte ptr [esi], 0; конец строки?
jz @_2
inc esi
jmp @_1
@_2:
inc esi
sub esi, edx
mov ecx, esi
;;теперь в ecx и esi находится размер имени функции GetProcessAddress (12h символов)
mov ebx, eax
xor eax, eax
mov esi, ebx
add esi, 3Ch ;заголовок PE
lodsw
add eax, ebx
mov esi, [eax + 78h] ;RVA таблицы экспортов
add esi, ebx ;указатель на RVA таблицы адресов
add esi, 1ch
lodsd ;eax = RVA таблицы адресов
add eax, ebx ;eax VA таблицы адресов
mov edx, offset AddressTableVA
mov[edx], eax
;push eax ;сохраняем
lodsd ;eax = RVA таблицы указателей на имена
add eax, ebx ; eax = VA таблицы указателей на имена
push eax ;сохраняем
lodsd ;eax = RVA таблицы ординалов
add eax, ebx
mov edx, offset OrdinalTableVA
mov [edx], eax
;push eax
pop esi
@_3: push esi ;сохраняем VA таблицы указателей на имена
lodsd
add eax, ebx
mov esi, eax
mov edi, offset ProcAd
push ecx
cld
repe cmpsb
pop ecx
jz @_4
pop esi
add esi, 4
mov edx, [offset Counter]
inc edx
push ecx
mov ecx, offset Counter
mov [ecx], edx
pop ecx
jmp @_3
@_4:
pop esi
mov edx, offset Counter
mov eax, [edx]
shl eax, 1
mov edx, offset OrdinalTableVA
add eax, [edx]
shl eax, 2
mov edx, offset AddressTableVA
add eax, [edx]
mov edx, offset Kernel
add eax, [edx]
ret
end start
по идее в EAX должен остаться адрес этой функции...Сильно не ругайте за корявый код я только начал учить асму
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|