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

Garik66

Помогаторы
  • Постов

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

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

    292

Сообщения, опубликованные Garik66

  1. Даа. Что тут сказать? Замутил ты логику выполнения очень странно. Но так как ты сделал выглядит короче чем у меня. 

     

    Вроде у тебя логика правильная и скрипт должен работать. Но мне кажется что ошибка твоя здесь:

     

    mov byte ptr [saveLoadCoords17],0

    jmp returnHere17 <-- вот она ошибка

    а надо так сделать

    jmp OK17

     

    Как делать телепорт здесь есть несколько постов(в том числе и мой), где все объяснено очень детально. Я делал телепорт к игре Darksiders 1 так там 3 телепорта в 1 скрипте. Вот линк на мою таблицу с телепортом. Еще читай мой пост № 16 здесь.

     

    P.S.: никак не могу сделать урок о том как находить ID предмета в игре. Моя Camtasia Studio говорит что места у меня на харде нет, а у меня его аж 80 ГБ свободного места(что очень много как на 30 минутное видео!!!). Хочу тебе помочь с поиском ID.

     

    P.P.S.: как у тебя идет поиск ID предмета? 

    С поиском ID пока встрял и устал уже от этих поисков, поэтому решил отвлечься (собственно это повтор первого поста).

     

    В этом месте:

    ошибки нет. Да и логика выполнения скрипта тоже нормальная, после проверки хотел (хочу) добавить ещё несколько функций в скрипт, ну например при значении SaveLoadCoords17 = 3 - телепортировать ГГ назад на место  первого телепорта. Там много можно что придумать.

     

    Объясню - у меня не работает первая часть скрипта, а именно сохранение координат.

    В начале после написание скрипта (тогда я фильтры не ставил, так как сидел в доме ГГ, а в доме с этой инструкцией работает только адрес координаты и ещё один адрес (очень редко)), так вот без фильтров в доме ГГ скрипт работал правильно, т.е. в переменные прописывались правильно координаты и ГГ телепортировался при запуске второй части скрипта. 

     

    После этого решил проверить как будет работать телепорт на мировой карте и обнаружил, что с инструкцией работает куча адресов (близких по смыслу, т.е. те же кооординаты с небольшим смещением чуть-чуть дальше, чуть-чуть ближе , что за адреса не изучал. Но их много. Поэтому поискал фильтр и после установки фильтра в переменные записывается только первый байт (float) значения координаты. В чём дело никак не могу понять. А статьёй при написании телепорта пользуюсь   - статьёй SER(G)ANTа (Вот этой) - прекрасная статья. Твои статьи тоже почитаю - большое спасибо.

     

    Жаль, что не получается записать видео по нахождению ID предмета с помощью отсеивания по формуле. Посмотри пожалуйста почему у меня прекращается отсев по формуле (чаще всего)(Проблемы описал в этом сообщении). . Как можно настроить Артмани, чтобы более стабильно работало. Заранее Большой Спасыб.

    mov byte ptr [SaveLoadCoords17],0jmp returnHere17 <-- вот она ошибка 
  2. Пока не получается с решением задачи из этой темы, решил отвлечься и написать что-то более знакомое - телепорт.

    Но видать опять парюсь.

    Нашёл координаты ГГ (X, Y, Z). При ручном изменении значений координат - происходит нормальный телепорт.

     

    Написал скрипт:

     

    Проблема: в переменные coordX17, coordY17, coordZ17 записывается только первый байт из четырёх значения координаты.

    Причём в edx находятся правильные значение координат (проверял ставя бряк).

    Подскажите - где я парюсь? (где ошибка?). 

    [ENABLE]alloc(newMem17, 1024)label(returnHere17)label(coordX17)label(coordY17)label(coordZ17)label(OK17)label(Load17)label(SaveLoadCoords17)registersymbol(SaveLoadCoords17)newMem17:cmp eax,18F4A0                    // инструкция работает с несколькими адресами, поэтому фильтр.  //cmp byte ptr [esi+014f],14      // можно поставить и этот (вроде бы при нескольких перезагрузках    jne OK17                          // игры, оба варианта фильтра - постоянны).  cmp byte ptr [SaveLoadCoords17],1jne Load17push edxmov edx, dword ptr [esi+000000D0]mov dword ptr [coordX17],edxmov edx,dword ptr [esi+000000D4]mov dword ptr [coordY17],edxmov edx, dword ptr [esi+000000D8]mov dword ptr [coordZ17],edxpop edxmov byte ptr [SaveLoadCoords17],0jmp OK17Load17:cmp [coordX17],0je OK17cmp byte ptr [SaveLoadCoords17],2jne OK17push edxmov edx, dword ptr [coordX17]mov dword ptr [esi+000000D0],edxmov edx, dword ptr [coordY17]mov dword ptr [esi+000000D4],edxmov edx,dword ptr [coordZ17]mov dword ptr [esi+000000D8],edxpop edxmov byte ptr [SaveLoadCoords17],0jmp returnHere17OK17:fstp dword ptr [esi+000000D8]jmp returnHere17coordX17:dd 0coordY17:dd 0coordZ17:dd 0SaveLoadCoords17: // Добавим в таблицу адрес с адресом "SaveLoadCoords17" иdb 0              // названием "0 - ничего, 1 - сохранить координаты,                  // 2 - телепортироваться"Fallout3.exe+50DDC4:jmp newMem17nopreturnHere17:[DISABLE]Fallout3.exe+50DDC4:fstp dword ptr [esi+000000D8]unregistersymbol(SaveLoadCoords17)dealloc(newMem17) 
  3. Артмани сохраняет дампы памяти и промежуточные результаты анализа на жесткий диск, в тот каталог, в который установлена. Попробуй переустановить Артмани на раздел, где свободного места больше, возможно, дело именно в том, что в ходе анализа заканчивается свободное место.

    Спасибо, но думаю дело не в этом. У меня на этом (куда установлена Артмани) логическом диске - 278 ГБ свободно.

     

    А пока Bromvol не отписался, попробую поискать другим методом, подсказал Жажда Знаний в личной переписке.

    Поиск неизвестного, тип байт, ничего нет в инвентаре - уменьшилось, взял предмет - увеличилось; если это ничего не даст, то изменить поиск на наоборот: ничего - увеличилось, предмет - уменьшилось. Если метод сработает от меня Жажде Знаний сразу два плюса. 

  4. Bromvol. нужна твоя помощь.

     

    Пробовал искать адрес по формуле, убил два дня, но пока безрезультатно.

    Искал с помощью ArtMoney Pro v 7.42.1.

     

    Что делал:

    Для начала проверил, работает ли моя ArtMoney Pro 7.42.1:

    Проверил по тому, что проще - по количеству предметов:

    Взял 4 одинаковых Брони Охраны Убежища 101 и сделал 5 дампов памяти, написал формулу:

    Для проверки:

    (M[1,5]=4)AND(M2=3)AND(M3=2)AND(M4=1) // Работает - адрес к-ва БОУ нашёлся быстро (значение меняются).

     

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

    В начале делал 10, затем 15 и в конце  концов 19:

    Делал отсеивание по этим формулам (собрал некоторую инфу:


    Формула для Артмани в моём конкретном случае:

    1. (M1<>M[2,4,6,8,10])AND(M1=M[3,5,7,9]) // 01.01.15 (попытка 1) итераций 0/17

    1.1. Прогон по формуле не закончился (16.01 - 16.12):
    1) ID1$=(M1<>M2)
    Найдено 9108839 адресов
    2) ID2$=(M1<>M4)
    Найдено 14455869 адресов
    3) ID3$=(M1<>M6)
    Найдено 16113247 адресов
    4) ID4$=(M1<>M8)
    Найдено 17581856 адресов
    5) ID5$=(M1<>M10)
    Найдено 18061839 адресов
    6) ID6$=(ID1$&ID2$)
    Найдено 7809972 адресов
    7) ID7$=(ID6$&ID3$)
    Найдено 7217980 адресов
    8) ID8$=(ID7$&ID4$)
    Найдено 6928150 адресов
    9) ID9$=(ID8$&ID5$)
    Найдено 6654545 адресов
    10) ID11$=(M1=M3)
    Найдено 252845585 адресов
    11) ID12$=(M1=M5)
    Найдено 249115280 адресов
    12) ID13$=(M1=M7)
    Найдено 247007302 адресов
    13) ID14$=(M1=M9)
    Найдено 246990717 адресов
    14) ID15$=(ID11$&ID12$) // собственно самая важная итерация (и самая долгая)
    Найдено 2508364 адресов
    15) ID16$=(ID15$&ID13$)
    Найдено 2507477 адресов
    16) ID17$=(ID16$&ID14$) // На этом шаге написал - отменено Пользователем
    Найдено 2507052 адресов

    1.2. Прогон по формуле закончился (16.17 - 16.44):
    1) ID1$=(M1<>M2)
    Найдено 9108839 адресов
    2) ID2$=(M1<>M4)
    Найдено 14455869 адресов
    3) ID3$=(M1<>M6)
    Найдено 16113247 адресов
    4) ID4$=(M1<>M8)
    Найдено 17581856 адресов
    5) ID5$=(M1<>M10)
    Найдено 18061839 адресов
    6) ID6$=(ID1$&ID2$)
    Найдено 7809972 адресов
    7) ID7$=(ID6$&ID3$)
    Найдено 7217980 адресов
    8) ID8$=(ID7$&ID4$)
    Найдено 6928150 адресов
    9) ID9$=(ID8$&ID5$)
    Найдено 6654545 адресов
    10) ID11$=(M1=M3)
    Найдено 252845585 адресов
    11) ID12$=(M1=M5)
    Найдено 249115280 адресов
    12) ID13$=(M1=M7)
    Найдено 247007302 адресов
    13) ID14$=(M1=M9)
    Найдено 246990717 адресов
    14) ID15$=(ID11$&ID12$) // собственно самая важная итерация (и самая долгая)
    Найдено 248218243 адресов
    15) ID16$=(ID15$&ID13$)
    Найдено 245560827 адресов
    16) ID17$=(ID16$&ID14$)
    Найдено 244964886 адресов
    17) ID19$=(ID9$&ID17$)
    Найдено 91773 адресов // Пока ещё много адресов, нужно продолжить отсеивание

    2. (M1<>M[2,4,6,8,10,12,14])AND(M1=M[3,5,7,9,11,13,15]) // 02.01.15 (попытка 2) итераций 0/27

    2.1. Прогон по формуле не закончился (14.51 - 15.07):
    1) ID1$=(M1<>M2)
    Найдено 8446982 адресов
    2) ID2$=(M1<>M4)
    Найдено 14480391 адресов
    3) ID3$=(M1<>M6)
    Найдено 16530682 адресов
    4) ID4$=(M1<>M8)
    Найдено 16452342 адресов
    5) ID5$=(M1<>M10)
    Найдено 17337631 адресов
    6) ID6$=(M1<>M12)
    Найдено 18949722 адресов
    7) ID7$=(M1<>M14)
    Найдено 19167568 адресов
    8) ID8$=(ID1$&ID2$)
    Найдено 7886128 адресов
    9) ID9$=(ID8$&ID3$)
    Найдено 7424723 адресов
    10) ID10$=(ID9$&ID4$)
    Найдено 6668632 адресов
    11) ID11$=(ID10$&ID5$)
    Найдено 6479468 адресов
    12) ID12$=(ID11$&ID6$)
    Найдено 6193794 адресов
    13) ID13$=(ID12$&ID7$)
    Найдено 5835576 адресов
    14) ID15$=(M1=M3)
    Найдено 256824754 адресов
    15) ID16$=(M1=M5)
    Найдено 252739933 адресов
    16) ID17$=(M1=M7)
    Найдено 251039797 адресов
    17) ID18$=(M1=M9)
    Найдено 250670732 адресов
    18) ID19$=(M1=M11)
    Найдено 249721819 адресов
    19) ID20$=(M1=M13)
    Найдено 248830097 адресов
    20) ID21$=(M1=M15)
    Найдено 248221905 адресов
    21) ID22$=(ID15$&ID16$) // собственно самая важная итерация (и самая долгая)
    Найдено 2545980 адресов
    22) ID23$=(ID22$&ID17$)
    Найдено 2545338 адресов
    23) ID24$=(ID23$&ID18$)
    Найдено 2544641 адресов
    24) ID25$=(ID24$&ID19$)
    Найдено 2543749 адресов
    25) ID26$=(ID25$&ID20$)
    Найдено 2541660 адресов
    26) ID27$=(ID26$&ID21$)
    Найдено 2541419 адресов // На этом шаге опять написал - отменено Пользователем

    2.2. Прогон по формуле закончился (15.13 - 16.04):
    1) ID1$=(M1<>M2)
    Найдено 8446982 адресов
    2) ID2$=(M1<>M4)
    Найдено 14480391 адресов
    3) ID3$=(M1<>M6)
    Найдено 16530682 адресов
    4) ID4$=(M1<>M8)
    Найдено 16452342 адресов
    5) ID5$=(M1<>M10)
    Найдено 17337631 адресов
    6) ID6$=(M1<>M12)
    Найдено 18949722 адресов
    7) ID7$=(M1<>M14)
    Найдено 19167568 адресов
    8) ID8$=(ID1$&ID2$)
    Найдено 7886128 адресов
    9) ID9$=(ID8$&ID3$)
    Найдено 7424723 адресов
    10) ID10$=(ID9$&ID4$)
    Найдено 6668632 адресов
    11) ID11$=(ID10$&ID5$)
    Найдено 6479468 адресов
    12) ID12$=(ID11$&ID6$)
    Найдено 6193794 адресов
    13) ID13$=(ID12$&ID7$)
    Найдено 5835576 адресов
    14) ID15$=(M1=M3)
    Найдено 256824754 адресов
    15) ID16$=(M1=M5)
    Найдено 252739933 адресов
    16) ID17$=(M1=M7)
    Найдено 251039797 адресов
    17) ID18$=(M1=M9)
    Найдено 250670732 адресов
    18) ID19$=(M1=M11)
    Найдено 249721819 адресов
    19) ID20$=(M1=M13)
    Найдено 248830097 адресов
    20) ID21$=(M1=M15)
    Найдено 248221905 адресов
    21) ID22$=(ID15$&ID16$) // собственно самая важная итерация (и самая долгая)
    Найдено 251688117 адресов
    22) ID23$=(ID22$&ID17$)
    Найдено 249860591 адресов
    23) ID24$=(ID23$&ID18$)
    Найдено 249237511 адресов
    24) ID25$=(ID24$&ID19$)
    Найдено 247957880 адресов
    25) ID26$=(ID25$&ID20$)
    Найдено 246773312 адресов
    26) ID27$=(ID26$&ID21$)
    Найдено 246248697 адресов
    27) ID29$=(ID13$&ID27$)
    Найдено 916 адресов // И снова пока ещё много адресов, нужно продолжить отсеивание

    2.3.(M1<>M[2,4,6,8,10,12,14])AND(M2<>M[3,4,5,6,7,9,10,11,12,13,15])AND(M1=M[3,5,7,9,11,13,15]) // добавил в формулу допонительное условие
    2.3.1. Прогон по формуле закончился (16.20 - 17.40): // итераций 0/49
    1) ID1$=(M1<>M2)
    Найдено 8446982 адресов
    2) ID2$=(M1<>M4)
    Найдено 14480391 адресов
    3) ID3$=(M1<>M6)
    Найдено 16530682 адресов
    4) ID4$=(M1<>M8)
    Найдено 16452342 адресов
    5) ID5$=(M1<>M10)
    Найдено 17337631 адресов
    6) ID6$=(M1<>M12)
    Найдено 18949722 адресов
    7) ID7$=(M1<>M14)
    Найдено 19167568 адресов
    8) ID8$=(ID1$&ID2$)
    Найдено 7886128 адресов
    9) ID9$=(ID8$&ID3$)
    Найдено 7424723 адресов
    10) ID10$=(ID9$&ID4$)
    Найдено 6668632 адресов
    11) ID11$=(ID10$&ID5$)
    Найдено 6479468 адресов
    12) ID12$=(ID11$&ID6$)
    Найдено 6193794 адресов
    13) ID13$=(ID12$&ID7$)
    Найдено 5835576 адресов
    14) ID15$=(M2<>M3)
    Найдено 9424898 адресов
    15) ID16$=(M2<>M4)
    Найдено 13024392 адресов
    16) ID17$=(M2<>M5)
    Найдено 14697404 адресов
    17) ID18$=(M2<>M6)
    Найдено 15516796 адресов
    18) ID19$=(M2<>M7)
    Найдено 16275043 адресов
    19) ID20$=(M2<>M9)
    Найдено 16842483 адресов
    20) ID21$=(M2<>M10)
    Найдено 16721229 адресов
    21) ID22$=(M2<>M11)
    Найдено 17246390 адресов
    22) ID23$=(M2<>M12)
    Найдено 17639850 адресов
    23) ID24$=(M2<>M13)
    Найдено 18111976 адресов
    24) ID25$=(M2<>M15)
    Найдено 18903810 адресов
    25) ID26$=(ID15$&ID16$)
    Найдено 7929793 адресов
    26) ID27$=(ID26$&ID17$)
    Найдено 7480570 адресов
    27) ID28$=(ID27$&ID18$)
    Найдено 6924215 адресов
    28) ID29$=(ID28$&ID19$)
    Найдено 6618998 адресов
    29) ID30$=(ID29$&ID20$)
    Найдено 6425150 адресов
    30) ID31$=(ID30$&ID21$)
    Найдено 6329877 адресов
    31) ID32$=(ID31$&ID22$)
    Найдено 6253817 адресов
    32) ID33$=(ID32$&ID23$)
    Найдено 6050943 адресов
    33) ID34$=(ID33$&ID24$)
    Найдено 5961476 адресов
    34) ID35$=(ID34$&ID25$)
    Найдено 5815700 адресов
    35) ID37$=(M1=M3)
    Найдено 256824754 адресов
    36) ID38$=(M1=M5)
    Найдено 252739933 адресов
    37) ID39$=(M1=M7)
    Найдено 251039797 адресов
    38) ID40$=(M1=M9)
    Найдено 250670732 адресов
    39) ID41$=(M1=M11)
    Найдено 249721819 адресов
    40) ID42$=(M1=M13)
    Найдено 248830097 адресов
    41) ID43$=(M1=M15)
    Найдено 248221905 адресов
    42) ID44$=(ID37$&ID38$) // собственно самая важная итерация (и самая долгая), если эта итерация проходит,
    Найдено 251688117 адресов // то отсеивание по формуле закончится, если нет - то отсевание слетает.
    43) ID45$=(ID44$&ID39$)
    Найдено 249860591 адресов
    44) ID46$=(ID45$&ID40$)
    Найдено 249237511 адресов
    45) ID47$=(ID46$&ID41$)
    Найдено 247957880 адресов
    46) ID48$=(ID47$&ID42$)
    Найдено 246773312 адресов
    47) ID49$=(ID48$&ID43$)
    Найдено 246248697 адресов
    48) ID51$=(ID13$&ID35$)
    Найдено 2297635 адресов
    49) ID52$=(ID51$&ID49$)
    Найдено 112 адресов // И снова пока ещё много адресов, нужно продолжить отсеивание

    3.(M1<>M[2,4,6,8,10,12,14,16,18])AND(M1=M[3,5,7,9,11,13,15,17,19]) // 03.01.15 (попытка 3) итераций 0/35
    3.1. Прогон по формуле не закончился (00.45 - 01.18):
    3.2. Прогон по формуле не закончился (01.20 - 01.42):
    3.3. Прогон по формуле не закончился (01.43 - 02.22):
    3.4. Прогон по формуле не закончился (02.32 - 02.59):
    3.5. Прогон по формуле не закончился (03.02 - 03.28):
     

     

     

    Огромная проблема в этом поиске в том, что в основном, как видишь из собранной мною инфы (там ещё не все мои попытки указаны), отсеивание заканчивается ничем - Артмани пишет "Отменено пользователем".

    А также жаль, что нельзя, опираясь на предыдущий результат, продолжить отсеивание, а приходиться делать его постоянно с самого начала.  

     

    Я уже и от сетки отключался, отключал Касперского, давал Артмани высокий приоритет в Диспетчере задач, но так стабильного результата не получил. А последнюю (попытку № 3) так и не закончил, уже нервы не выдержали, как видишь затрачено 3 часа.

     

    Bromvol, мне всё таки очень хочется доделать (раз начал).

    Подскажи пожалуйста, как сделать более стабильную работу - "Отсеивания по формуле".

    И если сможешь сними видео именно по поиску ID (пусть и в другой игре) предмета.

     

     

    № п/п	Наименование предмета	             Дамп памяти	ID предмета из интернета1	Броня Охраны Убежища 101 (БОУ1)	        M1	              0001CBDD2	Рабочий Комбинезон Убежища 101 (РКУ)	M2	              000425BA3	БОУ2	                                M3	              0001CBDD4	Лабораторный Халат Убежища (ЛХУ)	M4	              0001CBDC5	БОУ3	                                M5	              0001CBDD6	Прикид Тунельных Змей (ПТЗ)          	M6	              0002042E7	БОУ4	                                M7	              0001CBDD8	РКУ	                                M8	              000425BA9	БОУ4	                                M9	              0001CBDD10	ЛХУ	                                M10	              0001CBDC11	БОУ3	                                M11	              0001CBDD12	ПТЗ	                                M12	              0002042E13	БОУ2	                                M13	              0001CBDD14	РКУ	                                M14	              000425BA15	БОУ1	                                M15	              0001CBDD16	ЛХУ	                                M16	              0001CBDC17	БОУ2	                                M17	              0001CBDD18	ПТЗ	                                M18	              0002042E19	БОУ1	                                M19	              0001CBDD			 
  5. Еще это посмотри видео:

    Спасибо это видео смотрел.

     

    (Я так понял что SlayerM и M4K одно и тоже лицо :-) )

    Да это один и тот же.

     

     

    Да но есть ньюанс, который тебе может не понравиться. Если ты ищещь неизвестный тип(много выбрал типов), то отсев по формуле может занять очень много времени (30 минут и более). Этот пример в видео показан на эмуляторе и на нем все быстро происходит, но на играх на РС это время больше, даже намного больше.

    Я это уже оценил, сделал на пробу 4 дампа, написал формулу и посмотрел как работает, осталось всего 480000 адресов (отсеивание по формуле заняло минут 15), так что думаю 34 - 36 дампов не понадобиться, я думаю 10 будет вполне достаточно.

     

    И всё же просьба сними своё видео тоже.

    И от меня, за идею (за способ), новогодний плюс.  

  6. Идею отсеивания по формуле кажись понял.

    Почитал вот это:

    Отсеивание по формуле

    Что такое формула

    Отсеивание по формуле - самый мощный механизм поиска. Сохраните несколько раз дамп памяти (это можно сделать с помощью установленной в настройках клавиши). Вы имеете несколько состояний объекта M1,M2, и т.д. Например, состояние полоски жизни одинаково на 1 и 3 состоянии. Теперь сделайте отсеивание по формуле "(M1 <> M2)and(M2 <> M3)and(M1 = M3)". И вы легко нашли адрес жизни. Формула анализирует уже сохраненные состояния объекта, текущее состояние не учитывается.

    Формула дает возможность найти адрес переключившись на ArtMoney всего один раз. И это еще не все! Формула позволяет находить сразу неограниченное количество параметров. Например, в игре "Jagged Alliance 2" можно найти сразу патроны для 12 наемников. Для этого сохраните несколько раз дамп памяти с помощью нажатия клавиш. Запомните или запишите у кого сколько патронов. Далее переключитесь на ArtMoney и 12 раз введите формулу для каждого наемника. Например, для первого наемника (M1 = 12)and(M2 = 6)and(M3 = 1).


    Состав формулы

    Формула представляет собой логическое выражение, которое может содержать:

    Другие выражения в скобках ().
    Аргументы (M1,M2, и т.д.) - Cостояния объекта (дамп памяти или набор адресов и значений). Дамп памяти - это полный слепок объекта на какой-то момент времени.
    Набор аргументов M[2,4] - Cостояния объекта на 2 и 4 шаге. Например, M1 <> M[2,4] то же самое (M1 <> M2) and (M1 <> M4).
    Числа (100,-15,Ah,11.2) - Два числа в выражении может быть только в выражении вида 100>=M1>=300.
    Текст ('Boss',"Good") - только для выражения вида M1='Boss'.
    Условия ( "<",">","=" и т.д.) - например, M1=1, M2>=100, 1<=M3<=2, или для сравнения состояний объекта M1>M2, M1<>M2.
    Арифметические действия ('+','-') - только для выражения вида M2>=M1+100.
    Операция AND - объединение двух наборов адресов, которые есть в 1 и в 2 выражении.
    Операция OR - объединение двух наборов адресов, которые есть в 1 или в 2 выражении.
    В формуле можно использовать любое количество вложенных пар скобок. Содержимое каждой из этих пар скобок должно быть логическим выражением. На выходе каждого выражения должен быть набор адресов и значений.

    Помните, что операции "AND", "OR" возвращают только набор адресов. Они должны выполняться только в последнюю очередь. Например, 100<=(M1andM2)<=300 - даст не верный результат, набор значений не определен.
    Правильный вариант:

    (100 <= M1 <= 300)and(100 <= M2 <= 300).

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

    Выражения типа M1=M2 возвращает правильный набор адресов и значений, поскольку значения одинаковы. Например, результат (M1=M2)>0 совершенно одинаков с (M1 > 0)=(M2 > 0).


    Примеры формул

    Например, если вы ищите точное значение и имеете 3 шага со значениями 15000,14460,15100, правильная формула будет:

    (M1 = 15000)and(M2 = 14460)and(M3 = 15100).

    Например, если вы ищите диапазон значений и имеете 2 шага со значениями примерно 100 и 200, правильная формула будет:

    (99 <= M1 <= 101)and(199 <= M2 <= 201).

    Например, если вы ищите неизвестное значение (полоска жизни) и имеете 4 шага со значениями примерно 100%, 80%, 60%, 90%, правильная формула будет:

    (M1 > M2)and(M1 > M3)and(M1 > M4)and(M2 > M3)and(M2 < M4)and(M3 < M4).

    Например, если вы ищите закодированное значение и имеете четыре различных состояния объекта, правильная формула будет:

    (M1 <> M2)and(M1 <> M3)and(M1 <> M4)and(M2 <> M3)and(M2 <> M4)and(M3 <> M4)

    или такой специальной конструкцией:

    (M1 <> M[2,3,4])and(M2 <> M[3,4])and(M3 <> M4).

    P.S. Рекомендуется включить режим "Разрешить отмену отсеиваний", если хотите использовать все шаги, а не только дампы памяти.

    посмотрел это:

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

    Надо будет после праздников попробовать - по отсеивать по формуле.

  7. Да Xipho прав что отсев по формуле есть ТОЛЬКО в платной версии. Но есть и крякнутие pro версии, но их очень тяжело найти. У меня где-то била крякнутая версия.

    Да garik66 если тебе будет неясно как именно искать, то постараюсь сделать видео урок как находить id предмета в игре. Но на примере другой игрухи, так-как не знаю есть ли у меня fallout 3.

    Крякнутую версию нашёл. До этого пользовался только бесплатной версией.

    Видео пока не изучал, сперва нужно вообще прочитать про этот метод.

    А за видео, которое будешь делать - заранее ОГРОМНЫЙ СЕНК!!!

    Поможет не только мне. 

  8. Здравствуй геймхакер :-)

    Какой-то интересний у тебя взлом :-)

    Тебе надо изменить алгоритм поиска. Не помню всех ньюансов игри fallout3, но попробуй использовать не СЕ, а ArtMoney для поиска id предмета.

    Для етого тебе надо использовать поиск по формуле в артмани.

    Ну собственно сам алгоритм поиска:

    1 надо вибросить несколько предметов(3-4 подойдет)

    А можно боле подробно: что за формула, что за алгоритм? 

    Видно туго соображаю (спать хочется), пока ничего не понял, нужно поискать видео  и посмотреть.

    Чуть чуть посмотрел видео, такого способа ещё ни разу не видел, нужно будет по изучать. Но сперва поспать. Пока ничего не понятно, но круто. 

  9. В канун Нового года хочу поблагодарить всех, кто выпрямляет потихоньку мои кривые ручки:

    1. IBM - за создание ПК.

    2. Била Гейтса - за ОС.

    3. Гугл - за Гугл.

    4. Дарк Байта - за  CE.

    5. SER[G]ANT -  за перевод СЕ, без него я бы сюда не попал.

    6. Xipho - без него никакого сюда бы и не было.

    7. Keng, Coder и Xipho - за Ваши видео-уроки.

    8. MasterGH  - за статьи.

    9. NullAlex и  Xipho - за неоценимую помощь при написании мною скриптов.

    10. NullAlex - за отлично выполняемую им работу модератором.

    Спасибо Вам всем!!!

    • Плюс 3
  10. Уже наверное двое суток убил. Не получается. Помнится что в Dark Souls 2  мне довольно легко удалось реализовать такую подмену в ассортименте торговца. Здесь пока не получается.

     

    Что пробовал:

     

    1. Брал ID предмета (для консоли, находил ID в интернете).

    2. Делал поиск в СЕ по этому ID (поиск точного значения 4 байта в HEX). Находилось немного адресов (чаще 4 адреса).

    3. Выбрасывал, поднимал, продавал, покупал - ничего с адресами не происходит.

     

    Предположил что эти ID только для консольного добавления предмета.

     

    Если перейдя в консоль, указать на предмет мышью, то появляется название предмета и в скобках ID (выглядят примерно так - ff0012f6), которое не совпадает с предыдущими ID. Попробовал и с ними:

    1. Выкидывал предмет.

    2. Переключался на консоль, смотрел ID

    3. Делал поиск по ID (тоже обычно 4 адреса)

    4. Поднимал предмет.

    5. В этом случае в этих 4 адресах значения изменялись, а в некоторых обнулялись. 

    6. Снова выкидывал предмет.

    7. Переключался на консоль, смотрел ID

    8. Делал поиск по ID (тоже обычно 4 адреса, только уже другие) 

    9. Добавлял адрес в таблицу, который предположительно должен обнулиться и на него ставил бряк на чтение.

    10. Выбирал инструкцию (из тех которые выскочили при срабатывание бряка).

    11. На инструкцию писал скрипт, где подменял ID на консольную ID другого предмета.

    12. Ни чего не получилось.

     

    Если у кого-нибудь есть ещё идеи по поиску или информация какое ID можно использовать, напишите и "Моя благодарность не будет знать границ в пределах разумного. :-D

  11. Я к тому что если адреса похожи то это не значит что это одна структура(исключая конечно если адреса совпадают по всем байтам кроме последних). То есть в случае 31DB1737 и 3BCD21A4. Никакой зависимости одного адреса от другого нет.

    Согласен, конечно.

  12. Да. Я про это в самом начале писал, что структуру брал с верхних регистров. Про большие структуры я имел в виду напримере игра "OMERTA" :адрес 31DB1737

    А при бряке регистров можно выделить наиболее приближенный к нему 3BCD21A4

    Как проблематично вычеслить смещение

    Из всего вышеизложенного я понял только, что ты пытаешься найти смещение отняв  из 3BCD21A4 это  31DB1737.

     

    Кроме этого я больше,  сожалению ничего не понял. Поэтому и помочь ничем не смогу.

     

    Если хочешь, чтобы тебе помогли, излагай свои мысли точнее и подробнее. (напиши: что делал, как делал, тогда будет видна или ошибка, если ты ошибаешься, или будет ответ на твой вопрос).

  13. Спасибо, но когда то я уже ее читал. Немного довел скрипт до работы, нашел подходящее поле сравнения, [ecx+1c],(float)50 и [ecx+34],00000001. Почему разные смещения , потому что с разных регистров, все рабочие. А вот как быть если очень большая структура ? 

    Хорошо.

    Кстати понял, почему мы друг друга не понимали по смещениям. Думаю всё дело не в потому что с разных регистров, а в том, что ты использовал в двух случаях разную инструкцию, т.е. в первом случае -

    DragonAge2.AK::MemoryMgr::GetPoolName+81EA6:fld dword ptr [esi+04]mov ecx,[esi+14] 

    а во втором (она находится очень близко к первой в коде игры)

    DragonAge2.AK::MemoryMgr::GetPoolName+81EA4:fld dword ptr [esi+04] 

    хотя они и похожи, но это разные инструкции и поэтому смещения отличаются (так как структуры разные). Таких похожих инструкций в коде игры бывает очень много.(поэтому кстати в Аобскане сигнатура может быть очень длинной - чтобы инструкция была уникальной).

    По второму вопросу

     А вот как быть если очень большая структура ?  

    Вопроса я не очень понял, структуры - все большие. Главное, чтобы ты в ней находил, то что тебе нужно (например MAX значение здоровья, выносливости ну и т.д., т.е. характеристики на которые мы впрямую не можем повлиять; нахождение например ID (фильтров )). Если ты находишь в структуре, то что тебе нужно - размер роли не играет.

       

  14. Спасибо. Попробую.

    Так.. Как мне сделать фильтр на патроны у игрока? 

    mov [eax+10],ecx - отвечает не только за здоровье игрока, но и за его патроны.

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

    Описывалось уже не раз и в видео есть:

    1. в Отладчике выдели свою инструкцию ( mov [eax+10],ecx)

     2. Правой кнопкой по ней -  выбираем из контекстного меню: "Найти адреса, получающие доступ к этой инструкции. ) Новое окно.

    3. Вернись в игру, чтобы в окне появились адреса.

    4. Вернись  в окно, посмотри на адреса (правой кнопкой - показать регистры). Обычно по одному регистру все адреса будут отличаться.

    Вот его (и значение в этом регистре) и выбирай за ID. 

    Так можно отдельно для каждой характеристики написать, что хочешь, разделив их этим фильтром в коде инъекции .

    • Плюс 1
  15. А можно поставить флаг таким образом: Если значение равно указанной структуре, то пропускает. То есть, если одна инструкция равна другой инструкции, то моя инъекция срабатывает.

    cmp [eax+10]=[esi+15]///пример в моём пониманииjne originalcodemov ecx,(float)200.0originalcode:mov [eax+10],ecxxor eax,eax  

    Как бы, если значение в одной инструкции равно значению в другой инструкции.

    Мне интересно, может таким способом можно будет свести баги к минимуму.

    Попробуй так:

    push ebx // сохраняем регистр, которым будем пользоватьсяmov ebx,dword ptr[esi+15] // загоняем в него нужное значениеcmp [eax+10],ebx //сравниваемpop ebx // восстанавливаем регистр, после использования jne originalcodemov ecx,(float)200.0originalcode:mov [eax+10],ecxxor eax,eax  
    • Плюс 1
  16. Желаю всем пользователям сайта GamehackLab.RU счастья, добра, здоровья, и успехов в 2015-м году!

    С Новым годом!

    Присоединяюсь:

    /* Есть игра - "Life-2014"   Скоро выйдет к ней патч - "Life-2015" ================= Основная Структура игры =================   [eax+08] = 1 - ID (все жители планеты Земля)   [eax+0C] - текущее здоровье   [eax+10] - MAX здоровье   [eax+18] - денюжки   [eax+24] - удача   [eax+28] - MAX удача ================= Основной скрипт - пожелание =============*/[ENABLE]alloc(newMem, 2048)label(returnHere)Label(New_Year)newMem:cmp [eax+08],1        // Всемje New_Yearfld dword ptr [eax+04]jmp returnHereNew_Year:             // Желаюpush [eax+10]         // Максимальногоpop [eax+0C]          // Здоровья!!!add [eax+18],#9999999 // Много денег!!!push [eax+28]         // Чтобы удача никогдаpop [eax+24]          // нас не покидала!!!jmp Life.exe+012015   // Возвращаться мы не собираемся.Life.exe+122014:jmp newMemnopnopreturnHere:[DISABLE]Life.exe+122014:fld dword ptr [eax+04]dealloc(newMem) 
  17. Всем большое спасибо за советы.

    Наколдовал с помощью консоли себе несколько "Стелс-бой", адрес нашёлся сразу, но даже вписывание в него значения напрямую, ничего в игре не изменяло, хотя инструкция на чтение очень часто обращается к адресу, т.е. нужно было искать активатор.

    Ломает его искать, поэтому сделал своим способом. И получилось кстати гораздо круче, хоть герой и видим на экране, его никто не видит в игре. Скрипт, если интересно смотрите здесь.  

  18. в Fallout есть степень невидимости то есть какая то шкала где 0 нет невидимости 100 полностью невидим.

    Вариант искать с предметами дающие разное количество процентов невидимости. И искать по методу увеличилось-уменьшилось-не изменилось.

    Поиск ничего так и не дал, перепробовал разные способы.

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

  19. По поводу скрипта, это с форума cheat engine. Вот темка со скриптом покопайся может быть осенит как что делать.

     

    http://forum.cheatengine.org/viewtopic.php?p=5387584

    Смотреть не стал (потом посмотрю - как мастера ломают), раз не кто не предложил варианта поиска значения, решил сделать своим способом.

    Если кому интересно - посмотрите здесь 

  20. Объясни подробно куда вставлять код/вызывать и т.д!

    Сам пользуюсь. Очень ему благодарен (Akama - плюс).

    Куда:

    1. Открываем СЕ.

    2. Открываем Отладчик.

    3. В отладчики, вверху Инструменты.

    4. В Инструментах, почти в самом низу Lua Engine.

    5. В Lua Engine нижнее окошко (где справа кнопка "Выполнить"). В это окошко нужно скопировать скрипт из поста Akama.

    6. В Lua Engine, вверху Файл.

    7. В Файл - "Сохранить текущий скрипт" - сохраняйте куда Вам нужно (файловую систему объяснять здесь не буду).

     

    Вызов:

    1. Открываем СЕ.

    2. Открываем Отладчик.

    3. В отладчики, вверху Инструменты.

    4. В Инструментах, почти в самом низу Lua Engine.

    6. В Lua Engine, вверху Файл.

    7. В Файл - "Открыть" - открываете файл который сохранили ранее.

     

    Вроде всё.

    • Плюс 1
×
×
  • Создать...

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

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