Сейчас на форуме: tyns777, zombi-vadim (+3 невидимых)

 eXeL@B —› Программирование —› Импорт апи по хешам
Посл.ответ Сообщение

Ранг: 46.9 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 09 марта 2008 04:32 · Поправил: Zloy
· Личное сообщение · #1

include '..\..\include\win32ax.inc'
.data
tmp db 12 dup(0)
.code
start:
invoke GetModuleHandleA,'kernel32.dll'
;mov eax,eax ;Адрес библиотеки в памяти
mov ebx,9121B500h ;Хеш фунциия
call GetApi
invoke ExitProcess,0

proc GetApi
mov edi,[eax+3Ch] ;PE HEADER
add edi,eax ;LIBRARY MODULE
mov edi,[edi+78h] ;RVA EXPORT TABLE
add edi,eax ;ENTRY EXPORT TABLE
mov ecx,[edi+18h] ;EXPORT.NUMBER OF NAMES
mov ebp,[edi+20h] ;EXPORT.NAMES OF FUNCTIONS
add ebp,eax

.api_search:
mov esi,eax
add esi,[ebp+(ecx-1)*4]
;Calculate hash
mov ebx,1
.hash:
imul ebx,dword[esi]
inc esi
cmp byte[esi],0
jne .hash

cmp ebx,9121B500h ;lstrlenA(9121B500h)
je .api_found ;if = then jump


dec ecx ;Dec
jns .api_search ; if (-) then quit.

jmp .api_quit

.api_found:
invoke MessageBoxA,0,0,0,0

.api_quit:
ret
endp

.end start



Что то не работает помогите строки через invoke messageBoxA,0,esi,0,0 выводит корректно но где то проблема происходит при обсчете хеша
Данная программа выдает совсем другой результат
include 'include\win32ax.inc'
.data
my db 'lstrlenA',0
tmp db 12 dup(0)
.code
start:
mov esi,my

;Calculate Hash
pushad
mov edi,1
.hash:
imul edi,dword[esi]
inc esi
cmp byte[esi],0
jne .hash

invoke wsprintfA,tmp,'%X',edi
invoke MessageBoxA,0,tmp,0,0
popad

invoke ExitProcess,0
.end start




Ранг: 162.2 (ветеран)
Активность: 0.090
Статус: Участник

Создано: 09 марта 2008 09:30
· Личное сообщение · #2

www.wasm.ru/forum/viewtopic.php?id=12329




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 09 марта 2008 09:35
· Личное сообщение · #3

Эээ, а потрассировать в отладчике оба варианта, сравнить логику и найти расхождение не катит?



Ранг: 46.9 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 09 марта 2008 09:49
· Личное сообщение · #4

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



Ранг: 66.8 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 09 марта 2008 10:52 · Поправил: UsAr
· Личное сообщение · #5

Имена экспортируемых функций обычно не выравниваются, поэтому в первом случае на последнем шаге будет
imul edi,dword[esi] ; [edi] = 'A\x00ls'

во втором
imul edi,dword[esi] ; [edi] = 'A\x00\x00\x00'



Ранг: 46.9 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 09 марта 2008 13:40 · Поправил: Zloy
· Личное сообщение · #6

всем спасибо разобрался


 eXeL@B —› Программирование —› Импорт апи по хешам
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати