Защита игр от взлома

         

Обфускация


Код, генерируемый компилятором, очень громоздок и разобраться в нем крайне непросто, однако, все-таки возможно. Чтобы этому помешать, некоторые протекторы используют "запутывание" или обфускацию (от английского obfuscation). В простейшем случае автоматический кодогенератор, свинченный с полиморфного движка, внедряет в код огромное количество незначащих команд типа NOP, XCHGEAX,EBX/XHG EBX,EAX, нашпиговывая ими программу как рождественскую утку или гуся. Более совершенные генераторы используют разветвленную систему условных переходов, математические операции и присвоения, результат которых никак не используется, и другие полиморфные технологии.

.00434000: 60              pushad

.00434001: E800000000             call   .000434006   -------- (1)

.00434006: 5D              pop    ebp

.00434007: 50              push   eax

.00434008: 51              push   ecx

.00434009: EB0F            jmps   .00043401A   -------- (2)

.0043400B: B9EB0FB8EB             mov    ecx,0EBB80FEB ;"e?0e"

.00434010: 07              pop    es

.00434011: B9EB0F90EB             mov    ecx,0EB900FEB ;"e?0e"

.00434016: 08FD            or     ch,bh

.00434018: EB0B            jmps   .000434025   -------- (3)

.0043401A: F2              repne

.0043401B: EBF5            jmps   .000434012   -------- (4)

.0043401D: EBF6            jmps   .000434015   -------- (5)

.0043401F: F2              repne

.00434020: EB08            jmps   .00043402A   -------- (6)

.00434022: FD              std

.00434023: EBE9            jmps   .00043400E   -------- (7)

.00434025: F3              repe

.00434026: EBE4            jmps   .00043400C   -------- (8)

.00434028: FC              cld

.00434029: E959585051             jmp    051533887

.0043402E: EB0F            jmps   .00043403F   -------- (9)



Содержание раздела