Форум программистов, компьютерный форум CyberForum.ru

Чтение строки из памяти - C++

Восстановить пароль Регистрация
 
NoobIsCome
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 12
13.08.2012, 14:11     Чтение строки из памяти #1
Пытаюсь обратиться к оперативной памяти и прочитать оттуда строку

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
           char fullChar[256] = "";
           char tempChar = ' ';
           int i = 0;
           while(tempChar != '\0' && i<255)
           {
               memcpy(&tempChar, &*(DWORD*)(BAZE+i), sizeof(char));
               fullChar[i] = tempChar;
               i++;
           }
           PipeSendSTR(fullChar); // отсылаем строку через пайп
 
void PipeSendSTR(char* a)
{
// конвертируем строку в WCHAR
    wchar_t buffer [257];
    wsprintf(buffer, L"SRTING=%ws\n", a);
    unsigned long ulBytesWritten = 0;
    WriteFile( hNamedPipe2, &buffer, sizeof(buffer), &ulBytesWritten, NULL );
}
приходит STRING="китайские символы", видимо не так читаю память, помогите пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2012, 14:11     Чтение строки из памяти
Посмотрите здесь:

C++ чтение из памяти
Чтение участка памяти C++
C++ tbb parallel_for чтение одного участка памяти разными потоками
C++ Чтение памяти ( поиск функций )
Чтение памяти не возможно C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127
13.08.2012, 14:43     Чтение строки из памяти #2
Цитата Сообщение от NoobIsCome Посмотреть сообщение
wsprintf(buffer, L"SRTING=%ws\n", a);
Почему у вас переменная a типа char форматируется в %ws функций wsprintf (для юникода)?
NoobIsCome
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 12
13.08.2012, 15:45  [ТС]     Чтение строки из памяти #3
дело в том что программа на том конце пайпа читает именно в юникод строку.
поэтому перед тем как ей отправить я переконвертирую строку в юникод
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127
13.08.2012, 16:01     Чтение строки из памяти #4
А что такое %ws?
NoobIsCome
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 12
13.08.2012, 17:27  [ТС]     Чтение строки из памяти #5
Цитата Сообщение от cossack5 Посмотреть сообщение
А что такое %ws?

загоняет в buffer - a как юникод строку , замена на %s тоже не давала результата
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127
13.08.2012, 19:03     Чтение строки из памяти #6
Цитата Сообщение от NoobIsCome Посмотреть сообщение
загоняет в buffer - a как юникод строку
Дайте мне ссылку на такое, я этого не знаю.
Преоразование можно сделать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
std::wstring strtowstr(const std::string &str)
{
    // Convert an ASCII string to a Unicode String
    std::wstring wstrTo;
    wchar_t *wszTo = new wchar_t[str.length() + 1];
    wszTo[str.size()] = L'\0';
    MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, wszTo, (int)str.length());
    wstrTo = wszTo;
    delete[] wszTo;
    return wstrTo;
}
void PipeSendSTR(char* a)
{
// конвертируем строку в WCHAR
std::string ToConv=a;
std::wstring ws=strtowstr(ToConv);
    WriteFile( hNamedPipe2,ws.c_str(), ws.length(), &ulBytesWritten, NULL );
}
NoobIsCome
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 12
13.08.2012, 19:56  [ТС]     Чтение строки из памяти #7
Цитата Сообщение от cossack5 Посмотреть сообщение
Дайте мне ссылку на такое, я этого не знаю.
ни %ws ни %wZ нет в доках , но иногда проскакивает в примерах
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

еще http://stackoverflow.com/questions/4...ecification-ws
Цитата Сообщение от cossack5 Посмотреть сообщение
Преоразование можно сделать так:
не работает(( перестал вообще присылать текст \текст ошибки дать не могу(

память я читаю точно правильно?
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127
13.08.2012, 20:09     Чтение строки из памяти #8
что такое BASE у вас в коде?
NoobIsCome
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 12
13.08.2012, 21:21  [ТС]     Чтение строки из памяти #9
Цитата Сообщение от cossack5 Посмотреть сообщение
что такое BASE у вас в коде?
там лежит адрес ячейки памяти которую необходимо прочитать
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127
13.08.2012, 21:34     Чтение строки из памяти #10
Покажите больше кода.
NoobIsCome
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 12
13.08.2012, 21:53  [ТС]     Чтение строки из памяти #11
Пожалуйста, вот функция целиком
ReadSTR(базовый адресс,оффсет,оффсет....и т.д.)

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void ReadSTR(wchar_t chRequest[]) // строка BASE,OFFSETS
{
 
  wchar_t* wpSubstring = wcstok(chRequest, L",");
  signed int BAZE=0; 
  while (wpSubstring) {
       signed int Offset; 
       swscanf_s(wpSubstring, L"%x", &Offset);
       if(BAZE==0)
       {
            BAZE=Offset;
       }
       else
       {
            if (IsBadReadPtr((LPVOID)(*(DWORD*)(BAZE)+Offset), 4)){PipeSend(0);return ;}
            BAZE=(*(DWORD*)(BAZE)+Offset);
       }
        wpSubstring = wcstok(NULL, L",");
   }
 
            
           wchar_t fullChar[256] = L"";
           char tempChar = ' ';
           int i = 0;
           while(tempChar != '\0' && i<255)
           {
               memcpy(&tempChar, &*(DWORD*)(BAZE+i), sizeof(char));
               fullChar[i] = tempChar;
               i++;
           }
           PipeSendSTR(fullChar);
          //  PipeSend(0);
}
BAZE- указывает правильно значение , проверял несколько раз
NoobIsCome
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 12
15.08.2012, 16:01  [ТС]     Чтение строки из памяти #12
Всем спасибо я разобрался!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2012, 21:22     Чтение строки из памяти
Еще ссылки по теме:

C++ Чтение непосредственного значения из памяти
Чтение памяти невозможно C++
Процессы, чтение памяти - не работает код C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
sq58
Сообщений: n/a
29.11.2012, 21:22     Чтение строки из памяти #13
И в чем дело было?
Yandex
Объявления
29.11.2012, 21:22     Чтение строки из памяти
Ответ Создать тему
Опции темы

Текущее время: 20:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru