в общем есть у меня мой собственный сорец написанный год назад, вот вернулся к этому вопросу и открыл сорец. Что я могу сказать, там хлам полнейший, я вчера пытался разобраться что я там натворил и несмог(гыгы), я бы ноги себе поотрывал за то, как я "писал код" и "коментировал". Куча каких-то проверок и тд. короче весь код ненужен, только самая важная часть, хотя конечно я еще поковыряю свой код, но быстрее было бы отсюда забрать.
Код (Text): get_index: xor edx, edx xor eax, eax .next_name: push esi .next_sym: cmp byte [esi], 0 je .found cmpsb je .next_sym @@: scasb jne @B pop esi inc edx jmp .next_name .found: pop esi mov eax, edx ret get_proc_addresses: push ebp mov esi, get_proc_addr_str mov edi, GetProcAddress push edi mov eax, [ebx + IMAGE_DOS_HEADER.e_lfanew] lea ebp, [ebx + eax] mov ebp, [ebp + IMAGE_NT_HEADERS.OptionalHeader.DataDirectory] add ebp, ebx mov edx, [ebp + IMAGE_EXPORT_DIRECTORY.AddressOfNames] add edx, ebx mov edi, [edx] add edi, ebx pop edx push edx call get_index mov edx, [ebp + IMAGE_EXPORT_DIRECTORY.AddressOfNameOrdinals] add edx, ebx mov ecx, [ebp + IMAGE_EXPORT_DIRECTORY.nBase] lea eax, [edx + eax*2 + 2] lea ecx, [ecx * 2] sub eax, ecx mov ax, word [eax] and eax, 0000FFFFh mov edx, [ebp+IMAGE_EXPORT_DIRECTORY.AddressOfFunctions] add edx, ebx mov eax, [edx + eax * 4] add eax, ebx pop edx pop ebp ret