- 
				
Постов
5 750 - 
				
Зарегистрирован
 - 
				
Победитель дней
292 
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент Garik66
- 
	Я и без голосования с тобой согласен. Тема, когда разрослась, стала действительно не читабельной.
 - 
	Ты имеешь ввиду - собрать всю инфу в первый пост темы? Хорошо, на днях сделаю и постараюсь почитабельней оформить
 - 
	Не mov dword ptr [eax+6C],#100, а mov dword ptr [eax+6C],(float)100.
 - 
	Chuckyя же говорил MasterGH быстро объяснит, Короче мой второй вариант в "Иcправлении 4" должен работать, т.е. поставить mov dword ptr [eax+6C],#1120403456 ниже fst dword ptr [esp+08]. MasterGHСпасибо большое.
 - 
	Не за что. Удачи во взломе!!!
 - 
	Но занопить будет более правильно. PS: а 98 патронов, потому что потом идёт отнимание 1 патрона.
 - 
	Тогда проще занопить инструкцию, которая отнимает патроны, вот эту и не париться: ZAT.exe+4DA0BD - 2B C1 - sub eax,ecx, т.е. в eax - лежат расшифрованные патроны. Занопить сумеешь?
 - 
	Короче, есть подозрение, что в eax лежит уже расшифрованное текущее значение патронов, но оно будет скорее всего только видимым, а в edi - константа. А в [edi+04] - зашифрованное значение. Давай попробуем этот скрипт: [ENABLE]alloc(newmem,64)label(returnhere)newmem:push ebxmov ebx,[edi+04]xor ebx,edimov ebx,#99xor ebx,edimov [edi+04],ebxpop ebxmov eax,[edi+04]xor eax,edijmp returnhere"ZAT.exe"+4DA0B8:jmp newmemreturnhere:[DISABLE]"ZAT.exe"+4DA0B8:mov eax,[edi+04]xor eax,edidealloc(newmem)
 - 
	Поэтому и уточняю. Ответь на вопрос из предыдущего поста. Мне нужно понять где константа, а где зашифрованное значение.
 - 
	Так значит значение зашифрованное. Второй вопрос инструкция, которая в скрипте, когда срабатывает? PS: уточню - после выстрела?
 - 
	Тогда ещё один вариант попробуй: [ENABLE]alloc(newmem,64) label(exit)newmem:fsubr dword ptr [eax+6C]mov dword ptr [eax+6C],#1120403456 // ещё можно попробовать опустить эту инструкцию ещё ниже - перед ret fst dword ptr [esp+08] // поставить.ret"Amnesia.exe"+D9FC1:call newmemnopnopexit:[DISABLE]"Amnesia.exe"+D9FC1:fsubr dword ptr [eax+6C]fst dword ptr [esp+08]dealloc(newmem)
 - 
	Первым делом мне нужно было спросить, когда адрес нашёл вручную значения менял - менялись потом в игре?
 - 
	Давай тогда посмотрим: fld dword ptr [eax+6C] - аналог push, т.е. выталкивает в стек значение из адреса eax+6C. а fsubr dword ptr [eax+6C] - отнимает из верха стека значение по адресу eax+6c. Не понятно почему Call/ret так по разному влияют. Твой первый скрипт (без call/ret) точно работает? Тогда вопрос чему равно во float число - #1120403456?
 - 
	Действительно странно, а попробуй тогда скрипт от первой инструкции в таком виде: [ENABLE]alloc(newmem,64) newmem:mov dword ptr [eax+6C],#1120403456fsubr dword ptr [eax+6C]fst dword ptr [esp+08]ret"Amnesia.exe"+D9FC1:call newmemnopnop[DISABLE]"Amnesia.exe"+D9FC1:fsubr dword ptr [eax+6C]fst dword ptr [esp+08]dealloc(newmem)
 - 
	Говоришь видио моё посмотрел. Пересмотри ещё раз. В [edi+04] лежит константа через которую Xorят значение в [edi] лежит само зашифрованное значение , поэтому ты и получаешь не пойми чего. Нужно так: newmem:push eaxmov eax,[edi+04]xor eax,edimov [edi],#99xor eax,edipop eaxoriginalcode:mov eax,[edi+04]xor eax,ediПопробуй. PS: Здесь ошибка, поторопился. Дальше всё правильно.
 - 
	Странно, по-идеи, если твой первый скрипт работает должен работать и мой скрипт, только смущают два nop после call, попробуй ещё такой вариант: [ENABLE]alloc(newmem,64) label(exit)newmem:mov dword ptr [eax+6C],#1120403456fsubr dword ptr [eax+6C]fst dword ptr [esp+08]ret"Amnesia.exe"+D9FC1:nopnopcall newmemexit:[DISABLE]"Amnesia.exe"+D9FC1:fsubr dword ptr [eax+6C]fst dword ptr [esp+08]dealloc(newmem)
 - 
	У тебя неправильно. я же тебе написал: у тебя нету выхода из инъекции И ещё одно: я сейчас не могу посмотреть, сколько занимает байт call newmem, если 5 (как и jmp newmem), то проверь мой скрипт на работу. Если call newmem больше, нужно убрать соответствующее количество NOP. PS: Посмотрел: call newmem - 5 байт. Так что проверь скрипт - должен работать. Если не понятно как работает связка call/ret, пиши - постараюсь объяснить.
 - 
	Как только решил снять сегодняшнее видео - оба радио замолчали и твоё и drs36. Так что пришлось снова музыку игры слушать.
 - 
	У тебя нет выхода из твоей инъекции, попробуй так: [ENABLE]alloc(newmem,64) label(exit)newmem:mov dword ptr [eax+6C],#1120403456fsubr dword ptr [eax+6C]fst dword ptr [esp+08]ret"Amnesia.exe"+D9FC1:call newmemnopnopexit:[DISABLE]"Amnesia.exe"+D9FC1:fsubr dword ptr [eax+6C]fst dword ptr [esp+08]dealloc(newmem)
 - 
	Для новичков: как добавить инфу или звуки в скрипт используя практически только ассемблер СЕ - смотреть здесь.
 - 
	Для новичков снял видео - как резюме этой теме.
 - 
	Спасибо и за уроки тоже спасибо заранее.
 - 
	MasterGHбольшое спасибо, всё работает даже снял видео.
 - 
	ОК Тогда на днях наверное установлю СЕ6,4, либо посмотрю как под 6,3 можно сделать.
 - 
	Сомневаюсь что кто-нибудь поможет, думаю никто такое не делал, наврядли кто-нибудь добавлял звук в скрипт в таблицу (без трейнера).
 
![Gamehacklab[RU]](https://old.gamehacklab.ru/uploads/monthly_2022_06/1_PNG_GHL_64x.png.6d61ef42c3de6821543db4c0243672ae.png)