Нажмите CTRL-D чтобы добавить нас в закладки
HackZone.RU - Странности с указателями
Войти / Регистрация / Участники
Определение даты выпуска iPhone по серийному номеру
-
Поиск по сайту
Форумы



Реклама

Программирование / C/C++/VC++ RSS подписка на сообщения с форума Subscribe


Новая тема Наиболее обсуждаемые темы Наиболее посещаемые темы
Поиск 
Период
Перейти

Страницы сообщения: [1] [2] Просмотров - 5113
Странности с указателями
Добавить этот топик в закладки »
RSS-лента ответов »Subscribe
HACK_ER




Platinum Member
# | Сообщение добавлено 12.07.2010 04:17:54
Отредактировано 12.07.2010 04:18:21 by HACK_ER
Всем привет. Вот исходный код
C++
int i = 5;
    int *b = &i;
    cout << *b << "\n";
    cout << &i;
 
    cout << "\n" << 0x22ff48;
 
 
Значит я создаю указатель b с адресом i (адрес - 0x22ff48, строчка "cout << &i" это проясняет).
Результат программы -
Text
5
0x22ff48
2293576
И вот вопрос - почему последняя строчка "229357", а не 5. как предполагается это вывести. Может быть, это из-за того, что вывводятся числа в другой системе счисления?
Сказать спасибо Ответить Цитировать

azamprod




Gold Member
# | Сообщение добавлено 12.07.2010 10:43:10
Отредактировано 12.07.2010 10:45:52 by superhacker
C++
#include<iostream>
using namespace std;
int main()
{
int i = 5;
    int* b = &i;
    cout << *b << "\n";//вывести  5, * возврвщает переменную
    cout << i;//вывести просто i т.е. 5
    cout << "\n" << &i << endl << b;//используй &i или b чтобы вывести адрес,
    // & получаем адрес переменной,
    // при введение 0x22ff48 он его воспринимает как число а не адрес.
    system("pause");
     return 0;
}
 
Сказать спасибо Ответить Цитировать

HACK_ER




Platinum Member
# | Сообщение добавлено 12.07.2010 13:19:16
2azamprod, спасибо конечно, но про основу указателей я знаю, ты видимо не понял, что я хочу. Я хочу чтобы когда компилятор увидел адрес 0x22ff48 (cout << 0x22ff48), он бы выдал значение по этому адресу, чего, собственно это не происходит, а вместо этого выводится непонятное значение "229357"
 
Добавлено 12.07.2010 13:27:07 (через 8 минут 51 секунда )
 
кажется, я понял в чем проблема. Наверное, когда компилятор видит выражение - 0x22ff48 - он переводит значение 22ff48 из шестнадцадтиричной системы счисления в десятичную, а я хочу чтобы он выдал значение, которое находится по АДРЕСУ 0x22ff48
Сказать спасибо Ответить Цитировать

_ruzmaz_


Gold Member
# | Сообщение добавлено 12.07.2010 19:57:53
Отредактировано 12.07.2010 19:58:42 by _ruzmaz_
Все зависит от типа выражения после оператора <<
- если это указатель на int (в данном примере это b и &i), то выводится значение (в hex) адреса на который указывает указатель
- если это int (здесь это *b, i и 0x22ff48), то выводится значение этого выражения в dec
и т.д.
Чтобы выдавалось значение по адресу преобразовывай в int * и разыменовывай
cout << *(int*)0x22ff48 << "\n";
Сказать спасибо Ответить Цитировать

HACK_ER




Platinum Member
# | Сообщение добавлено 12.07.2010 22:28:28
_ruzmaz_, спасибо большое, теперь все работает!! я так понял, если C++ умеет работать на таком "слотовом" уровне, то и впринципе можно изменять значения в другой программе с помощью C++
Сказать спасибо Ответить Цитировать

_ruzmaz_


Gold Member
# | Сообщение добавлено 12.07.2010 22:57:44
HACK_ER

изменять значения в другой программе
что ты имеешь в виду? в другом процессе?
Сказать спасибо Ответить Цитировать

HACK_ER




Platinum Member
# | Сообщение добавлено 12.07.2010 23:52:29
Ну да, в другом процессе
Сказать спасибо Ответить Цитировать

_ruzmaz_


Gold Member
# | Сообщение добавлено 13.07.2010 00:21:16
Отредактировано 13.07.2010 00:22:53 by _ruzmaz_
напрямую менять не получица) по крайней мере в nt осях - все процессы выполняются в изолированных пространствах виртуальных адресов
используй api из kernel32.dll - OpenProcess, VirtualProtectEx, ReadProcessMemory, WriteProcessMemory
Сказать спасибо Ответить Цитировать

HACK_ER




Platinum Member
# | Сообщение добавлено 14.07.2010 01:37:24
а какие библиотеки нужно подключать, чтобы можно было воспользоваться этими функциями. Я просто новичек в этом деле))
Сказать спасибо Ответить Цитировать

_ruzmaz_


Gold Member
# | Сообщение добавлено 14.07.2010 12:14:31
windows.h нужно инклудить, из lib файлов ничего не надо (если через ide)
Сказать спасибо Ответить Цитировать

Страницы сообщения: [1] [2]
Только зарегистрированные пользователи могут оставлять сообщения в форуме

Зарегистрироваться *** Авторизоваться

 Последние новости и статьи  Последние сообщения с форумов
  • WhatsApp уверяет пользователей, что Facebook не имеет доступа к и...
  • Однострочная команда в Windows 10 может повредить жесткий диск с ...
  • Кардерский форум Joker’s Stash объявил о закрытии
  • Релиз ядра Linux 5.9
  • Российские хакеры вооружились уязвимостью Zerologon
  • Тысячи приватных звонков американских заключенных оказались в отк...
  • Шифровальщик атаковал немецкую компанию Software AG
  • Злоумышленники используют службу Windows Error Reporting для бесф...
  • Microsoft предупредила о вымогателях, которые выдают себя за МВД ...
  • Инфостилер Valak ворует информацию из почтовых систем Microsoft E...

    Все новости... Все статьи... Прислать новость RSS
  • Взлом и безопасность / Разное » Re: Помощь в скачивании платного файла
  • Взлом и безопасность / Разное » Помощь в скачивании платного файла
  • Разное / Куплю, приму в дар » куплю | ваш аккаунта | получение нового | описание внутри
  • Разное / Предложения работы » Специалиста
  • Downloads / Другое » Re: Нужна база емайл адресов юр. лиц
  • Downloads / Другое » Нужна база емайл адресов юр. лиц
  • Разное / Предложения работы » Нужен взлом mail и gmail почты
  • Взлом и безопасность / Разное » Re: Нужна помощь в скачивании файла
  • Взлом и безопасность / Разное » Нужна помощь в скачивании файла
  • Разное / Предложения работы » требуется взлом почт на постоянной основе

    Все форумы... RSS


  • Разместить рекламу
    © HackZone Ltd. 1996-2020. Все права зарегистрированы.
    Перепечатка материалов без согласования и указания источника будет преследоваться по Закону

    О проекте | История проекта | Размещение рекламы | Обратная связь | Правила поведения на портале
    contador de visitas счетчик посещений

    #{title}

    #{text}

    x

    #{title}

    #{text}