Перейти к содержанию

Анти-взлом или как защитить трейнер от взлома


Dison

Рекомендуемые сообщения

Здраствуйте!

 

Приветствую всех пользователей и Администрацию сайта...

 

У меня вопрос?

 

Чем можно защитить трейнер от взлома написанный на CE

 

Ваши предложения...

Ссылка на комментарий
Поделиться на другие сайты

Чем можно защитить трейнер от взлома написанный на CE

 

Ваши предложения...

Не очень понятно о какой защите идет речь

 

1. Если речь идет о перехвате API записи в память, то можно записывать шифрованные данные в выделенную память. Горячие клавиши будут менять по зарегенным меткам только флаги, а поток игры будет по шифрованным данным и этим флагам решать что делать. Т.е. перехват апи записи может быть, но данные там будут как мусор и бесполезны.

 

2. Если речь идет о скрытии скриптов, то их можно хранить зашифрованными или частично зашифрованными, а исполнять расшифрованными в буфере после первого подключения трейнера к процессу игры. А чтобы в памяти не висел буфер с расшифрованными данными, то затереть переменные пустыми символами.

 

Как это сделать? Будет ли работать? Это все надо ковырять и изучать...

Ссылка на комментарий
Поделиться на другие сайты

Не очень понятно о какой защите идет речь

 

1. Если речь идет о перехвате API записи в память, то можно записывать шифрованные данные в выделенную память. Горячие клавиши будут менять по зарегенным меткам только флаги, а поток игры будет по шифрованным данным и этим флагам решать что делать.

 

2. Если речь идет о скрытии скриптов, то их можно хранить зашифрованными или частично зашифрованными, а исполнять расшифрованными в буфере после первого подключения трейнера к процессу игры. А чтобы в памяти не висел буфер с расшифрованнми данными, то затереть переменные пустыми символами.

 

Как это сделать? Будет ли работать? Это все надо ковырять и изучать...

 

Интересует второй способ скрыть или зашифровать можно как нибуть скрипты

Изменено пользователем Dison
Ссылка на комментарий
Поделиться на другие сайты

Ну, тут надо пробовать искать lua код с шифрованием и дешифрованием. Вот я нарыл в тырнете

 

Вот так примерно можно ассемблировать

 

Примерно так:

 

1. Добавить в Lua таблицу основной код дешифрования

2. А в скриптах примерно будет вот так

* Тут я взял одинаковые строки... шифрованного значения disable

 

Но, мне кажется из-за пункта1 все это палится, т.к. код дешифрования на Lua наверно можно будет легко найти, копировать и исполнить шифрованные данные...

local function convert( chars, dist, inv )      return string.char( ( string.byte( chars ) - 32 + ( inv and -dist or dist ) ) % 95 + 32 )endlocal function crypt(str,k,inv)  local enc= "";  for i=1,#str do  if(#str-k[5] >= i or not inv)then  for inc=0,3 do  if(i%4 == inc)then  enc = enc .. convert(string.sub(str,i,i),k[inc+1],inv);  break;  end  end  end  end  if(not inv)then  for i=1,k[5] do  enc = enc .. string.char(math.random(32,126));  end  end  return enc;endlocal enc1 = {29, 58, 93, 28, 27};local cheat0Enabled = [[alloc(newmem,2048,"gamedll_x64_rwdi.dll"+667B79)label(returnhere)newmem:mov [rax+40],#99999mov ecx,[rax+40]lea rdx,[gamedll_x64_rwdi.dll+18DD890]jmp returnhere"gamedll_x64_rwdi.dll"+667B79:jmp newmemnopnopnopnopnopreturnhere:]]local cheat0Disable = [["gamedll_x64_rwdi.dll"+667B79:mov ecx,[rax+40]lea rdx,[gamedll_x64_rwdi.dll+18DD890]//Alt: db 8B 48 40 48 8D 15 0D 5D 27 01dealloc(newmem)]]local cryptedEnable = crypt(cheat0Enabled, enc1)print("Encryption Enable: " .. cryptedEnable)print('')cryptedDisable = crypt(cheat0Disable, enc1)print("Encryption Disable: " .. cryptedDisable)print('----')print("Decryption Enable: " .. crypt(cryptedEnable, enc1, true))print('')print("Decryption Disable: " .. crypt(cryptedDisable, enc1, true))print('--------')--writeToClipboard(cryptedEnable) -- копирует в буффер-------------------------------------local aaSomeCrypted = [[<j)->&+#Rk"+f0LQr*>%<k""Gj{6p2{0Rb&K?j)?e4RT|5UFDj} @jD0@r20If"0@'&,@u*#H8&+Jt<xM_5Hn.yI]7UVs7&+Jt<#>vHxM_5Hn.y'Gc}=Mb5I6e}+@*:vRQ:p4"D,!*G)MU~BTVj[&(Hn<0@r20If"0@g>%<k""Gj{6p2{0Rb&K?j)?e4RT|5UWDh*.Zl"5Hc*'Im-'Im-'Im-'Im-'Im-'Mc13Ml%#McV'9yd,iL0"#Kq,!4mkj^<jwp7O"'"]]--print("Decryption: " .. crypt(aaSomeCrypted, enc1, true))--autoAssemble(crypt(crypted,enc1,true))
[ENABLE]{$LUA}autoAssemble(crypt([[<j)->&+#Rk"+f0LQr*>%<k""Gj{6p2{0Rb&K?j)?e4RT|5UFDj} @jD0@r20If"0@'&,@u*#H8&+Jt<xM_5Hn.yI]7UVs7&+Jt<#>vHxM_5Hn.y'Gc}=Mb5I6e}+@*:vRQ:p4"D,!*G)MU~BTVj[&(Hn<0@r20If"0@g>%<k""Gj{6p2{0Rb&K?j)?e4RT|5UWDh*.Zl"5Hc*'Im-'Im-'Im-'Im-'Im-'Mc13Ml%#McV'9yd,iL0"#Kq,!4mkj^<jwp7O"'"]], enc1, true))[DISABLE]{$LUA}autoAssemble(crypt([[<j)->&+#Rk"+f0LQr*>%<k""Gj{6p2{0Rb&K?j)?e4RT|5UFDj} @jD0@r20If"0@'&,@u*#H8&+Jt<xM_5Hn.yI]7UVs7&+Jt<#>vHxM_5Hn.y'Gc}=Mb5I6e}+@*:vRQ:p4"D,!*G)MU~BTVj[&(Hn<0@r20If"0@g>%<k""Gj{6p2{0Rb&K?j)?e4RT|5UWDh*.Zl"5Hc*'Im-'Im-'Im-'Im-'Im-'Mc13Ml%#McV'9yd,iL0"#Kq,!4mkj^<jwp7O"'"]], enc1, true))
Ссылка на комментарий
Поделиться на другие сайты

А чтобы в памяти не висел буфер с расшифрованными данными, то затереть переменные пустыми символами.

Я такое делал, но почему то трейнер на win8 не открывается, а на win7, winXP работает.

Самая успешная защита, которую мне удавалось делать. (пример реализации в прикреплениях)

Она подойдет для трейнеров с большим кодом. 

Правда опубликовать ли реализацию не знаю. Ведь если рассказать, как защищен, то будет от чего отталкиваться при взломе.

ghl.rar

Изменено пользователем Vlad2
Ссылка на комментарий
Поделиться на другие сайты

Трейнер на CE ты никак не защитишь к сожалению, как бы ты не пытался закриптовать АА-скрипт, в процесс игры-то пишется байт код и по какому-то конкретному адресу, соотвественно перехватив функцию записи в память процесса - NtVirtualWriteMemory будет известен и адрес куда ты пишешь и какие ты байты пишешь (а также сколько байтов ты пишешь).

 

Как вариант, чтобы не использовать подобный подход можно чуть-чуть осложнить жизнь вломщикам, запаковав трейнер в какую-нибудь Themida или VM Protect, но скорее всего почти каждый антивирь будет блочить такой файл.

Можно пойти немного по-другому пути, это зафигачить трейнер в виде DLL, тогда ты сможешь работать с адресным пространством процесса напрямую, но так как ты скорее всего будешь модифицировать код игры, то ты будешь вызывать VirtualProtect (и если перехватить этот вызов внутри игры, то станет известен адрес и диапозон, по которому ты возможно запишешь свои байты).

 

Также, увеличить время взлома можно засчет создания "фонового шума", т.е. вызывать VirtualProtect не тогда когда тебе именно нужно, а просто в рандомные промежутки времени (с параметрами похожими не на фейковые). Соотвественно в период этого фонового шума нужно записывать последовательность байт (желательно тоже использовать какой-нибудь алгоритм рандомизации).

 

Например ты можешь создать грубо говоря очередь запросов, и забирать элемент из очереди каждые 50 или 100 мс, а когда юзер активирует чит (сделай какой-нибудь таймаут небольшой и на это), ты в рандомное место этой очереди впихнешь уже настоящий адрес и запишешь нужные тебе байты).

 

В конечном итоге, единственное что ты можешь сделать, это заставить взломщика потратить больше времени на взлом трейнера, но защитить ты его врядли сумеешь.

Ссылка на комментарий
Поделиться на другие сайты

Ну для этого стоит начать учить WinAPI и какой-нибудь язык программирования.

Можешь задавать вопросы и по этой теме, тебе подскажут.

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.