• Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
  • Зарегистрироваться
  • Войти
CELua[RU]
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
  • Зарегистрироваться
  • Войти

Поиск по формуле

Запланировано Прикреплена Закрыта Перенесена Приёмы
фишкиидеяscan memoryce lua
1 Сообщения 1 Posters 33 Просмотры 1 Watching
Загружаем больше сообщений
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • M Не в сети
    УченикMasterGH Администраторы
    отредактировано 1 апр. 2023 г., 22:04

    В таблице поиска есть колонки ссылающиеся на название Lua перменных: "value" и "previousvalue"
    fb6eb5fd-f132-42d3-82e5-da0af262ffde-изображение.png
    35e15012-0c36-4ec5-8a54-7e3ad82a878e-изображение.png

    Сравнивать текущее и предыдущие значения вместе или по отдельности, в том числе на разных вкладках CE
    0be17f93-8b99-49f6-9aae-151493b4a764-изображение.png

    Примеры:

    value == 65
    value == 0x65 (или поставить галку hex)
    value ~= 65 (или поставить галку not)

    Можно и такое сравнение сделать после поиска неизвестного используя математические функции:

    math.abs(value - previousvalue) < 10
    

    Можно делать различные комбинации:

    and (логическое И).
    or (логическое ИЛИ).
    not (логическое НЕ).
    \+ (сложение);
    \- (вычитание);
    * (умножение);
    / (деление);
    ^ (возведение в степень);
    % (остаток от деления).
    == (равно);
    ~= (не равно);
    < (меньше);
    > (больше);
    <= (меньше или равно);
    >= (больше или равно).

    Можно написать функцию xor

    function BitXOR(a,b)--Bitwise xor
    local p,c=1,0
    while a>0 and b>0 do
    local ra,rb=a%2,b%2
    if ra~=rb then c=c+p end
    a,b,p=(a-ra)/2,(b-rb)/2,p*2
    end
    if a<b then a=b end
    while a>0 do
    local ra=a%2
    if ra>0 then c=c+p end
    a,p=(a-ra)/2,p*2
    end
    return c
    end

    А потом применяем даже отдельные функции как в этом примере

    "value > 0 and BitXOR(value, 100) "
    

    b7e4f839-065d-4d99-8099-fdd6f71a21cf-изображение.png

    А может быть я хочу только 100 первых результатов

    function BitXOR(a,b)--Bitwise xor
    local p,c=1,0
    while a>0 and b>0 do
    local ra,rb=a%2,b%2
    if ra~=rb then c=c+p end
    a,b,p=(a-ra)/2,(b-rb)/2,p*2
    end
    if a<b then a=b end
    while a>0 do
    local ra=a%2
    if ra>0 then c=c+p end
    a,p=(a-ra)/2,p*2
    end
    return c
    end
    valueCount = 0
    function CheckCount100()
    valueCount = valueCount + 1
    return valueCount <= 100
    end
    CheckCount100() and value > 0 and BitXOR(value, 50)
    

    71a9da57-7807-45a0-8eb0-0584fdea3a17-изображение.png

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

    getAddressSafe('['..value..']')~=nil
    

    2f4e2e22-6f5a-4dcd-8757-85d8ad2744a4-изображение.png

    Или наоборот не являются указателями

    getAddressSafe('['..value..']')==nil
    

    ae76b77f-9eca-4dc1-b175-2f590d9ac3f9-изображение.png

    Еще можно попробовать добавить 50 красных и 50 синих указателей в таблицу CE, но это уже задание кому интересно.

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

    Можно попробовать указать условие, что значение адреса должно находиться в X структуре или в её вероятных указателях.

    Или попробовать оставить только одинаковые значения адресов, т.е. повторяющихся более 1 раза.

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

    (изменилось) И (больше 0) И (меньше 10000)
    (не изменилось) И (больше 0) И (меньше 10000)
    1 ответ Последний ответ Ответить Цитировать 0

    • 1 / 1
    1 / 1
    • Первое сообщение
      1/1
      Последнее сообщение
    Powered by NodeBB | Contributors
    СeLua[RU] 2025©