Перейти к содержанию
  • записи
    104
  • комментариев
    125
  • просмотр
    15 631

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


MasterGH

1 456 просмотров

В таблице поиска есть колонки ссылающиеся на название Lua перменных: "value" и "previousvalue"

image.png

Спойлер

Screenshot_10.png

 

А что можно делать?

 

Сравнивать текущее и предыдущие значения вместе или по отдельности, в том числе на разных вкладках CE

image.png

 

Примеры:

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

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

math.abs(value - previousvalue) < 10

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

and (логическое И).
or (логическое ИЛИ).
not (логическое НЕ).

+ (сложение);
- (вычитание);
* (умножение);
/ (деление);
^ (возведение в степень);
% (остаток от деления).

== (равно);
~= (не равно);
< (меньше);
> (больше);
<= (меньше или равно);
>= (больше или равно).

 

Что на счет xor? Можно написать функцию 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) "

image.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)

 

image.png

 

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

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

image.png

 

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

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

image.png

 

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

 

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

 

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

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

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

(изменилось) И (больше 0) И (меньше 10000)

(не изменилось) И (больше 0) И (меньше 10000)

  • Плюс 3

1 Комментарий


Рекомендуемые комментарии

Супер статья. Но с указателями не все так просто. В адресе может лежать значение, которое при интепретации его как указатель будет указывать на ячейку памяти, в которой лежит какой-то мусор, и в этом случае проверка на nil вернет false, и такой адрес будет считаться указателем.

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
×
×
  • Создать...

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

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