За последние 24 часа нас посетили 26284 программиста и 1814 роботов. Сейчас ищут 1027 программистов ...

оперативка

Тема в разделе "Прочее", создана пользователем siiXth, 12 авг 2011.

  1. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    вопрос конечно даже не на тот форум , но тут бывает шарят :>
    на одном компе через артмани нашёл значение в процессе , как мне в том же процессе найти то же самое значение на другом компе. понимаю что это является основополагающей создания трейнеров для игр , но ничего толкового гугл не даёт. спасибо
     
  2. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    В общем разобрался
    нужно знать что такое указатели и разобраться в autoit что я успешно сделал за пару часов и нашёл компромисный вариант реализации )) ещё на другом компе не проверял , но процесс многократно перезапускал и всегда выводило данные
    забавно что только по autoit были примеры чтения процесса , правда с переводом указателя в адрес ячейки(или как её там) возникли проблемы , хз почему , видно получаю не правильный адрес при переводе в hex, незнаю , сложно так сразу разобраться в чём причина ) эррор не выдаёт , а только пустое значение.
    ну а с действующим ("прямым") адресом - без проблем.
    мож кто шарит в нём , отпишитесь пжлста , немного побомблю вас. спс =)
     
  3. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    смотря как задана переменная, может в одном и том же адресе быть (в виртуальном пространстве процесса), а может быть в методе класса динамически создаваемого, и тогда хрен найдешь ее.
     
  4. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    ну как я понимаю - есть оперативная память , а в ней процессы - это такие же оперативные памяти и начинается каждая с 0x0000000, и указатели - это ячейки в процессе.
    в общем завтра проверю точно на другом компе
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    siiXth
    в оперативной памяти нет никаких процессов. только ячейки памяти =) по определенному адресу.
     
  6. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    ну я чтоб понятней было обьяснил =D я сам только так по-детски и могу обьяснить)) главное что понимаю процесс))
     
  7. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    siiXth
    на примере win32: операционка выделяет каждому процессу кусок памяти, где конкретно в памяти (своп+оперативка) знает лишь она (грубо говоря), а каждый процесс думает что получает от 2Гб своей личной пустой оперативки. Песочница типа :)
    Про указатели не понял, на каком уровне ты говоришь. Сложные типы (строки например) это переменная являющаяся указателем на область данных в памяти, где и хранится сама строка, поэтому работать грубо с переменной нельзя (типа скопировать значение в памяти где она хранится) - ты скопируешь указатель, а не данные. А вот простые типы вроде dword могут быть представлены сами собой. Так же в стек они помещаются целиком, а всякие строки/массивы идут через указатель на область в памяти.
    Ну на примере асма:
    допустим в EAX лежит интегер, простой тип, он туда поместится. А в EDI лежит указатель на кусок данных где-то в оперативке (массив интегеров), тогда чтобы достать из массива интегер нужно обратиться по указателю в область с данными:
    movd mm0, eax //тупо кидаем в регистр ММХ значение из ЕАХ
    mov edx, [edi] //не тупо кидаем в EDX значение из куска данных куда указывает значение в EDI. Поэтому чтобы считерить нужно менять не значение в edx, а в куске данных куда указывает edi. Если я правильно понял твой вопрос.


    и вообще не понятно на каких уровнях мы говорим, у Аутоит может быть свое понимание "указателей" :)
     
  8. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    ну я незнаю , указатель вроде спокойно нашёлся , тоесть я даже незнаю , ща ещё раз обьясню =D вот win32 , вроде оно
    захожу в артмани ищу значение в процессе , сею его , нахожу единственный блок - насколько понимаю адрес какой мне выдаёт это адрес в "общей" оперативке вместе со всеми другими процессами. дальше я ищу то же самое значение только уже в самом модуле(так написано в артмани) - file.exe и получаю , как понимаю , указатель добавляя которое получаю то же самое что и при первом поиске.
    вот например левый скрин
    справа в таблице столбец адрес отображает адрес в "общей" оперативке , а когда я захожу в его редактирование мне отображает адрес в модуле (так написано в артмани,думаю это указатель) , тоесть по этому адресу я смогу найти значение в "общей" оперативке на другом компе.
    вот мой пост на форуме autoit
    тоесть я не пойму как мне тупо брать адрес в модуле и находить по нему значение, мне лично не нужно знать адрес в "общей" оперативке , а просто получать значение.
     
  9. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    в продолжение шизы =D

    возможно ли найти разницу между адресами оперативки ?
    например

    046F044C
    046F01FC
    046F069C

    между первым и вторым такая же разница как между вторым и третьим , только вот как её найти ?
    спасибо
     
  10. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    в каком смысле разница? смещение или разница в данных?
    и еще вопрос каким типом представить значения по адресу...
     
  11. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    смещение , много адресов , вручную искать не прикольно
    ну например текст , он везде разный , будем рубать по символам , с ним туго , а вот есть целые 4 байта , там легко.
     
  12. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    046F044C - 046F01FC = 250 o_0
     
  13. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    надеюсь это не стёб =D
    как считать ёпт? =D
     
  14. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    ну окей , я примерно понял
    046F01FC
    +
    250
    =
    046F044C

    44С-1FC=(4-1-остаток)++(4-F=4..3..2..1..0..F и того разница в 5 значений)++(C-C=0)
    верно ?
    тоесть вообще цифры прибавляем до 9 (?) и дальше буквы до F и цифры с 0 , правильно ?
     
  15. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    ну из шеснадцатиричного переведи :)
     
  16. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    забавно
    вышло

    1)046F01FC = 74383868
    2)046F044C = 74384460
    3)046F069C = 74385052

    разница между 1 и 2 , 2 и 3 вышла 592
    соотв. 4ое значение = 46F08EC

    отчитался, спасибо=)
    чтото я программу по системам исчесления видимо прогулял =D
     
  17. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    250 это в hex, а в dec это 592. У тебя же 046F01FC, а не 74383868.
     
  18. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    калькулятором
    [​IMG]
    =D
     
  19. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    аа =D а я переводил ёпты через первую ссылку в гугле =В спасибо)
     
  20. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    ты программист или кто? почему не написал скрипт по переводу из hex в dec? ))
     
  21. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    ааа , я ж писал что в системах исчесления не разбираюсь =D
    позор мне :Р
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Там стандартная функция пхп