| 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 годов сейчас такая конкуренция что нужно подсадить юзеров на свой софт любой ценой потому что лучше иметь юзера который пользуется ломаной версией, чем он снесет ее нахер из-за глюков (которые ты предлагаешь добавить) и уйдет к конкурентам посмотри на майкрософт — чуваки раздают кучу софта бесплатно и давно перестали делать какие-то хитрые системы защиты потому что если у тебя дома ломаная винда и офис — ты и на работе захочешь винду и мс офис, и фирме придется покупать этот недешевый софт для сотрудников, ведь другой они даже не знают
 |  
| 
 | 
 |    |