Перехват Апи функций сплайсингом

Тема в разделе "WASM.WIN32", создана пользователем Lex2029, 20 ноя 2007.

  1. Lex2029

    Lex2029 New Member

    Публикаций:
    0
    Регистрация:
    17 сен 2007
    Сообщения:
    199
    Как же можно некорректно вычислить адрес?
    @Jump:
    db 0EFh (А так же я пробовал другие n вариантов кода команды jmp
    dd offset MyMessageBox

    И потом пишу:
    WriteProcessMemory,...,...,@Jump,X,NULL

    х Соответственно, сколько байт записать, 5 или 6.

    Как только меняю на
    push / ret, сразу работает. А Jump, он прыгает, только всегда куда-то не туда :dntknw:
    И команду Jumpa, который бы прыгнул куда нужно, я уже давно спрашиваю :)
     
  2. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Lex2029
    Неверный адрес патаму шта
     
  3. Lex2029

    Lex2029 New Member

    Публикаций:
    0
    Регистрация:
    17 сен 2007
    Сообщения:
    199
    Да нет, адрес верный, просто jmp его не правильно понимает. Вот мне и нужно команду jmp, которая правельно поймет адрес, который я ей представляю методом offset MyMessageBox.
     
  4. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    а какой размер адреса у данной инструкции jmp.
    угу. тупая железяка.
     
  5. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    ЗЫ:
    Млять, я под стулом. ;)))) Давно так не ржал. Спасибо ;)
     
  6. Lex2029

    Lex2029 New Member

    Публикаций:
    0
    Регистрация:
    17 сен 2007
    Сообщения:
    199
    И что там под столом? Узнали че-нить? Или так и не можете мне помочь? Странные вы люди. Столько дней, столько сил, столько времени потратили, а ответ то, максимум 2 байта написать. А вы ржете и издеваетесь. Обидно...
     
  7. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Lex2029
    Ну почитайте же наконец как работает JMP!
     
  8. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    Lex2029
    ты эта ... полегче, никто тебе ничего не должен! хотит народ поржать - имеет полное право
     
  9. DillerInc

    DillerInc New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2006
    Сообщения:
    41
    Докатились...
    Почему тема не в разделе для новичков??

    Lex2029,а вам товарищ книгу по ассемблеру в руки и марш зубрить!
     
  10. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Lex2029

    Все разобрался. Короче код операции 0E9h. Теперь попорядку.

    У тебя есть адрес для хука
    AddresProc: mov edi,edi
    push ebp
    ....


    У тебя есть процедура которая будет обрабатывать хук

    HookProcessing: pushad
    call Mutex
    jxx AllreadyRestore
    ....
    Call Mutex
    call RestoreHook
    AllreadyRestore:
    popad
    jmp ds:[StoreAddres]

    В данном случае пользуется переменная StoreAddress
    StoreCode db ?
    dd ?

    Так, теперь

    SetHook: mov eax,offset AddresProc
    mov [StoreAddress],eax
    mov dl,[eax]
    mov [StoreCode],dl
    mov byte ptr [eax],0E9h
    mov ebx,offset HookProcessing

    sub ebx,eax !!!!!!!!!!!!!!!!!!!!!! 2 САМых ГЛАВНЫХ СТРОЧКИ
    sub ebx,5
    mov edx,[eax+1]
    mov [StoreCode+1],edx
    mov [eax+1],ebx


    PS:
    Label1:
    jmp Address
    Label2:
    Address это относительное смещение от Label2, а не абсолютный адрес

    PS: Для коммерческой отказоустойчивой реализации необходимо еще SuspendThread(все потоки инжектируемого процесса)
    VirtualProtectEx(....PAGE_EXECUTE_READWRITE....) потом Хук, потом ResumeThread(все потоки)
    Тоже необходимо при снятии хука.