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

lamalamaz

Пользователи+
  • Постов

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

  • Посещение

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

    7

lamalamaz стал победителем дня 3 октября 2015

lamalamaz имел наиболее популярный контент!

Репутация

24 Novice

1 Подписчик

Информация о lamalamaz

Информация

  • Пол
    Не определился

Посетители профиля

7 950 просмотров профиля
  1. Поправлю скрипт, наверное смещение динамическое(то есть значение по смещению) Я не выходил на инструкцию урона, я сам написал скрипт рассчитывающий урон то есть. mov [esi],ecx Инструкция на запись жизней где [esi] предыдущее значение жизни ecx новое значение жизней mov [lbl],ecx //новое значение в метку fild dword ptr [esi] загружаем старое значение fisub dword ptr [lbl] отнимаем новое значение fistp dword ptr [dam] получаем урон fild dword ptr [dam] загружаем урон fimul dword ptr [mn] умножаем на множитель fistp dword ptr [dam] полученный урон умноженный на множитель fild dword ptr [lbl] загружаем новое значение жизней fisub dword ptr [dam] отнимаем урон умноженный на множитель fistp dword ptr [lbl] получаем значение жизней уже с вычетом урона с множителем mov ecx,[lbl] загружаем полученное значение по адресу значения новой жизни mov [esi],ecx оригинальная инструкция В принципе можно было сделать проще беря значение из стека, но метод описаный выше универсальный, то есть подходит для любой игры. Попробуй этот скрипт(что странно смещения судя по скриншотам одинаковые,у меня скрипт работает,но попробуй измененный скрипт). EoCApp2.CT
  2. Что именно не работает? Множитель урона отображается? З.Ы. Множитель урона можно менять на лету в таблице,по умолчанию стоит 1. Поставь 400(к примеру) и проверь должно всех с 1 удара выносить.
  3. Вот скрипт на множитель урона если что внутри не будет понятно напиши тут(заодно проверь работоспособность скрипта). EoCApp.CT
  4. На запись бряк своих жизней еще сделай,стек посмотреть.То что адрес выглядит именно так я и не сомневался. Мне стек нужен на запись адреса твоих жизней.
  5. Инструкция только с адресом врагов работает? И надо отталкиваться с инструкции которая пишет или читает а не сравнивает. Можешь сделать скрин доступа на адрес жизней?
  6. А можно полную картину на доступ к адресу? И скриншот стека. По идее можно на прямую работать со стеком. То есть создать метку и работать с float. Например Fld dword ptr [esp+24] fadd dword ptr [labla] fstp dword ptr [esp+24] labla: dd (float)0.02 то есть по идее таймер замрет на месте. К примеру в игре Two worlds2 при бряке на отнимание жизней(игрока или мобов в стеке прописывается урон) То есть fild dword ptr [esp+4] //загружаем в барабан урон(целое значение) fimul dword ptr [mulls] //умножаем на наш множитель(прописываем вручную) fistp dword ptr [esp+4] //выгружаем из барабана в esp+4 полученное значение mov eax,[ecx+000001C0] //оригинальная инструкция Дополню что инструкция идет на доступ, потому что "mov [ecx+000001C0],eax" ,корорая пишет, урон уже будет посчитан. Поэтому со стеком желательно работать с инструкциями на доступ.
  7. После анализа написал новый код { Game : pw_defenders.exe Version: Date : 2015-09-24 Author : alez This script does blah blah blah}[ENABLE]//code from here to '[DISABLE]' will be used to enable the cheat aobscan(INJECT,89 86 90 00 00 00 8B 46 7C) // should be uniquealloc(newmem,$1000)label(return)newmem: mov [ebx+20],412E847E push eax mov eax,[ebx+20] xor eax,[ebx+38] mov [ebx+20],eax pop eax mov [esi+00000090],eax jmp returnINJECT: jmp newmem nopreturn:registersymbol(INJECT)[DISABLE]//code from here till the end of the code will be used to disable the cheatINJECT: db 89 86 90 00 00 00unregistersymbol(INJECT)dealloc(newmem){// ORIGINAL CODE - INJECTION POINT: 0739154407391523: 3D 09 00 00 00 - cmp eax,0000000907391528: 75 20 - jne 0739154A0739152A: 83 EC 0C - sub esp,0C0739152D: 53 - push ebx0739152E: 39 1B - cmp [ebx],ebx07391530: E8 D3 4E D2 FF - call 070B640807391535: 83 C4 10 - add esp,1007391538: DD 5D D0 - fstp qword ptr [ebp-30]0739153B: F2 0F 10 45 D0 - movsd xmm0,[ebp-30]07391540: F2 0F 2C C0 - cvttsd2si eax,xmm0// ---------- INJECTING HERE ----------07391544: 89 86 90 00 00 00 - mov [esi+00000090],eax// ---------- DONE INJECTING ----------0739154A: 8B 46 7C - mov eax,[esi+7C]0739154D: 83 EC 08 - sub esp,0807391550: 50 - push eax07391551: 6A 00 - push 0007391553: E8 C0 3F CB FF - call 0704551807391558: 83 C4 10 - add esp,100739155B: 85 C0 - test eax,eax0739155D: 74 2A - je 073915890739155F: 8B 43 14 - mov eax,[ebx+14]07391562: 3D 08 00 00 00 - cmp eax,00000008
  8. Да игра жестокая,все перешифровано и без xor там настолько запутано что голову сломаешь но скрипт на бесконечные деньги я написал, чтобы активировать надо просто башню построить. { Game : pw_defenders.exe Version: Date : 2015-09-18 Author : alez This script does blah blah blah}[ENABLE]//code from here to '[DISABLE]' will be used to enable the cheat aobscan(INJECT,8B 00 83 EC 08 51 50 E8) // should be uniquealloc(newmem,$1000)label(ss)label(orig)label(return)newmem:cmp [esp+CC],1005EF0Dje ssjmp origss:push ebxmov ebx,[eax+20]mov [eax],ebxpop ebx mov eax,[eax] sub esp,08 jmp returnorig: mov eax,[eax] sub esp,08 jmp returnINJECT: jmp newmemreturn:registersymbol(INJECT)[DISABLE]//code from here till the end of the code will be used to disable the cheatINJECT: db 8B 00 83 EC 08unregistersymbol(INJECT)dealloc(newmem){// ORIGINAL CODE - INJECTION POINT: 07095ECC07095EB2: C9 - leave 07095EB3: C3 - ret 07095EB4: 68 70 2C D5 14 - push 14D52C7007095EB9: E9 6A A1 5B FB - jmp 0265002807095EBE: 00 00 - add [eax],al07095EC0: 55 - push ebp07095EC1: 8B EC - mov ebp,esp07095EC3: 83 EC 28 - sub esp,2807095EC6: 8B 45 08 - mov eax,[ebp+08]07095EC9: 8B 48 04 - mov ecx,[eax+04]// ---------- INJECTING HERE ----------07095ECC: 8B 00 - mov eax,[eax]07095ECE: 83 EC 08 - sub esp,08// ---------- DONE INJECTING ----------07095ED1: 51 - push ecx07095ED2: 50 - push eax07095ED3: E8 18 00 00 00 - call 07095EF007095ED8: 83 C4 10 - add esp,1007095EDB: C9 - leave 07095EDC: C3 - ret 07095EDD: 00 00 - add [eax],al07095EDF: 00 68 A8 - add [eax-58],ch07095EE2: 2C D5 - sub al,-2B07095EE4: 14 E9 - adc al,-17
  9. На некоторых уровнях OHK не работает [ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem2,2048)label(returnhere2)label(originalcode2)label(exit2)label(player)newmem2: //this is allocated memory, you have read,write,execute access//place your code hereoriginalcode2:mov [player],edimov [edi+00000094],ecxexit2:jmp returnhere2player:dd 0"VIVISECTOR.EXE"+D8639:jmp newmem2nopreturnhere2:alloc(newmem,2048)label(returnhere)label(orig)label(ss)newmem: //this is allocated memory, you have read,write,execute accesspush eaxmov eax,[player]cmp eax,[esp+424]pop eaxje ssjmp origss:sub edx,(float)400mov [edi+000013DC],edxjmp returnhereorig:mov [edi+000013DC],edxjmp returnhere"VIVISECTOR.EXE"+D8323:jmp newmemnopreturnhere: [DISABLE]//code from here till the end of the code will be used to disable the cheatdealloc(newmem2)"VIVISECTOR.EXE"+D8639:mov [edi+00000094],ecx//Alt: db 89 8F 94 00 00 00dealloc(newmem)"VIVISECTOR.EXE"+D8323:mov [edi+000013DC],edx//Alt: db 89 97 DC 13 00 00
  10. Как раз твой случай, смотри внимательнее. http://gamehacklab.ru/video_lessons/125-vzlom-igr-ot-a-do-ya-11-vzlom-shifrovannyh-znacheniy.html
  11. Wallhack фигня, лучше ESP.. Ищещь координаты врага x,y,z рисуешь квадрат и такой метод через память а не через отрисовку работает лучше.
  12. Всех с праздниками Геймхаклаберы. Написал скрипт на Half-life2 на god+1hit через сравнивание стека. Помогите его допилить(упростить) и убрать все лишнее потом выложу в нормальном варианте в трейнеры. [ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem2,200)label(returnhere2)label(originalcode2)label(exit2)label(mycoord)label(mycoord2)newmem2: //this is allocated memory, you have read,write,execute access//place your code hereoriginalcode2:push esimov esi,[eax+00000030] mov [mycoord],esi //сохраняем координату Z инструкция работает только с игрокомmov [mycoord2],esi //сохраняем координату Z инструкция работает только с игрокомpop esicmp dword ptr [eax+000000E0],00exit2:jmp returnhere2mycoord2:dd 0mycoord:dd 0"server.dll"+16DA8A:jmp newmem2nopnopreturnhere2:alloc(newmem,200)label(returnhere)label(orig)label(ss)label(essi)label(damag)label(tt1)label(stack)label(damag)label(save)label(plsave)label(player)newmem: //this is allocated memory, you have read,write,execute accesspush edxpush eaxmov edx,[esp+18] //при уроне по врагу или по мне в [esp+10] лежит координата(z-10) откуда наностися уронmov [stack],edxfld dword ptr [stack]fsub dword ptr [player]fstp dword ptr [plsave]mov eax,[plsave]cmp [mycoord],eax //сравниваем координату z при уроне с координатой z игрокаpop edxpop eaxje ssjmp origss:fld dword ptr [esp+20] //тут хранится дамаг во флоате(сами жизни целое 4 байта)fmul dword ptr [damag] //умножаем на наш множительfistp dword ptr [save] //выгружаем целое значениеsub esi,[save] //отнимаем наш урон от жизней врагаmov [edi],esipop edimov eax,00000001jmp returnhereorig:mov [edi],esipop edimov eax,00000001jmp returnherett1:dd (float)0stack:dd 0plsave:dd 0save:dd 0damag:dd (float)10essi:dd 0player:dd (float)-10"server.dll"+D8193:jmp newmemnopnopnopreturnhere: [DISABLE]//code from here till the end of the code will be used to disable the cheatdealloc(newmem2)"server.dll"+16DA8A:cmp dword ptr [eax+000000E0],00//Alt: db 83 B8 E0 00 00 00 00dealloc(newmem)"server.dll"+D8193:mov [edi],esipop edimov eax,00000001//Alt: db 89 37 5F B8 01 00 00 00
  13. мне бы логику понять, Xipho ты многому меня научил, помоги...
  14. Анализировал, закономерности есть вот только те адреса у которых есть некая закономерность обращаются к одной инструкции которая работает с 100500 адресами, поинтер не дает ничего . Принцип был такой инструкция [ecx+04],edx работает с over 9000 адресов(срабатывает при нанесении урона) ищем адрес жизней,нашли, ставим бряк на запись на адрес. Смотрим стек, путем анализа выясняется что по смещению [esp+14] находится некий адрес(или указатель) который указывает по кому наносится урон. То есть если написать фильтр newmem: cmp [esp+14],[наш адрес] je player jmp original code то фильтр сработает и после прыжка на player останется только один адрес(наших жизней). Но вот только разобраться с адресом [наш адрес] не могу, так как инструкция отвечающая за него работает с 100500 адресами опять же.... Я так понял что там огромное разветвление(огромнейшее) путем анализа кода. Как в этой куче мусора(из адресов) найти что либо не представляю. Я все это к чему, может быть тот кому интересно скачает Painkiller поломаем вместе? Взломал очень много игр(и painkiller тоже взломал). Но вот логику painkiller понять не могу. Давайте взломаем вместе . Вот моря наработка скрипт на god+1hit(работает на всех картах и со всеми боссами) [ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048)label(returnhere)label(orig)label(cont)label(cont2)label(ss)label(ss2)label(ppz)label(ppz2)newmem: //this is allocated memory, you have read,write,execute accessmov [ppz],edimov [ppz2],ediadd [ppz],60cmp [ppz],eaxje cont //глобальный фильтр на отсев игрока и враговadd [ppz2],58cmp [ppz2],eaxje cont2jmp origcont:cmp esi,106je sscmp esi,FE //локальный фильтр отделения врагов от игрокаje ss2jmp origcont2:cmp esi,106je ss2cmp esi,FD //локальный фильтр отделения боссов от игрокаje ss2jmp origss:mov [ebx+04],(float)100pop ebxpop ecxjmp returnheress2:mov [ebx+04],0pop ebxpop ecxjmp returnhereorig:mov [ebx+04],edxpop ebxpop ecxjmp returnhereppz:dd 0ppz2:dd 0"Engine.dll"+1510F3:jmp newmemreturnhere: [DISABLE]//code from here till the end of the code will be used to disable the cheatdealloc(newmem)"Engine.dll"+1510F3:mov [ebx+04],edxpop ebxpop ecx//Alt: db 89 53 04 5B 59
  15. Здравствуйте ребята! Тут встал вопрос как выйти на указатель жизней в игре Painkiller. Коротко о движке Painengine это головная боль Так вот искал указатель через автопоиск указателей. 5 уровней ничего не дало 10 уровней сожрал все место на диске и просил еще(поиск длился 27000 секунд) Поиск в ручную обламал меня сразу. то есть инструкция [ecx+04],edx смещение 4 ищем значение ecx, и тут результат 0. Есть иные методы в таких ситуациях?
×
×
  • Создать...

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

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