Среда, 11 Декабря 2019, 09:34

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Низкоуровневое программирование » Небольшая защита от патча
Небольшая защита от патча
afqДата: Четверг, 01 Августа 2019, 02:59 | Сообщение # 1
Разработчик
Сейчас нет на сайте
Блин, искал в инете, но не нашел ничего о битхаке, лучше наверное называть это патчем. Такое впечатление, будто я сам придумал это название, хотя я его раньше вроде слышал. Я начал изучать заного реверс инжиниринг и ассемблер. Может быть в этот раз изучу так, чтобы ничего не забылось. Раньше изучал, но мало изучил. Я на одном форуме написал крэкми и его взломали с помощью патча. Я в общем начал думать как же можно определить, есть ли патч или нет. Подумал можно ли содержимое метки присвоить регистру и оказалось что можно.
Код

bithack:
  mov ax, [bithack]

Я написал небольшую программу, которая выводит сообщения в зависимости от случая. Что говорить почти не планировал, как получилось, так получилось. Удалил видео, чтобы не позориться.
Код

section .text

; jmp 1b eb
; je  1b 74

global _start

_start:
    mov eax, 10
    cmp eax, 4
bithack:
    jmp done
    jmp error
bit:
    mov eax, 0x4
    mov ebx, 0x1
    lea ecx, [bith]
    mov edx, 9
    int 0x80
    jmp end
done:
    mov eax, 0x4
    mov ebx, 0x1
    lea ecx, [matches]
    mov edx, 9
    int 0x80
    mov ax, [bithack] // загрузить данные метки. Если там jz done, то будет 1b 74
    cmp ax, 0x1b74
    jne bit
    mov eax, 0x4
    mov ebx, 0x1
    lea ecx, [text]
    mov edx, 12
    int 0x80
end:
    mov eax, 1
    mov ebx, 0
    int 0x80    
error:
    mov eax, 0x4
    mov ebx, 0x1
    lea ecx, [errors]
    mov edx, 12
    int 0x80
    jmp end

section .data
matches db 'matches', 0xa, 0x0
text db 'no bithack', 0xa, 0x0
bith db 'bithack', 0xa, 0x0
errors db 'no matches', 0xa, 0x0


Добавлено (01 Августа 2019, 04:53)
---------------------------------------------
В итоге, если в
Код

bithack:
    jmp done
    jmp error

будет jz done, то выведется сообщение "no matches", потому что сравнивается eax с 4, а сам eax равен 10. В коде написано jmp done, это значит что в
Код

    mov ax, [bithack] // загрузить данные метки. Если там jz done, то будет 1b 74

в ax попадёт не 1b 74, а 1b eb. И тогда программа будет знать, что был совершен патч. В таком случае можно вывести сообщение о успешности регистрации, но не делать регистрацию полноценной. Если программа знает что есть патч, то можно наворотить такое, что и не снилось. Правда в ida видны эти метки. Но если кода будет много, то это затруднит анализ. Ещё например можно в каждой функции программы проверять, есть ли патч, и в таком случае не делать то что надо, а делать это беспантово.


мозги << знания << опыт << старания

Сообщение отредактировал afq - Четверг, 01 Августа 2019, 08:41
drcrackДата: Четверг, 01 Августа 2019, 13:08 | Сообщение # 2
старожил
Сейчас нет на сайте
это все методы 1995-2005 годов
сейчас такая конкуренция что нужно подсадить юзеров на свой софт любой ценой
потому что лучше иметь юзера который пользуется ломаной версией, чем он снесет ее нахер из-за глюков (которые ты предлагаешь добавить) и уйдет к конкурентам
посмотри на майкрософт — чуваки раздают кучу софта бесплатно и давно перестали делать какие-то хитрые системы защиты
потому что если у тебя дома ломаная винда и офис — ты и на работе захочешь винду и мс офис, и фирме придется покупать этот недешевый софт для сотрудников, ведь другой они даже не знают
Форум игроделов » Программирование » Низкоуровневое программирование » Небольшая защита от патча
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2019 Рейтинг