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

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

Всем,привет!!!На днях скачал игру "Фермер",хотел взломать,деньги,бензин и прочие,тип у них double,но столкнулся с тем что не могу записать дабл в скрипт,например:

newmem:mov dword ptr [рег.+смещение],(double)100

И сразу вылет,если кто может помогите,игра весит 90 мб,но даже кто знает как записать дабл с радостью выслушаб!

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

Всем,привет!!!На днях скачал игру "Фермер",хотел взломать,деньги,бензин и прочие,тип у них double,но столкнулся с тем что не могу записать дабл в скрипт,например:

newmem:mov dword ptr [рег.+смещение],(double)100
И сразу вылет,если кто может помогите,игра весит 90 мб,но даже кто знает как записать дабл с радостью выслушаб!

Скинь ссылку на игру в приват гляну попробую помочь.

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

И сразу вылет

А если посмотреть, что с этой инструкцией работает - может сразу станет понятно, почему вылет идет. У тебя как бы идет вопрос в том, что не можешь записать,но скрипт то работает же. А вот уже после активации его идет вылет, а значит либо там ещо какие то адреса пишутся. Смотреть всё это надо - вон Dison посмотрит, а то опять напишет что я как бы помешал  :)

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

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

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

Смотреть всё это надо - вон Dison посмотрит, а то опять напишет что я как бы помешал 

LIRW да все нормально, не помешал ты мне  :-D  :-D  :-D

Хочешь можешь глянуть... 

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

Хочешь можешь глянуть... 

Посмотри уж тогда ему. Игра вроде бы не большая и трудного не должно в ней быть что либо. Сидеть в ней думаю не надо много, ему же только надо понять, почему вылет идет и всё. А там наверное адреса левые ещо работают. Хоть он может и посмотрел и работает 1 всего лишь - кто его знает  O-=  Он как бы в обще написал, что не может записать дабл, а он так и пишется как у него написано. Значит он этот дабл пишет ещо во что то (в какой то адрес) от этого наверное и идет вылет. Ну это всё телепатия  :-D  смотреть надо опять же. Хотя он может отпишется по этому поводу. Я вот игру жду когда на торрент обновят. "Punch Club" называется, а то смотреть в обще не чего. Хотя в запросах тут одну не доделал,но она замучила вылетать и по новой искать жизнь, просто выводит каждый раз.

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

Всем,привет!!!На днях скачал игру "Фермер",хотел взломать,деньги,бензин и прочие,тип у них double,но столкнулся с тем что не могу записать дабл в скрипт,например:

newmem:mov dword ptr [рег.+смещение],(double)100
И сразу вылет,если кто может помогите,игра весит 90 мб,но даже кто знает как записать дабл с радостью выслушаб!

 

 

 

label(dqValue) // метка ддя double00280000: // случайный адрес новой памятиdqValue: dq (double)100.1 // 8 байт = (4 байта) + (4 байта)// здесь должна быть метка памяти, сюда прыг// 1- примерfld qword ptr [dqValue]fstp qword ptr [ecx]//----------------------// 2 - пример c сохранением флаговpushffld qword ptr [dqValue]fstp qword ptr [ecx]popf//------------------------// 3 - пример работа с двумя 4-х байтовымиpush eax            // сохранить регистр// первая половина (4 байта)mov eax, [dqValue]mov [ecx+00], eax// вторая половина (4 байта)mov eax, [dqValue+4]mov [ecx+04], eaxpop eax            // восстановить регистр
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

Этих фермеров на торренте как грязи, какая именно часть фермера 1 - 2 или просто фермер ссылку на игру в личку жду?  %)  o_0

Щас кину

Этих фермеров на торренте как грязи, какая именно часть фермера 1 - 2 или просто фермер ссылку на игру в личку жду?  %)  o_0

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

label(dqValue) // метка ддя double

MasterGH,  небольшая ошибка:

dqValue и [dValue] - нужно сделать название меток одинаковыми (везде).

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

Конечно вылет будет тут адресов помимо твоего глянь сколько левых.

Ты когда скрипт пишешь, естественно нужно фильтр искать или указатель.

А так конечно ты активировал свой скрипт он и прописал твое заданное значение всем этим адресам.

Сейчас попробуем что-нибудь намутить.

2016011017_1912584_20201249.jpg

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

У меня вот лично не чего не мутится  :lol:  ну так же как и у DIsona наверное. Я в обще плоховато в подобных играх разбираюсь. Это где инструкция работает как в панкиллере, а то есть - на одной инструкции с тыщенку,другую адресов висит. Хипхо бы урок что ли забабахал по этому поводу. Игра не большая - всего 90 мегабайт, она просто скрптовая какая то. Но сделать в ней возможно всё. Думаю многих заинтересует этот урок. 

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

Посмотрел игру - наподобие этой игры. Забыл, что пользователи теперь (пока) не имеют доступа к таблицам, поо-этому вот ссылка на запрос по той игре.

Хоть значения и хранятся в double, записываются они по четыре байта двумя инструкциями.

Т.е. есть две инструкции на чтение 

"game.exe"+D63FB: 8B 0B                    -  mov ecx,[ebx]

----------------------------------------------------------------------

"game.exe"+D6402: 8B 53 04                 -  mov edx,[ebx+04]

ну и две на запись.

 

Инструкции работают со всеми адресами игры (там все характеристики, а также графика, звук и т.д.)

 

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


ЗЫ: Попробую подобрать фильтры к бензину (благо не нужно изучать управление в игре - ездей и всё :) ), но не обещаю.


ЗЫ1: Dison подсказал, что можно потратить денюжки в магазине через кнопку "P", тогда лучше вначале посмотрю денюжки их проще каждый раз искать будет при выходе на адрес.


ЗЫ2: С денюжками получилось - не вылетает, сейчас доеду на ферму из магазина на новом тракторе  :)  и по пути попробую бензин тоже сделать.


ЗЫ3: Не получается добиться стабильности %)  - работает, работает, а потом бац и вторая смена - вылет.


ЗЫ4: Стабильной работы скрипта не удалось добиться, хотя отфильтровал всё - всё равно иногда вылет происходит.

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

 

1. Сам скрипт:

 

 

2. Горячие клавиши:

    Ctrl+Numpad 0 - активация скрипта

    Ctrl+Numpad 1 - 100000 денюжков

    Ctrl+Numpad 2 - 200 литров бензина (почему 200 - вроде на комбайне 150, на тракторе 110, другую технику не проверял - короче если                                        меньше 200 литров, то будет максимум.

 

3. Скрипт постоянно активным не держите, закончились денюжки -> активировали скрипт, сделали 100000 и деактивировали скрипт; тоже самое с бензином.

 

4. Ну и для лентяев закачаю сюда таблицу:

ЗЫ: Переделал скрипт (смотрите ниже)

// удалил, ниже правильный вариант скрипта
Изменено пользователем Garik66
  • Плюс 3
Ссылка на комментарий
Поделиться на другие сайты

Кстати забыл написать, я проверил один из способов, предложенных MasterGH, а конкретнее 1 пример:

// 1- примерfld qword ptr [dqValue]fstp qword ptr [ecx]

Работает как часы. Так что MasterGH, СПАСИБО!!!

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

Работает как часы

Вот там Игорь на фильтровал  :-D  но опять же Игорь - ведь данные вещи, делаются не такими способами. Не кто не делает по 20 фильтров на инструкцию. Конечно так можно, но не делают так. Это вот две у тебя опции, а если бы их было 10  :) Ведь встречаются игры, где работает на одной инструкции тысячи адресов, а опций там охота сделать по больше. 

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

Конечно так можно, но не делают так.

Жень, согласен, я же написал:

 

но скорее всего это не правильный метод взлома подобных игр. 

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

но скорее всего это не правильный метод взлома подобных игр. 

Я видел твоё сообщение. Надо урок от Хипхо для подобных игр  :)  А то у нас тут по сути одно и тоже, а вот такого урока с подобной игрой нету. Ну такой способ от фильтровки адреса не в счет.. Так плюсика надо поставить тоже за старание.

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

Ну всё застыдил, давай тогда удалим скрипт

Нет ты что  O-=  скрипт Игорь норм и молодец что сделал таким способом. Я вот просто заметил, что ты тоже интересуешься взломом подобных игр, без вот написания таких фильтров. Мне вот тоже как бы интересно это. По этому и написал, что как бы не таким способом он моненько сделан.

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

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

Да Жень, если мастера помогут в сопутствующей теме, то я конечно этот скрипт переделаю в более компактный и правильный вид и здесь выложу. (Люблю, когда в каждой теме, есть ответ). 

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

Сделал, теперь без вылетов.

1. Сам скрипт:

2. Горячие клавиши:

    Ctrl+Numpad 0 - активация скрипта

3. По умолчанию денюжков 1000000 (оказалось есть техника стоимость до 300000) и бензин 1000 литров (есть техника с бензобаком на 900). Если в дальнейшем окажется, что нужно больше денег и бензина, поменяйте значения на нужные в таблице есть адреса. 

4. Ну и таблица:


ЗЫ: Забыл написать бензин сразу же станет 1000 литров, так как инструкция к адресу бензина обращается постоянно, а чтобы денюжка сработала - нужно что-то купить или продать.

fermer.CT

{ Game   : game.exe  Version:   Date   : 2016-01-12  Author : Garik66  This script does blah blah blah}[ENABLE]{$LUA}PlaySound(findTableFile([[Activate]])){$ASM}aobscanmodule(INJECT,game.exe,8B 48 08 89 4B 08) // should be uniquealloc(newmem,$1000)label(Fuel)label(code)label(return)label(money)registersymbol(money)label(fuel)registersymbol(fuel)registersymbol(INJECT)newmem:  cmp [ebx+08],3  jne code  cmp [ebx+18],4  jne code  mov ecx,[ebx+10]  cmp [ecx+10],656E6F6D  jne Fuel  cmp byte ptr [ecx+14],79  jne code  fld qword ptr [money]  fstp qword ptr [ebx]  jmp codeFuel:  cmp [ecx+10],6C657566  jne code  cmp [ecx+14],6C6C6946  jne code  cmp [ecx+18],6576654C  jne code  cmp byte ptr [ecx+1C],6C  jne code  fld qword ptr [fuel]  fstp qword ptr [ebx]code:  mov ecx,[eax+08]  mov [ebx+08],ecx  jmp returnmoney:dq (double)1000000fuel:dq (double)1000INJECT:  jmp newmem  nopreturn:[DISABLE]{$LUA}PlaySound(findTableFile([[Deactivate]])){$ASM}INJECT:  db 8B 48 08 89 4B 08unregistersymbol(money)unregistersymbol(fuel)unregistersymbol(INJECT)dealloc(newmem){// ORIGINAL CODE - INJECTION POINT: "game.exe"+D65C1"game.exe"+D65A5: 33 FF                 -  xor edi,edi"game.exe"+D65A7: EB 02                 -  jmp game.exe+D65AB"game.exe"+D65A9: 8B F8                 -  mov edi,eax"game.exe"+D65AB: 85 FF                 -  test edi,edi"game.exe"+D65AD: 0F 85 D3 00 00 00     -  jne game.exe+D6686"game.exe"+D65B3: 8B 44 24 24           -  mov eax,[esp+24]"game.exe"+D65B7: 8B 08                 -  mov ecx,[eax]"game.exe"+D65B9: 89 0B                 -  mov [ebx],ecx"game.exe"+D65BB: 8B 50 04              -  mov edx,[eax+04]"game.exe"+D65BE: 89 53 04              -  mov [ebx+04],edx// ---------- INJECTING HERE ----------"game.exe"+D65C1: 8B 48 08              -  mov ecx,[eax+08]"game.exe"+D65C4: 89 4B 08              -  mov [ebx+08],ecx// ---------- DONE INJECTING  ----------"game.exe"+D65C7: 83 78 08 04           -  cmp dword ptr [eax+08],04"game.exe"+D65CB: 0F 8C E5 00 00 00     -  jl game.exe+D66B6"game.exe"+D65D1: 8B 10                 -  mov edx,[eax]"game.exe"+D65D3: F6 42 05 03           -  test byte ptr [edx+05],03"game.exe"+D65D7: 0F 84 D9 00 00 00     -  je game.exe+D66B6"game.exe"+D65DD: 8A 45 05              -  mov al,[ebp+05]"game.exe"+D65E0: A8 04                 -  test al,04"game.exe"+D65E2: 0F 84 CE 00 00 00     -  je game.exe+D66B6"game.exe"+D65E8: 8B 4C 24 18           -  mov ecx,[esp+18]"game.exe"+D65EC: 8B 49 10              -  mov ecx,[ecx+10]} 
  • Плюс 2
Ссылка на комментарий
Поделиться на другие сайты

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

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

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