вопрос конечно даже не на тот форум , но тут бывает шарят :> на одном компе через артмани нашёл значение в процессе , как мне в том же процессе найти то же самое значение на другом компе. понимаю что это является основополагающей создания трейнеров для игр , но ничего толкового гугл не даёт. спасибо
В общем разобрался нужно знать что такое указатели и разобраться в autoit что я успешно сделал за пару часов и нашёл компромисный вариант реализации )) ещё на другом компе не проверял , но процесс многократно перезапускал и всегда выводило данные забавно что только по autoit были примеры чтения процесса , правда с переводом указателя в адрес ячейки(или как её там) возникли проблемы , хз почему , видно получаю не правильный адрес при переводе в hex, незнаю , сложно так сразу разобраться в чём причина ) эррор не выдаёт , а только пустое значение. ну а с действующим ("прямым") адресом - без проблем. мож кто шарит в нём , отпишитесь пжлста , немного побомблю вас. спс =)
смотря как задана переменная, может в одном и том же адресе быть (в виртуальном пространстве процесса), а может быть в методе класса динамически создаваемого, и тогда хрен найдешь ее.
ну как я понимаю - есть оперативная память , а в ней процессы - это такие же оперативные памяти и начинается каждая с 0x0000000, и указатели - это ячейки в процессе. в общем завтра проверю точно на другом компе
ну я чтоб понятней было обьяснил =D я сам только так по-детски и могу обьяснить)) главное что понимаю процесс))
siiXth на примере win32: операционка выделяет каждому процессу кусок памяти, где конкретно в памяти (своп+оперативка) знает лишь она (грубо говоря), а каждый процесс думает что получает от 2Гб своей личной пустой оперативки. Песочница типа Про указатели не понял, на каком уровне ты говоришь. Сложные типы (строки например) это переменная являющаяся указателем на область данных в памяти, где и хранится сама строка, поэтому работать грубо с переменной нельзя (типа скопировать значение в памяти где она хранится) - ты скопируешь указатель, а не данные. А вот простые типы вроде dword могут быть представлены сами собой. Так же в стек они помещаются целиком, а всякие строки/массивы идут через указатель на область в памяти. Ну на примере асма: допустим в EAX лежит интегер, простой тип, он туда поместится. А в EDI лежит указатель на кусок данных где-то в оперативке (массив интегеров), тогда чтобы достать из массива интегер нужно обратиться по указателю в область с данными: movd mm0, eax //тупо кидаем в регистр ММХ значение из ЕАХ mov edx, [edi] //не тупо кидаем в EDX значение из куска данных куда указывает значение в EDI. Поэтому чтобы считерить нужно менять не значение в edx, а в куске данных куда указывает edi. Если я правильно понял твой вопрос. и вообще не понятно на каких уровнях мы говорим, у Аутоит может быть свое понимание "указателей"
ну я незнаю , указатель вроде спокойно нашёлся , тоесть я даже незнаю , ща ещё раз обьясню =D вот win32 , вроде оно захожу в артмани ищу значение в процессе , сею его , нахожу единственный блок - насколько понимаю адрес какой мне выдаёт это адрес в "общей" оперативке вместе со всеми другими процессами. дальше я ищу то же самое значение только уже в самом модуле(так написано в артмани) - file.exe и получаю , как понимаю , указатель добавляя которое получаю то же самое что и при первом поиске. вот например левый скрин справа в таблице столбец адрес отображает адрес в "общей" оперативке , а когда я захожу в его редактирование мне отображает адрес в модуле (так написано в артмани,думаю это указатель) , тоесть по этому адресу я смогу найти значение в "общей" оперативке на другом компе. вот мой пост на форуме autoit тоесть я не пойму как мне тупо брать адрес в модуле и находить по нему значение, мне лично не нужно знать адрес в "общей" оперативке , а просто получать значение.
в продолжение шизы =D возможно ли найти разницу между адресами оперативки ? например 046F044C 046F01FC 046F069C между первым и вторым такая же разница как между вторым и третьим , только вот как её найти ? спасибо
в каком смысле разница? смещение или разница в данных? и еще вопрос каким типом представить значения по адресу...
смещение , много адресов , вручную искать не прикольно ну например текст , он везде разный , будем рубать по символам , с ним туго , а вот есть целые 4 байта , там легко.
ну окей , я примерно понял 046F01FC + 250 = 046F044C 44С-1FC=(4-1-остаток)++(4-F=4..3..2..1..0..F и того разница в 5 значений)++(C-C=0) верно ? тоесть вообще цифры прибавляем до 9 (?) и дальше буквы до F и цифры с 0 , правильно ?
забавно вышло 1)046F01FC = 74383868 2)046F044C = 74384460 3)046F069C = 74385052 разница между 1 и 2 , 2 и 3 вышла 592 соотв. 4ое значение = 46F08EC отчитался, спасибо=) чтото я программу по системам исчесления видимо прогулял =D