Не работает repe cmpsb

Тема в разделе "WASM.BEGINNERS", создана пользователем NAG, 4 дек 2008.

  1. NAG

    NAG New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2008
    Сообщения:
    5
    Здравствуйте, помогите решить проблему: следующий код должен находить номер функции GetProcAddress в таблице имен. Однако при достижени командой
    Код (Text):
    1.  repe cmpsb
    последнего символа слова результат отрицательный. Уже попробовал все, заранее спасибо.


    Код (Text):
    1. .486
    2. .model flat, stdcall
    3. option casemap :none
    4. include ..\..\masm32\include\windows.inc
    5. .data
    6. .code
    7. start:
    8. assume fs: nothing
    9. assume ds: @code, es: @code
    10. mov eax, fs:[00000]
    11. inc eax
    12.     dec eax
    13.     mov esi, eax
    14.     mov eax, [eax]
    15.     inc eax
    16.     jne $-6
    17. lodsd
    18. lodsd
    19. xor ax, ax
    20. jmp $+7h
    21.     sub eax, 10000h
    22.     cmp word ptr [eax], 5A4Dh
    23.     jne $-10d
    24.     mov ebx, [eax+3Ch]
    25.     cmp word ptr [ebx+eax], 4550h
    26.     jne $-15h
    27.    
    28. ; SEH
    29. jmp $+29d
    30. db "GetProcAddress"
    31. db "LoadLibraryA",0
    32. mov ebx, eax
    33. add ebx, [ebx+3Ch] ; PE (VA)
    34. ;mov ebx, [eax+3Ch]
    35. ;add ebx, eax ; RVA
    36. mov ebx, [ebx+78h] ; IMAGE_EXPORT_DIRECTORY (VA)
    37. add ebx, eax ; (RVA)
    38.  
    39. xor ebp, ebp
    40. mov edx, [ebx+20h] ; (VA)
    41. add edx, eax ; (RVA)
    42.  
    43. call $+5h
    44. mov esi, [esp]
    45. sub esi, 31h esi GetProcAddress
    46.  
    47. push esi ; GetProcAddress
    48.  
    49. cld
    50.      mov edi, [edx]
    51.      add edi, eax ;
    52.      mov ecx, 14d
    53.  
    54.      repe cmpsb
    55.  
    56.      inc ebp
    57.      je $+0ah ; GetProcAddress
    58.      mov esi, [esp]
    59.      add edx, 4
    60. jmp $-14h
     
  2. _Aspire

    _Aspire New Member

    Публикаций:
    0
    Регистрация:
    1 дек 2008
    Сообщения:
    62
    inc ebp
    je $+0ah ; GetProcAddress

    Что это? Убери отсюда inc ebp и все будет.
     
  3. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    да, inc ebp меняет флаг нуля
    а еще ты понятия VA и RVA путаешь
     
  4. NAG

    NAG New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2008
    Сообщения:
    5
    Большое спасибо, считаю, тему можно закрыть.