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

Vlad2

Ветераны
  • Постов

    279
  • Зарегистрирован

  • Посещение

  • Победитель дней

    13

Сообщения, опубликованные Vlad2

  1. У меня получилось найти только 22 проверки из 28, остальные 6 никаким образом не находятся, если даже бряки держать по 10 минут. При внедрении скриптов на все эти 22 инструкции, игра все равно вылетает. Вылет происходит во время копирования ехе файла, соответственно дело до затирания прыжков оригинальными байтами не доходит. Следовательно предполагаю, что какая-то из неизвестных 6 проверок обнаруживает изменение в коде и вызывает краш.

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

  2. В 01.10.2016в14:09, AntonVit сказал:

    //1 первая инструкция - затирание 16 байт (для подстраховки) mov ["PLACE_ACU_clone"+55D741F],E9F90232 mov ["PLACE_ACU_clone"+55D7423],0000069C mov ["PLACE_ACU_clone"+55D7427],FF5926E9 mov ["PLACE_ACU_clone"+55D742b],108966FF

    Может еще для большей простоты можно сделать так:

    "PLACE_ACU_clone"+55D741F:
    db 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF // Сюда вставлять байты оригинальной инструкции

     

     

    • Плюс 1
  3. 1 час назад, Garik66 сказал:

    ЗЫ: первая ошибка в Вашем скрипте, которая кинулась в глаза, нет выравнивания, т.е.:

    Писал же, что код подправил. Хорошо, если я ошибся и не вижу ошибку, а то прям уже не знаю что делать.

    Если кому то интересно, то могу логин,пароль в ЛС кинуть, чтоб сами попробовали покопаться.

    [ENABLE]
    alloc(newmem, 2048, "TheCrew.exe"+6258F9)
    alloc(memory, 75112599)
    aobscan(search, 32 02 38 F8 F5 E9 E3 CE 07 00 48 83 ED 0C)
    registersymbol(search)
    registersymbol(memory)
    label(SkipCopy)
    label(returnhere)
    label(originalcode)
    
    newmem:
    cmp [memory],0
    jne SkipCopy
    push rcx
    lea rsi,[TheCrew.exe+1000]
    lea rdi,[memory]
    mov rcx,47A2097
    repe movsb
    
    mov rcx,search
    sub rcx,TheCrew.exe+1000
    lea rdi,[memory]
    mov [rcx+rdi],f8380232
    mov byte ptr [rcx+rdi+1],f5
    pop rcx
    
    SkipCopy:
    cmp rdx,TheCrew.exe+1000
    jb originalcode
    cmp rdx,TheCrew.exe+47A3090
    ja originalcode
    
    sub rdx,TheCrew.exe+1000
    add rdx,memory
    
    originalcode:
    xor al,[rdx]
    cmp al,bh
    cmc
    jmp returnhere
    
    memory:
    db 0
    
    search:
    jmp newmem
    
    returnhere:
    
    [DISABLE]
    search:
    xor al,[rdx]
    cmp al,bh
    cmc
    
    dealloc(newmem)
    dealloc(memory)
    unregistersymbol(memory)
    unregistersymbol(search)

     

  4. В общем ничего не получилось сделать. Нашел 12 инструкций, которые сканируют код игры. Также для них написал скрипты, которые бы передавали оригинальные участки кода игры, но толку нет. Игра вылетает при любом внедрении скриптов

  5. И еще: 

    Проверяющую код инструкцию 

    xor al,[rdx]

    Проверяет еще несколько инструкций, в том числе и она сама. И все эти же инструкции читают каждую из них.

    В общем замкнутый круг, и что в такой ситуации делать?

    2.JPG

  6. Скрипт уже поправил и тщательно все проверил, по идеи должно работать, но он не активируется.

    Методом тыка понял, что он не активируется, из за этой инструкции:

    lea rsi,[TheCrew.exe+1000]

    потому что TheCrew.exe имеет адрес 7FF000000000, и эта инструкция его не принимает 

  7. Всем привет.

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

    Посмотрел видео Как я взламывал Crysis 3. Часть 2. где Xipho рассказывает, как он обошел проверку целостности кода. Решил повторить подобную ему процедуру. Поставил брекпоинт на инструкцию игры и выпала следующая инструкция, которая читает каждый байт кода игры.

     

    Скрытый текст

    h_1473498062_2476690_9f305fa366.jpg

     

    Скрытый текст

     

    
    
    TheCrew.exe+9EC6A - cmp bl,bl
    TheCrew.exe+9EC6C - and al,dl
    TheCrew.exe+9EC6E - jmp TheCrew.exe+6A15FB
    TheCrew.exe+9EC73 - or eax,ecx
    TheCrew.exe+9EC75 - test al,6E
    TheCrew.exe+9EC77 - bt ebx,ecx
    >>> TheCrew.exe+9EC7A - xor al,[rdx]
    TheCrew.exe+9EC7C - cmc 
    TheCrew.exe+9EC7D - add rdx,01
    TheCrew.exe+9EC81 - jmp TheCrew.exe+6AF8B0
    TheCrew.exe+9EC86 - jmp TheCrew.exe+3673B7
    TheCrew.exe+9EC8B - jmp TheCrew.exe+E5B3B
    TheCrew.exe+9EC90 - cmc 
    TheCrew.exe+9EC91 - xadd al,cl
    TheCrew.exe+9EC94 - ror al,1
    TheCrew.exe+9EC96 - setno cl
    TheCrew.exe+9EC99 - mov al,[rbp+00]
    TheCrew.exe+9EC9C - adc cl,dh
    TheCrew.exe+9EC9E - mov cl,ah
    TheCrew.exe+9ECA0 - mov cl,[rbp+02]
    

     

     

     

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

     

    Скрытый текст

     

    
    [ENABLE]
    //code from here to '[DISABLE]' will be used to enable the cheat
    alloc(IntegrityFakeCheck,256)
    alloc(MemoryCopy, 75112592) // Размер ехе
    aobscan(IntegrityAddr, 32 02 F5 48 83 C2 01 E9 2A 0C 61 00)
    registersymbol(IntegrityAddr)
    label(ReturnToOriginalCode)
    label(SkipCopy)
    label(NotInCopy)
    label(IntegrityCheckData)
    
    IntegrityFakeCheck:
    cmp [MemoryCopy],0
    jne SkipCopy
    
    push rcx
    lea rsi,[TheCrew.exe+1000]
    lea rdi,[MemoryCopy]
    mov rcx,47A2090 //Размер ехе в hex`е
    repe movsb
    
    mov rcx,IntegrityAddr
    sub rcx,TheCrew.exe+1000
    lea rdi,[MemoryCopy]
    mov [rdi+rcx],48f50232
    mov bype ptr [rdi+rcx+4],83
    pop rcx
    
    SkipCopy:
    cmp rcx,TheCrew.exe+1000
    jb NotInCopy
    cmp rcx,TheCrew.exe+47A3090
    ja NotInCopy
    
    sub rcx,TheCrew.exe+1000
    add rcx,MemoryCopy
    mov [rdx],rcx
    
    NotInCopy:
    xor al,[rdx]
    cmc
    add rdx,01
    jmp ReturnToOriginalCode+2 // +2 для того, чтобы попасть на следующую оригинальную инструкцию
    
    MemoryCopy:
    db 0
    
    IntegrityAddr:
    jmp IntegrityFakeCheck
    
    ReturnToOriginalCode:
    
    [DISABLE]
    //code from here till the end of the code will be used to disable the cheat
    IntegrityAddr:
    xor al,[rdx]
    cmc
    add rdx,01
    dealloc(IntegrityFakeCheck)
    dealloc(MemoryCopy)
    unregistersymbol(IntegrityAddr)

     

     

    Даже не сомневаюсь, что я что-то сделал не так, и после массы неудачных попыток так и не получилось сделать, чтоб скрипт работал.

    Скрипт просто не активируется.

    Подскажите, где я допустил ошибку

     

     

  8. Здравствуйте,хочу сделать движение текста в право, и чтобы он опять с начяла ишол,в общем как у LIRW-a,на днях сделал что-то такое, но он двигался вправо влево и очень-очень быстро,подскажите кто знает, может и LIRW поможет?

    f=createForm(true)l=createLabel(f)t=createTimer(f)form_show(f)f.position=4l.caption='hello't.interval=1t.setOnTimer(Timer)t.enabled=truefunction Timer() if (l.left > f.width) then l.left = l.width*(-1) end l.left=l.left+1end
    • Плюс 2
  9. Чтоб написать скрипт самостоятельно нужно знать язык на котором пишется скрипт блин! А трейнеры в CE пишутся на LUA! Кстате я английский не на столько хорошо знаю чтоб читать такое:

    Когда-то я тоже занимался написанием трейнеров в СЕ, и я прекрасно знаю, о чем я говорю. Для начала тебе нужно почитать об ассемблерных командах и хотя-бы попытаться понять, как это вообще работает. Дальше уже отлаживать игру и изменять ее код, делать AA скрипы СЕ. На этих скриптах и строить свои трейнеры. LUA я начал заниматься, когда ассемблера мне не хватало, и нужно было писать более сложные алгоритмы, тогда я уже имел базовый багаж знаний для написания трейнеров. Так что не забегай так сразу далеко.

    И всегда есть переводчик, так что переводи, вот и все.

  10. Ну, во первых скрипт мой, сделан правда с помощью друга...

    Слишком громко сказано. Сигнатуры не твои, скрипт сделал с помощью друга. Посути ты вставил сигнатуры друга в шаблон поиска и замены сигнатуры. Так что скажу снова, начни с несложных игр и делай скрипты.

  11. Далее, ты угадал, делал я трейнер через cheat engine, но прости меня, надо же начинать с малого!

    Конечно же нужно начинать с малого, но это малое совсем не в том, чтоб по чужими скриптами делать трейнеры. Начт

    Начни с несложных игр и делай скрипты.

  12. Ничего не понял ты как я погляжу... Ок объясню: там где процесс для трейнера выберается можно и руками ввести процесс это 1, 2 для игр в браузере процесс ищется с помощью combobox а для него нафиг не нужен работающий браузер. Достаточно иметь нужный и работающий скрипт!

    Спасибо конечно за то, что пытаешься чтото объяснить, но это снова не тот ответ, которого я ожидал.

  13. Там процесс выберается кнопкой, по другому для браузерной игры чит не сделать. Это тебе так, чтоб знал :)

    Ты не понял вопроса. Я говорю, что нельзя написать скрипт не подключившись к процессу браузера, а этого процесса, как ты говоришь, у тебя в СЕ нет - Это первое.

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

  14. Win10 не запускается :(

    Смеетесь чтоле?)) Может это из за отсутствия иконки на ехе`шнике, сейчас скомпилирую еще раз)

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

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

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