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

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

Мастер, я обесчестил Xlive на Resident Evil 5 ;). Теперь нужно написать скрипт я хз как сделать чтоб было вместо je jmp:

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

[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

newmem:

originalcode:
je 0182862B
push [ebp+14]

exit:
jmp returnhere

"xlive.dll"+138615:
jmp newmem
returnhere:


[DISABLE]
dealloc(newmem)
"xlive.dll"+138615:
je 0182862B
push [ebp+14]
//Alt: db 74 14 FF 75 14

 

post-2842-1310383384,05_thumb.jpg

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

Мой скрипт такой

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

[ENABLE]
aobscan(_faddress,74xxxxxxxx8bxxxxxxxxxxe8xxxxxxxx8bxx85xx7cxxf6xxxx74xx8bxxe8)
_faddress: // 6CCF13AA = xlive.dll+F13AA
db EB 14

[DISABLE]
aobscan(_faddress,8bxxxxxxxxxxe8xxxxxxxx8bxx85xx7cxxf6xxxx74xx8bxxe8)
_faddress-5:
db 74 14

 

 

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

В 11.07.2011в21:53, Izmalkoff сказал:

Я absoscan ставить не умею

 

На форуме написано по каким правилам составляется цепочка байт, там написано как пользоваться aobscan. Им можно пользоваться в Автоассемблере, а можно на Lua.

Скрипт

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

[ENABLE]
 aobscan(_faddress,74xxxxxxxx8bxxxxxxxxxxe8xxxxxxxx8bxx85xx7cxxf6xxxx74xx8bxxe8)
 _faddress: // 6CCF13AA = xlive.dll+F13AA
 db EB 14

 [DISABLE]
 aobscan(_faddress,8bxxxxxxxxxxe8xxxxxxxx8bxx85xx7cxxf6xxxx74xx8bxxe8)
 _faddress-5:
 db 74 14

 

Можно переделать на этот:

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

[ENABLE]
 aobscan(_faddress,74xxxxxxxx8bxxxxxxxxxxe8xxxxxxxx8bxx85xx7cxxf6xxxx74xx8bxxe8)
label(xliveLabel)
registersymbol(xliveLabel) 

 _faddress: // 6CCF13AA = xlive.dll+F13AA
xliveLabel:
 db EB 14

[DISABLE]
xliveLabel:
 db 74 14

 

А можно и на этот на Lua (но я не проверял):

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

local function ByteScan(signature, typeMem) -- return address
local results = nil
results = AOBScan(signature, typeMem) -- typeMem = "+X-C-W" and any
if (results == nil) then
messageDialog("Ошибка. Не найден адрес внедрения.\n\rТрейнер будет закрыт!",1, 2)
closeCE()
return caFree
end
local address = stringlist_getString(results, 0)
object_destroy(results);
return address
end

local AA_XLIVEcodeEnable = ""
local AA_XLIVEcodeDisable = ""

function DisableXLIVE()
autoAssemble(AA_XLIVEcodeEnable)
end

function EnableXLIVE()
autoAssemble(AA_XLIVEcodeDisable)
end

function InitAndDisableXLIVE()
-- Если "+X-C-W" не точно, то поставить свои правила
local xliveAddr = ByteScan("74xxxxxxxx8bxxxxxxxxxxe8xxxxxxxx8bxx85xx7cxxf6xxxx74xx8bxxe8", "+X-C-W")

AA_XLIVEcodeEnable = [[
]]..xliveAddr..[[: // 6CCF13AA = xlive.dll+F13AA
db EB 14
]]

AA_XLIVEcodeDisable = [[
]]..xliveAddr..[[: // 6CCF13AA = xlive.dll+F13AA
db 74 14
]]

DisableXLIVE()
end

 

 

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

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

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

В 11.07.2011в01:50, Izmalkoff сказал:

Один фиг не догоняю про этот aobscan. Вообще СЕ его сам делает или пользователь? Укажите где есть тутор по этому делу

 

В версии CE 5.6.1 RUS (v1.0) там при создание скрипта сам генерирует (CE)

Пример:

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

[ENABLE]
 aobscan(_faddress,89xxxx8dxxxx8bxxxx8dxxxx89xxxxxxxxxx8bxxxxxxxxxx89xxxxebxxff)
 alloc(_newmem,2048)
 label(_returnhere)
 label(_originalcode)

_newmem:

_originalcode:
 mov [edx+08],ecx
 lea edx,[eax+eax*2]
 jmp _returnhere

_faddress:    // 0062975E = CE_RUS ver 1_0.exe+22975E
 jmp _newmem
 nop
_returnhere:

[DISABLE]
 aobscan(_faddress,908bxxxx8dxxxx89xxxxxxxxxx8bxxxxxxxxxx89xxxxebxxff)

_faddress-5:
 mov [edx+08],ecx
 lea edx,[eax+eax*2]

 dealloc(_newmem)
//Alt: db 89 4A 08 8D 14 40

 

 

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

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

Действительно одного байта достаточно. Я не углядел. Что имелось ввиду под понятием "баланса" я не понял. К вылету приведёт, если код запишет не туда и не то, что надо.

Тем кто не знает где прочитать информацию по цепочкам байтов - ссылка.

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

Мой:

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

[ENABLE]
 aobscan(_faddress,74xxxxxxxx8bxxxxxxxxxxe8xxxxxxxx8bxx85xx7cxxf6xxxx74xx8bxxe8xxxx)
_faddress:    // 01828615 = xlive.dll+138615
label(xliveHack)
registersymbol(xliveHack)

xliveHack:
 db EB 14

[DISABLE]
xliveHack:
 db 74 14

 

Zocker за подсказку спасибо

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

Что имелось ввиду под понятием "баланса" я не понял
Имелось в виду, что записывать надо количество байт, равное количеству байт затираемой инструкции. То есть, примерно так же, как с нопами, если затирается меньше байт, чем нужно, остальное балансируется. Так и здесь, хотя достаточно поменять всего один байт, желательно таки записывать все равно два байта, ибо инструкция длиной всего два байта. В большинстве случаев это не принципиально, но я сталкивался с парой игр (The Sims, The Sims 2, The Sims 3), которые вылетали, если в инструкции прыжка менять один байт вместо двух. С чем это связано - я сам не понял. Но факт есть факт.
Ссылка на комментарий
Поделиться на другие сайты

  • 6 месяцев спустя...

Всем доброго времени суток... Есть небольшая проблема с отключением X_live..

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

[ENABLE]
alloc(MyCode,1024)

aobscan(CRCCheck,8b ff 55 8b ec 83 ec 20 53 56 57 8d 45 e0)

label(_XLive)

registersymbol(_XLive)

CRCCheck:
_XLive:
 ret 000c

[DISABLE]

_XLive:
 db 8b,ff,55,8b,ec,83,ec,20,53,56,57,8d,45,e0

unregistersymbol(_XLive)

 

Вот этот скрипт работал до поры до времени.... а потом аоб_скан по этим байтам

 
8b ff 55 8b ec 83 ec 20 53 56 57 8d 45 e0

стал находить два адреса... и инъекцию делает тока на первом.. а надо делать на втором..

Если кто знает как решить эту проблему ... жду ответа..

спс.

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

Вот одно из решений на Lua. При присоединении к процессу игры происходит запись в найденный второй адрес

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

----------Lua XLIVE Disabled----------------------------------------
function XliveVersion1()
	signature_XLive = '8b ff 55 8b ec 83 ec 20 53 56 57 8d 45 e0'
	indexAddress = 1 -- отсчёт идёт от нуля, т.е. 0 - это первый адрес, 1 - это второй адрес
	address_XLive = ByteScan(signature_XLive, indexAddress)

	AACode = address_XLive..[[:
	ret 000c
	]]

	autoAssemble(AACode)
end

function ByteScan(signature, indexAddress)
  local results = AOBScan(signature, "+X-C-W")
  if (results == nil) then
    messageDialog("Ошибка. Не найден адрес.\n\rТрейнер будет закрыт!",1, 2)
    closeCE()
    return
  end
  local address = stringlist_getString(results, indexAddress)
  return address
end

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

function onOpenProcess(processid)
 reinitializeSymbolhandler()
 XliveVersion1()
end

 

 

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

  • 1 год спустя...
  • 2 месяца спустя...
  • 7 лет спустя...

я  некак неможу найти патроны в Gears of War всяким способом пробовал  4 байта 1 2 байта после второго отсеивания  всё пусто а жизнь тоже номог найти но потом   нашол кординаты игрока и там жизнь и скорость передвижение , наверно ето зло  антиваномас защита  xlive.dll  не дает найти патроны 

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

10 минут назад, ЛАГАРИУМ сказал:

я  некак неможу найти патроны в Gears of War всяким способом пробовал  4 байта 1 2 байта после второго отсеивания  всё пусто а жизнь тоже номог найти но потом   нашол кординаты игрока и там жизнь и скорость передвижение , наверно ето зло  антиваномас защита  xlive.dll  не дает найти патроны 

Причем здесь поиск и 

 

10 минут назад, ЛАГАРИУМ сказал:

xlive

Попробуй неизвестное - патроны могут быть и во флоат, и зашифрованные, и т.д. 

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

10 минут назад, Garik66 сказал:

Причем здесь поиск и 

 

Попробуй неизвестное - патроны могут быть и во флоат

пробовал флоат, пробовал через fov  выйти на патроны но там вроде нет патронов   смотрел в WarWeapon.ini   fov рядом стоит с патронами но в памяти вроде нет

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

11 минут назад, ЛАГАРИУМ сказал:

пробовал флоат, пробовал через fov  выйти на патроны но там вроде нет патронов   смотрел в WarWeapon.ini   fov рядом стоит с патронами но в памяти вроде нет

 

22 минуты назад, Garik66 сказал:

Попробуй неизвестное

 

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

5 часов назад, ЛАГАРИУМ сказал:

я  некак неможу найти патроны в Gears of War

А что за игра такая ? Может и я в  неё поиграл бы :) Можно ссылку ? ну естественно официальную, а не на Rip

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

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

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

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