быстрый порт патча на примере Sublime Text 3 x64 (3059)

Discussion in 'Реверсинг' started by sn0w, 9 Jun 2014.

  1. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,021
    Likes Received:
    1,200
    Reputations:
    327
    тащемта крякается элементарно, но просто подход объясню как портировать кряк из х86 в х64 - на ютубе есть видео где школьник крякает, а точнее говоря, учит таких же школотронов пользоваться хексредактором, я там и запостил.

    вообщем сперва берем х86 версию, грузим в иду и смотрим что там происходит - просто нопается место где esi должен стать ненулевым, после этого прога будет жрать любую хрень в качестве лицензии, например

    смотрим что рядом располагается, ога 1) сравнение с 5B и 2) ссылка на литералу "EA7E" 3) множественные компарсии несколько ниже с константами - собственно этой инфы достаточно чтобы локализовать место патча в х64 билде. я вообщемто еще пометил 2 вызова между которых это происходит, чисто для визуального контроля поначалу.

    там правда все немного не так, но чтобы ветвление логически также шло - меняем test ebx,ebx на xor ebx,ebx.

    на картинке думаю понятно

    [​IMG]

    для ленивых - ищем:
    85 DB 0F 85 1D 07 00 00
    заменяем на:
    31 DB 0F 85 1D 07 00 00
     
    #1 sn0w, 9 Jun 2014
    Last edited: 9 Jun 2014
  2. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    627
    Likes Received:
    246
    Reputations:
    42
    Это не порт патча, а скорее поиск похожих признаков в частном случае. Годится опять таки только в конкретном, данном случае и не юзабельно в остальных
     
  3. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,021
    Likes Received:
    1,200
    Reputations:
    327
    один и тотже исходник билдится под таргеты x86 и под x64.
    и если в сорце было
    f0();
    if(gNotRegistered) check_license(sKey);
    f1();
    ...
    то так будет везде.