eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Вопросы новичков —› ASCII значение в OllyDbg это ANSI? И как сделать из нее Unicode
Посл.ответ Сообщение

Ранг: 1.6 (гость)
Статус: Участник

Создано: 2 августа 2013 14:10 New!
Цитата · Личное сообщение · #1

Я отлаживаю программу,некорректно выводящую текстовую информацию. Проблемная строка в OllyDbg отображается как ASCII, а то что выводится корректно - Unicode.
ASCII это и есть обычный Multibyte Char или нет?

Ранг: 33.9 (посетитель)
Статус: Участник

Создано: 2 августа 2013 14:38 · Поправил: dant3 New!
Цитата · Личное сообщение · #2

в ASCII под символ отводится байт, в Multibyte Char по названию должно быть понятно, что полюбасу не один, а теперь вопрос: как вы думаете это одно и тоже или нет?


Ранг: 533.6 (!)
Статус: Uploader
retired

Создано: 2 августа 2013 14:52 New!
Цитата · Личное сообщение · #3

dant3 пишет:
Multibyte Char по названию должно быть понятно, что полюбасу не один

Не полюбасу, он может быть от одного и более.

Ранг: 1.6 (гость)
Статус: Участник

Создано: 2 августа 2013 15:06 New!
Цитата · Личное сообщение · #4

Тип переменной: DhcpServer: IP_ADDR_STRING ,не получается преобразовать её в текстовый формат.
Вот такой код не работает:
Code:
  1. TmpPointer: PIP_ADAPTER_INFO;
  2. IP_ADDRESS_STRING = record
  3.     S: array [0..15] of Char;
  4.   end;
  5. IpAddress: IP_ADDRESS_STRING;
  6. ShowMessage(TmpPointer^.DhcpServer.IpAddress.s)

Ранг: 33.9 (посетитель)
Статус: Участник

Создано: 2 августа 2013 15:40 New!
Цитата · Личное сообщение · #5

BoRoV пишет:
Не полюбасу, он может быть от одного и более.

Надо полагать в данном случае больше одного ;)


Ранг: 237.0 (наставник)
Статус: Участник
sysenter

Создано: 2 августа 2013 16:56 · Поправил: HiEndsoft New!
Цитата · Личное сообщение · #6

Multibyte Char = Многобайтная кодировка = ASCII = Строка char, оканчивающаяся нулём.
Wide char = Unicode ...
В ольке по правой кнопке мыши есть в менюшке переключение ASCII<->UNICODE.

Ранг: 1.6 (гость)
Статус: Участник

Создано: 2 августа 2013 16:59 New!
Цитата · Личное сообщение · #7

Ну а какую функцию надо в Делфях применить,чтобы эта строка в дебаггере стала отображаться как Unicode? MultibyteToWideChar? Я делал StringToWideChar - ноль эффекта


Ранг: 237.0 (наставник)
Статус: Участник
sysenter

Создано: 2 августа 2013 17:00 New!
Цитата · Личное сообщение · #8

Да API MultibyteToWideChar.


Ранг: 296.9 (наставник)
Статус: Участник

Создано: 2 августа 2013 22:24 · Поправил: DenCoder New!
Цитата · Личное сообщение · #9

HEXMature
--> Была же тема<--. Искать надо лучше. Тебе оттуда нужен первый пример, только CP_ACP вместо CP_UTF8

Code:
  1. int wlen = MultiByteToWideChar(CP_ACP, 0, sAscii, -1, NULL, 0);
  2. wchar_t* wtmp = new wchar_t[wlen];
  3. MultiByteToWideChar(CP_ACP, 0, sAscii, -1, wtmp, wlen);

Ранг: 1.6 (гость)
Статус: Участник

Создано: 5 августа 2013 10:37 New!
Цитата · Личное сообщение · #10

Не пашет,в дебаггере видно что входное значение берет не из той ячейки (сдвинуто на 2 влево):
Code:
  1.  gatewide:PWideChar;
  2.     MultibyteToWideChar(CP_ACP,0,@TmpPointer^.GatewayList.IpAddress,MAX_PATH,&gatewide,0);
  3.      ShowMessage('Шлюз: '+gatewide);

Ранг: 1.6 (гость)
Статус: Участник

Создано: 5 августа 2013 11:07 New!
Цитата · Личное сообщение · #11

Вот картинка из отладчика:


Не понимаю,какого хрена ничего не получается. Выводит либо квадратики,либо пустую строку

Ранг: 617.3 (!)
Статус: Участник

Создано: 5 августа 2013 11:08 New!
Цитата · Личное сообщение · #12

Функция StringToWideChar( const Source: string; Dest: PWideChar; DestSize: Integer ): PWideChar;

Модуль: System

Описание
Функция преобразовывает строку Source формата ANSI в Unicode-строку.
Параметр Dest указывает на буфер, в который будет помещена результирующая строка.
DestSize - размер буфера.
Функция помещает в буфер DestSize-1 символ и символ окончания строки. В качестве результата функция возвращает указатель на буфер Dest.

******

Функция WideCharToString( Source: PWideChar ): string;

Модуль: System

Описание
Функция преобразовывает Unicode строку в ANSI-формат. Для преобразования строк данная функция использует вызов функции WideCharToMultiByte Win32 API. Результирующая строка может содержать как одиночные, так и многобайтовые символы.


Ранг: 534.2 (!)
Статус: Участник
оптимист

Создано: 5 августа 2013 11:20 · Поправил: ClockMan New!
Цитата · Личное сообщение · #13

Попробуй в ольке поставить галочки здесь
Debbugin options>strings>Allow Diacritical symbols.

Ранг: 1.6 (гость)
Статус: Участник

Создано: 5 августа 2013 12:26 · Поправил: HEXMature New!
Цитата · Личное сообщение · #14

Vovan666
Так тоже не работает:
Code:
  1. StringToWideChar(TmpPointer^.GatewayList.IpAddress.s,gatewide,MAX_PATH);

И @gatewide, и &gatewide пробовал - выводит пустую строку.

В аттаче короче исходник (оригинал), там под 7-ю версию компилировалось нормально.

{ Атач доступен только для участников форума } - Unit1.pas


Ранг: 1986.7 (!!!!)
Статус: Модератор
retired

Создано: 5 августа 2013 13:17 New!
Цитата · Личное сообщение · #15

И при чём здесь этот форум, если не в состоянии вызвать 1-2 апи?
 eXeL@B —› Вопросы новичков —› ASCII значение в OllyDbg это ANSI? И как сделать из нее Unicode
Эта тема закрыта. Ответы больше не принимаются.

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS