DarDreams Опубликовано 25 сентября, 2019 Поделиться Опубликовано 25 сентября, 2019 (изменено) cmp [rcx+28],(float)139.8000031 // Эта строка работает идеально cmp [rcx+28],[weig+58] // не работает Здравствуйте уважаемые форумчане, помогите решить вопрос как правильно написать код выше В ячейке [weig+58] содержится то же самое float значение 139.8000031 Мне нужно сравнить две ячейки адреса, одну из них я создал в другом скрипте weig: dd 0 Срабатывает только cmp [rcx+28],[weig] Но мне нужно из [weig] вытащить именно [weig+58] P.S. Изучаю взлом совсем недавно, подскажите литератру по CE AutoAssembler Изменено 25 сентября, 2019 пользователем DarDreams Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 25 сентября, 2019 Поделиться Опубликовано 25 сентября, 2019 2 часа назад, DarDreams сказал: Здравствуйте Тема оформлена не правильно: Нужно перенести тему в другой раздел - Низкоуровневое программирование. либо в этом разделе - дать название игры в квадратных скобках. 2 часа назад, DarDreams сказал: Срабатывает только Не может срабатывать - память с памятью сравнить нельзя. можно сравнивать память например с регистром. подсказку дал - дерзай. Ссылка на комментарий Поделиться на другие сайты Поделиться
DarDreams Опубликовано 25 сентября, 2019 Автор Поделиться Опубликовано 25 сентября, 2019 Я пробовал и помощью регистра, если вы это имеете в виду push r12 mov r12,[weig+58] cmp [rcx+28],r12 pop r12 Тогда он дает совершенно не те значения которые указаны в адресе, вот если без +58 оставить только [weig] тогда все работает, но мне нужно именно +58, я пытался разобраться как это делается, но тщетно. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 25 сентября, 2019 Поделиться Опубликовано 25 сентября, 2019 2 часа назад, DarDreams сказал: Я пробовал и помощью регистра, Нет понимания r12 8 байтный регистр и ты в строке с cmp сравниваешь с 0. Привыкни по умолчанию в СЕ. что в квадратных скобках [.....] - 4 байта. Попробуй к примеру так (или какой там у тебя регистр): push eax mov eax,[weig+58] cmp [rcx+28],eax pop eax Ссылка на комментарий Поделиться на другие сайты Поделиться
DarDreams Опубликовано 25 сентября, 2019 Автор Поделиться Опубликовано 25 сентября, 2019 8 минут назад, Garik66 сказал: Попробуй к примеру так Попробовал, снова не те данные, думаю потому что у меня все регистры 8 байтные RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP, R8-R15,RIP Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 25 сентября, 2019 Поделиться Опубликовано 25 сентября, 2019 1 минуту назад, DarDreams сказал: Попробовал, снова не те данные, думаю потому что у меня все регистры 8 байтные RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP, R8-R15,RIP Выложи полностью код скрипта (лучше с СЕ-ными логами), посмотрю Ссылка на комментарий Поделиться на другие сайты Поделиться
DarDreams Опубликовано 25 сентября, 2019 Автор Поделиться Опубликовано 25 сентября, 2019 Спойлер { Game : GreedFall.exe Version: Date : 2019-09-24 Author : DarDreams This script does blah blah blah } [ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat aobscanmodule(MAX,Game.dll,F3 0F 10 41 28 C3 F3) // should be unique alloc(newmem,$1000,"Game.dll"+3B0127) label(code) label(return) newmem: push eax // push r10 mov eax,[weig+58] // mov r10,[r12+58] //mov r12,[weig] // cmp [rcx+28],(float)290.7999878 cmp [rcx+28],eax // cmp [rcx+28],1AF87DF0AB8+58 // pop r10 pop eax jne code mov [maxw],rcx code: movss xmm0,[rcx+28] jmp return maxw: dd 0 MAX: jmp newmem return: registersymbol(MAX) registersymbol(MAXw) [DISABLE] //code from here till the end of the code will be used to disable the cheat MAX: db F3 0F 10 41 28 unregistersymbol(MAX) unregistersymbol(MAXw) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "Game.dll"+3B0127 "Game.dll"+3B0118: CC - int 3 "Game.dll"+3B0119: CC - int 3 "Game.dll"+3B011A: CC - int 3 "Game.dll"+3B011B: CC - int 3 "Game.dll"+3B011C: CC - int 3 "Game.dll"+3B011D: CC - int 3 "Game.dll"+3B011E: CC - int 3 "Game.dll"+3B011F: CC - int 3 "Game.dll"+3B0120: 66 83 79 26 00 - cmp word ptr [rcx+26],00 "Game.dll"+3B0125: 76 06 - jna Game.dll+3B012D // ---------- INJECTING HERE ---------- "Game.dll"+3B0127: F3 0F 10 41 28 - movss xmm0,[rcx+28] // ---------- DONE INJECTING ---------- "Game.dll"+3B012C: C3 - ret "Game.dll"+3B012D: F3 0F 10 41 08 - movss xmm0,[rcx+08] "Game.dll"+3B0132: F3 0F 58 01 - addss xmm0,[rcx] "Game.dll"+3B0136: F3 0F 59 41 04 - mulss xmm0,[rcx+04] "Game.dll"+3B013B: F3 0F 58 41 0C - addss xmm0,[rcx+0C] "Game.dll"+3B0140: C3 - ret "Game.dll"+3B0141: CC - int 3 "Game.dll"+3B0142: CC - int 3 "Game.dll"+3B0143: CC - int 3 "Game.dll"+3B0144: CC - int 3 } Как логи из CE брать я не знаю Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 25 сентября, 2019 Поделиться Опубликовано 25 сентября, 2019 1 минуту назад, DarDreams сказал: Как логи из CE брать я не знаю Ты уже это сделал - внизу. Читай правила, больше править пост не буду (буду преды выдавать) - нужно не только тег спойлера, но и тег кода. Скрипт сейчас посмотрю. 5 минут назад, DarDreams сказал: [weig] А где ты weig объявляешь? В другом скрипте? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 25 сентября, 2019 Поделиться Опубликовано 25 сентября, 2019 21 минуту назад, DarDreams сказал: Попробовал, Мало информации, я тебе уже написал в ЛС. ноль реакции, Времени у меня мало. Либо отвечаете сразу либо прошу прощения - помочь не смогу. 28 минут назад, DarDreams сказал: Попробовал Как у тебя в табличке забивается адрес, связанный с адресом MAXw? Скрипт попробуй (поправил. исходя из той информацию, которую ты дал): Спойлер { Game : GreedFall.exe Version: Date : 2019-09-24 Author : DarDreams This script does blah blah blah } [ENABLE] aobscanmodule(MAX,Game.dll,F3 0F 10 41 28 C3 F3) alloc(newmem,$1000,"Game.dll"+3B0127) label(code) label(MAXw) registersymbol(MAXw) label(return) registersymbol(MAX) newmem: push eax mov eax,[weig+58] cmp [rcx+28],eax jne code mov qword ptr[MAXw],rcx code: pop eax movss xmm0,[rcx+28] jmp return MAXw: dq (double) 0 MAX: jmp newmem return: [DISABLE] MAX: db F3 0F 10 41 28 unregistersymbol(MAXw) unregistersymbol(MAX) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "Game.dll"+3B0127 "Game.dll"+3B0118: CC - int 3 "Game.dll"+3B0119: CC - int 3 "Game.dll"+3B011A: CC - int 3 "Game.dll"+3B011B: CC - int 3 "Game.dll"+3B011C: CC - int 3 "Game.dll"+3B011D: CC - int 3 "Game.dll"+3B011E: CC - int 3 "Game.dll"+3B011F: CC - int 3 "Game.dll"+3B0120: 66 83 79 26 00 - cmp word ptr [rcx+26],00 "Game.dll"+3B0125: 76 06 - jna Game.dll+3B012D // ---------- INJECTING HERE ---------- "Game.dll"+3B0127: F3 0F 10 41 28 - movss xmm0,[rcx+28] // ---------- DONE INJECTING ---------- "Game.dll"+3B012C: C3 - ret "Game.dll"+3B012D: F3 0F 10 41 08 - movss xmm0,[rcx+08] "Game.dll"+3B0132: F3 0F 58 01 - addss xmm0,[rcx] "Game.dll"+3B0136: F3 0F 59 41 04 - mulss xmm0,[rcx+04] "Game.dll"+3B013B: F3 0F 58 41 0C - addss xmm0,[rcx+0C] "Game.dll"+3B0140: C3 - ret "Game.dll"+3B0141: CC - int 3 "Game.dll"+3B0142: CC - int 3 "Game.dll"+3B0143: CC - int 3 "Game.dll"+3B0144: CC - int 3 } Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 25 сентября, 2019 Поделиться Опубликовано 25 сентября, 2019 ЗЫ: какие адреса в игре 8 байт или 4 байта? Хотя-бы скрин предоставил. Ладно мне пора. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 26 сентября, 2019 Поделиться Опубликовано 26 сентября, 2019 Так не будет работать. Если сравниваются не целые числа, то нужно использовать fcomp с fpu стеком, а не вот этот вот всё. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 26 сентября, 2019 Поделиться Опубликовано 26 сентября, 2019 9 часов назад, Xipho сказал: Так не будет работать. Если сравниваются не целые числа, то нужно использовать fcomp с fpu стеком, а не вот этот вот всё. Я ТС в ЛС помогаю, а то слишком много вопросов пришлось задать. Задачку решили именно методом ТС по скайпу, Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 26 сентября, 2019 Поделиться Опубликовано 26 сентября, 2019 23 часа назад, DarDreams сказал: Изучаю взлом Выложи решение. чтобы тема была не пустая. Ссылка на комментарий Поделиться на другие сайты Поделиться
DarDreams Опубликовано 26 сентября, 2019 Автор Поделиться Опубликовано 26 сентября, 2019 Благодаря Garik66, мы все таки нашли решение: push eax mov eax,[[p_WEIG]+58] cmp [rcx+28],eax jne code mov qword ptr[p_MAXw],rcx pop eax Спасибо огромное за помощь! Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения