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

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

 eXeL@B —› Основной форум —› Разбор объёмных структур. Делимся опытом и советами
Посл.ответ Сообщение


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

Создано: 10 марта 2013 21:16 New!
Цитата · Личное сообщение · #1

Приветствую! Наверняка многим приходилось реверсить приложения, где используются большие, вложенные пользовательские структуры. В моём случае в приложении инициализируются несколько одинаковых структур с большим количеством полей. Поля в структуре заполняются в разных местах проги и не подряд. Задача состоит в том чтобы полностью повторить эту структуру и скормить её IDA. Если бы структура заполнялась в одном месте и подряд, проблем особых небыло бы.
Суть проблемы, думаю ясна. Есть ли какие-то проги, помогающие разбирать и строить структуры?


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

Создано: 10 марта 2013 21:33 New!
Цитата · Личное сообщение · #2

нет
но в hexrays есть пункт создать структуру по указателю
я ей никогда не пользуюсь потому что создает убого и отвратно, ее работу показывали в каком то видео на hexblog

хотя лучше вручную набрать, если уметь - то получается быстро

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

Создано: 10 марта 2013 21:37 New!
Цитата · Личное сообщение · #3

Идой ручками.
Создаешь пустую структуру нужного размера без внутренних полей. Только с полями-ограничителями, чтобы размер соответствовал. По мере выяснения полей именуешь их - ида автоматически добавит поля по нужному смещению.


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

Создано: 10 марта 2013 21:39 New!
Цитата · Личное сообщение · #4

reversecode
Да, умеет создавать, и даже можно было бы смириться с убогостью, но это происходит в пределах одной функции, так что не используемая часть структуры обозначаются массивами байтовыми для заполнения пустот. А руками заполнять не очень легко, если размер структуры =0x2A8D байт


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

Создано: 10 марта 2013 21:43 · Поправил: reversecode New!
Цитата · Личное сообщение · #5

да, не заполненые поля, заполняются байтовый массив
можете сделать их dword овыми
и опять преобразовать в массив
а вы хотели всю структуру одними dword полями?

изучайте данные в той структуре
иногда получается вложеными структурами быстрее ее наполнить, если формат их одинаков
например массив каких то векторов
где вектор по 0x20 или 0x24 сайза
и тогда уже наложив структуру можно из нее массив сделать в Н елементов

daFix пишет:
0x2A8D

это вообще мало

вот к примеру тоже не очень большие и уже разобраные
00000000 xxxx_t struc ; (sizeof=0x38828) ; XREF: xxxx_tr
или в том же проекте
00000000 yyyy_t struc ; (sizeof=0x56DC) ; XREF: .data:_yyyy_ctx


Ранг: 135.7 (ветеран)
Статус: Участник
Qt Developer

Создано: 10 марта 2013 22:08 · Поправил: hors New!
Цитата · Личное сообщение · #6

daFix пишет:
Суть проблемы, думаю ясна. Есть ли какие-то проги, помогающие разбирать и строить структуры?


Не совсем понятно на каком принципе эти проги, если бы они существовали, работали. А так структуры в ида заполняются только вручную, по мере исследования. Если есть pdb(случайно ), то структуры можно выдернуть этой программой --> Link <--


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

Создано: 10 марта 2013 22:16 New!
Цитата · Личное сообщение · #7

hors пишет:
Если есть pdb(случайно ), то структуры можно выдернуть этой программой --> Link <--

6.3 демо помоему умеет уже это нормально дергать без сторонних плагинов


Ранг: 135.7 (ветеран)
Статус: Участник
Qt Developer

Создано: 10 марта 2013 22:40 · Поправил: hors New!
Цитата · Личное сообщение · #8

reversecode пишет:
6.3 демо помоему умеет уже это нормально дергать без сторонних плагинов


Не, IDA 6.3 demo извлекает не всё. Сейчас специально проверил.


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

Создано: 10 марта 2013 22:51 New!
Цитата · Личное сообщение · #9

а дайте файлик на каком проверяли и что не извлекло скажите


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

Создано: 10 марта 2013 22:53 New!
Цитата · Личное сообщение · #10

hors пишет:
Не совсем понятно на каком принципе эти проги, если бы они существовали, работали

Да и мне не совсем понятно)) Как вариант - прога, в которую указываешь размерность массива, создаётся массив байт, потом по мере определения полей, вписываешь имя элемента, размерность и адрес, а прога сама перестраивает структуру с учётом новых изменений. Всё это конечно и руками делается не плохо, но слишком муторно и начинаешь путаться, когда структура разрастается.
Сейчас голова не работает, болею, поэтому могу тормозить


Ранг: 135.7 (ветеран)
Статус: Участник
Qt Developer

Создано: 10 марта 2013 22:59 New!
Цитата · Личное сообщение · #11

reversecode пишет:
а дайте файлик на каком проверяли и что не извлекло скажите


http://rghost.ru/44409985

В файле ntdll.h все что должно быть.


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

Создано: 10 марта 2013 23:15 New!
Цитата · Личное сообщение · #12

hors пишет:
http://rghost.ru/44409985
В файле ntdll.h все что должно быть.

да вижу
уже на начале
SECURITY_IMPERSONATION_LEVEL
ида пропустила enum тип и не распарсила с pdb
файлы по разнице в два раза по размеру отличаются, в IDA соответсвенно меньше
 eXeL@B —› Основной форум —› Разбор объёмных структур. Делимся опытом и советами

Видеокурс ВЗЛОМ