HASP4 - как убрать функцию 3Dh

Тема в разделе "WASM.RESEARCH", создана пользователем skifi, 30 июл 2005.

Статус темы:
Закрыта.
  1. skifi

    skifi New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    10
    Хай пипл.

    Есть вопрос, а то сам уже запарился и уперся в стену.

    Пытаюсь прогу отключить от ХАСПА. Ключ без памяти. Прога не шифрована - чистый код. Внутри есть вызовы 01, 3D функции. Нашел пароль...

    Но хочется совсем убрать ХАСП. При старте прога один раз вызывает 3D функцию. В стек кидает следующие DW:

    12D940h

    12D944h

    12D948h

    12D94Ch

    PASSWORD2

    PASSWORD1

    00h

    64h

    3Dh

    затем идет вызов

    hasp(3D, 64, 00, Pass1, Pass2, Par1, Par2, Par3, Par4)

    Вопрос вот в чем - хочу узнать что за блок расшифровывается, а затем просто его расшифровать и записать в ехе. Потом просто занопить все вызовы хаспа.

    По документации par1=0, par2-размер буфера, par3 - сегмент буфера, par4 - смещение буффера. Если 32-ые API - то par3 ненужен.

    А вот у меня какие-то странные цифры лезут. Ну не может быть буфер размером 12D948h!!!

    Как быть? =(
     
  2. Chingachguk

    Chingachguk New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2002
    Сообщения:
    340
    Код (Text):
    1. ;
    2. ; void HASPAPI hasp( int service,
    3. ;                  int seed,
    4. ;                  int lptnum,
    5. ;                  int pass1,
    6. ;                  int pass2,
    7. ;                  int HASP_FAR* p1,
    8. ;                  int HASP_FAR* p2,
    9. ;                  int HASP_FAR* p3,
    10. ;                  int HASP_FAR* p4 );
    11.  
    12. ...
    13. ;
    14. ; Check for 3D
    15. ;
    16. .data
    17. ArgSize   dd 8
    18. Arg3D     db 0dbh,0feh,01eh,06bh,0e4h,01bh,0dbh,0b0h
    19. ;Arg3D     db 8 dup(0)
    20.           db 8 dup(0)
    21. Ans3D     db 095h,078h,04bh,035h,05eh,0bch,0dch,048h,06ch,08ah,0e2h,00dh,022h,0bah, 0f8h,0c3h
    22. MsgArg3D db 'ARG 3D=???????????????????????????????? Result=????????',0Dh,0Ah,0
    23. Result dd 0
    24. .code
    25.  
    26.   LOCALHASP_DECODEDATA =  61
    27.  
    28.   mov  esi,offset Arg3D
    29.   mov  edi,offset MsgArg3D+7
    30.   mov  ecx,16
    31.   call Get_HexStr
    32. ;  mov  esi,offset Result
    33. ;  mov  edi,offset MsgArg3D+31
    34. ;  mov  ecx,4
    35. ;  call Get_HexStr
    36.   push offset MsgArg3D
    37.   call Write_Log
    38.  
    39.   xor  eax, eax
    40.   mov  p1,eax
    41.   mov  p3,eax
    42.  
    43.   mov  p2,8
    44.   mov  p4,offset Arg3D
    45.  
    46.   push offset p4       ; p4
    47.   push offset p3       ; p3
    48.   push offset p2       ; p2
    49.   push offset p1       ; p1
    50.   push dword ptr Key2  ; Key2
    51.   push dword ptr Key1  ; Key1
    52.   push USBHASP_DEFAULT ; HASP_DEFAULT    ; lptnum
    53.   push dword ptr Seed  ; Seed
    54.   push 3Dh        ; service
    55.   call dword ptr ProcHaspAddr
     
Статус темы:
Закрыта.