HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 21.01.2010, 17:53
desTiny
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
 
Ответить с цитированием

  #12  
Старый 21.01.2010, 18:59
isqad88
Новичок
Регистрация: 16.12.2009
Сообщений: 14
Провел на форуме:
20162

Репутация: 0
По умолчанию

как получать API? Сколько кода просмотрел нигде не нашел рабочего
 
Ответить с цитированием

  #13  
Старый 21.01.2010, 19:00
desTiny
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
 
Ответить с цитированием

  #14  
Старый 21.01.2010, 19:13
Adio
Постоянный
Регистрация: 23.05.2005
Сообщений: 617
Провел на форуме:
1262031

Репутация: 71


По умолчанию

Таких пару статей прочитьтать и на дурку )))
 
Ответить с цитированием

  #15  
Старый 21.01.2010, 19:59
Hiro Protagonist
Участник форума
Регистрация: 26.08.2009
Сообщений: 133
Провел на форуме:
193434

Репутация: 79
Отправить сообщение для Hiro Protagonist с помощью ICQ
По умолчанию

2desTiny
а зачем мне kernelbase.dll?
главное я чотко уверен, что под всей линейкой ntdll->kernel32. Остальное в принципе не интересно ) в данном случае. Поэтому проверять не надо.
 
Ответить с цитированием

  #16  
Старый 21.01.2010, 21:06
desTiny
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
 
Ответить с цитированием

  #17  
Старый 21.01.2010, 21:38
Hiro Protagonist
Участник форума
Регистрация: 26.08.2009
Сообщений: 133
Провел на форуме:
193434

Репутация: 79
Отправить сообщение для Hiro Protagonist с помощью ICQ
По умолчанию

ладно, пойду семерку ставить на виртуалку и смотреть )
 
Ответить с цитированием

  #18  
Старый 21.01.2010, 22:21
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

Для самоуверенных читать мой пост где я кинул кусок кода и там описал что и как.
И То что нужно искать там LoadLibraryExA/W потому что других подобных нету.
Это пришлось сделать именно из-за W7 потому как именно kernelbase там получалась а не kernel32.
 
Ответить с цитированием

  #19  
Старый 22.01.2010, 01:02
isqad88
Новичок
Регистрация: 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 должен остаться адрес этой функции...Сильно не ругайте за корявый код я только начал учить асму
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Взломай базы данных и сделай популярный сайт Zaratustra Мировые новости. Обсуждения. 1 24.01.2006 15:03



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ