Перевод - Введение в реверсинг с нуля, используя IDA PRO.

Тема в разделе "WASM.BEGINNERS", создана пользователем yashechka, 29 авг 2017.

  1. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    Это перевод моей стататьи с хабры, где я написал что окончил перевод.
    --- Сообщение объединено, 19 июн 2020 ---
    Вот она.
    https://sudonull.com/post/26011-Introduction-to-Reversing-from-Scratch-Using-IDA-PRO
    --- Сообщение объединено, 19 июн 2020 ---
    Я тебе скажу как нужно делать. Берешь книжку Подбельского Си, учишь си и одновременно прогоняешь через Иду и Олю и учишь одноврменно реверсингу. Потом как с Си закончил переходишь на Си++ от того же автора.
     
  2. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.574
    Тогда уж с Рихтера лучше.
     
    2Hard2Forget нравится это.
  3. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Начинать Рихтера не имея базы по окошкам и апи, ну такое себе...
     
  4. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.574
    ormoulu, тогда согласен. Хотя мне лично нравится вот эта книга https://www.twirpx.com/file/66754/ , как для самых-самых начинающих в винапи. Кстати, автор (уже покойный) какой-то русский препод.
     
  5. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.707
    кандидат педагогических наук, профессор НИЯУ МИФИ, автор свыше 100 научных работ, свыше 30 книг и учебных пособий, Финогенов Кирилл Григорьевич
     
    yashechka и M0rg0t нравится это.
  6. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.574
    Mikl___, спасибо, подробностей не знал, только что он уже умер вроде как. Книга очень хорошая, как раз вот с полного 0 объясняет устройство процессора, работу в Visual Studio / Borland C++, основы винапи.
     
    2Hard2Forget нравится это.
  7. Kulagin

    Kulagin New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2020
    Сообщения:
    8
    Спс за ответы.

    Я закончил читать learncpp.com пару месяцев назад. Сейчас у меня XAML, C#, WPF, MVVM, шаблоны проектирования и алгоритмы.
    Но я хочу не только уметь писать, но и реверсить, как CLR так и компилируемые программы на Windows.

    Никогда не слышал, но я себе записал.

    А с каких конкретно баз? Внутренности Windows и WinAPI? С этого надо начинать учить реверсинг? Есть вот такая серия книг Windows Internals:
    [​IMG]

    Я к ней еще нескоро доберусь т.к. WPF, шаблоны и алгоритмы.

    Для реверсинга на Windows я нигде не видел списка вещей, которые надо учить и в каком порядке. Как-то пробовал начинать читать Reverse Engineering для начинающих от Дениса Юревича, но я не осилил т.к. он не объясняет элементарных вещей, а сразу переходит к более продвинутым. В первом же примере в книге я не смог найти в IDA функцию main без debug symbols и на этом чтение закончилось. Но как мне научиться, если я не знаю, а он в первом же примере и не объясняет, как эту функцию найти.
     
  8. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.707
    Kulagin,
    читай все подряд из раздела WASM --> публикации, через месяц получишь доступ к WASM -->ресурсы, там полно тематических книг
     
    Kulagin нравится это.
  9. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.574
    Эта книга не по программированию, а по устройству винды. Читать ее, конечно же, надо. Но для начинающего толку мало, нужна практика.

    Потому что его нет, каждый учит как хочет. Один скажет так, другой иначе, один начинал с такой базой.. Лично мне нравятся уроки Нарвахи, по Олли и по Ида. Там именно изучаются основы ассемблера, некоторые винапи и прочее. Но уроки по олли нужно проходить на Windows XP, да и вообще, лучше все тестить там, или на 32 битной семерке с отключеным юак.
     
    Kulagin нравится это.
  10. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Петзольд Чарльз ("Программирование для Windows 95" Том 1, Том 2) и Икзелион (https://wasm.in/blogs/category/uroki-iczeliona.2/?order=likes) дают в разжеваном виде детские вещи по окнам и оконным процедурам, обработке сообщений и вообще основам использования WinAPI. С них кмк лучше и начать. Разница между ними в том, что у Петзольда академическое изложение с примерами на си, а Икзелион это "уроки для нубов" сразу на ассемблере.
    Джеффри Рихтер ("Windows для профессионалов") это уже более продвинутый уровень, где объясняются некоторые специфические вещи касательно памяти, процессов, синхронизации. Можно дополнить его же "Программирование серверных приложений для Microsoft Windows 2000".
    "Руссинович"/"Windows Internals" это периодически обновляемый талмуд высшего уровня, который вам потребуется иметь под рукой, если уже вплотную/профессионально займетесь реверсом под винду или системным программированием.
    --- Сообщение объединено, 20 июн 2020 ---
    Да, у Икзелиона есть серия по Win32 API, аналог Петзольда, и серия по формату PE, которую можно начинать после понимания WinAPI. На сайте они похоже вперемешку.
     
    Последнее редактирование: 20 июн 2020
    Kulagin нравится это.
  11. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
  12. Kulagin

    Kulagin New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2020
    Сообщения:
    8
    Спасибо за перевод, yashechka. Начал читать наконец-то.

    Не мог найти файлы примеров, про присутствие которых в туториале говорится в русской и английских версиях.

    Лазил по испанскому сайту оригинального автора, наконец-то нашел. IMHO, стоит добавить ссылку про оригинальные файлы примеров по адресу: http://ricardonarvaja.info/WEB/IDA DESDE CERO/ARCHIVOS NECESARIOS PARA LOS TUTES/ в первом посте в этой теме, а также в первой лекции, где присутствует текст:"После установки, загрузим крэкме Cruehead, он идет вместе с этим туториалом".

    В теме с первой лекцией ссылки на файлы примеров мертвые.

    Также заметил, что casojatah сделал зеркало на гитхабе. Там тоже нет ссылки на файлы примеров. Сделал пулл реквест на гитхабе: https://github.com/yutewiyof/intro-rev-ida-pro/pull/6

    Это надвигает на мысль, что, возможно, все это дело можно делать(переводить и правки вносить) на гитхабе, чтобы читатели могли предлагать правки при помощи пулл реквестов. Пища для размышлений.

    А я пойду пока что дальше читать с файлами примеров.
     
  13. dev0id

    dev0id New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2021
    Сообщения:
    1
    вот копия на гитхабе, там есть все нужные файлы
    https://github.com/hdbreaker/RicardoNarvaja_ExploitingWithIDAPRO_Desde0
     
  14. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.235
    Есть платформа gitbook.com, которая по сути решает именно эту проблему.
     
  15. texaciri

    texaciri Member

    Публикаций:
    0
    Регистрация:
    27 янв 2018
    Сообщения:
    58
    Там овердохрена ограничений. раньше, на старой версии еще для старых аккаунтов было лучше. Собственно по ссылке выше так и сделано. Гитбук подтягивает с гитхаба https://yutewiyof.gitbook.io/intro-rev-ida-pro/ https://backoftut.gitbook.io/intro-cracking-with-ollydbg/
    Не гитбук версии не зря ссылки на оригинал в конце каждой главы были. Но Нарваха их "попраивл", и теперь всё поломалось. Так что давать ссылки бесполезно. Надо именно бинарниги грузить в гит https://github.com/yutewiyof/intro-rev-ida-pro по аналогии с https://github.com/yutewiyof/intro-cracking-with-ollydbg
     
  16. Kulagin

    Kulagin New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2020
    Сообщения:
    8
    Keypatch не работает чет.

    Windows 10 x64. IDA 7.2.

    На гитхабе keypatch'а пишет:
    У меня по стандарту дефолтный python.exe и pip.exe - это 2.7 версии в папке Python27/. Также установлены версии 3.6.5 и 3.9. Я уже не помню, чему нужно было эти версии.

    Т.е. говорит, что достаточно просто ввести `pip install keystone-engine`. Path у меня настроены нормально: питон видит и папка Scripts тоже есть в Path. Keystone, вроде, был установлен нормально:
    [​IMG]
    Keystone и Core есть в нужной папке с либами:
    [​IMG]
    Далее говорится, что нужно следовать инструкции во второй части:
    VC++ Redistributable 2013 у меня установлены. Я скачал по указанной ссылке и мне предложило удалить или отремонтировать.

    keypatch.py скопировал в папку Plugins, где у меня IDA 7.2:
    [​IMG]
    После перезапуска IDA меню keypatch'а, как в туториале:
    [​IMG]
    У меня нет:
    [​IMG]
    Подскажите, если кто знает, в чем проблема? Мб я не в том питоне установил этот keystone engine или мб это что-то связанное с 64 бит системой и 32 бит IDA. Там в аппендиксе гитхаба кейпатча говорится же, что есть проблема:
     
    Последнее редактирование: 17 фев 2021
  17. texaciri

    texaciri Member

    Публикаций:
    0
    Регистрация:
    27 янв 2018
    Сообщения:
    58
    Kulagin, не помню уже, очень давно это стаивл. но там кажется проблема была в том, что что то не туда устанавливалось. В 10ке же более жесткое разграничение на пользователей и админов, и не дают ставить всё подряд в програмфайлс, и вот улетало вместо того куда надо, в пользовательскую папку. И решалось то ли принудительным перемещением из пользовательской в папку приложения, то ли наоборот. (вроде еще конкретную версию подбирал с сайта)
    (а может я уже путаю с чем то другим)
    Дальше будет еще свистопляска с установкой IPYIDA. На гитбуке вроде уже поправлена инструкция была.

    Собственно это один из минусов курсов от нарвахи. Он всегда сразу, прям с ходу ударятся во всякие сторонние примочки, причем даже в случаях когда ими надо полтора раза воспользоваться.
    --- Сообщение объединено, 17 фев 2021 ---
    UPD: похоже я все же перепутал. достал хард от ноута, глянул, там просто установлена IDA 6.8 которая была изначально в курсе
    --- Сообщение объединено, 17 фев 2021 ---
    UPD2: имхо, но курс по ольке, несет куда больше практического смысла чем по IDA. И подача материала там ровнее.
     
    Последнее редактирование: 17 фев 2021
  18. Kulagin

    Kulagin New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2020
    Сообщения:
    8
    Так а у Вас этот keypatch работает на IDA 6.8? Я тогда мб поставлю себе эту 6.8 версию и скачаю с гугл диска ту версию кейпатча, что он предоставляет. И там еще в то время был msi инсталлятор:
    [​IMG]
    А сейчас уже установка только через pip, как я понял.

    Вот лог запуска IDA с этим кейпатчем:
    Код (Text):
    1.  
    2. G:\Programs\Reversing\IDA 7.2\plugins\secur32.dll: incompatible plugin version, skipped
    3.   bytes   pages size description
    4. --------- ----- ---- --------------------------------------------
    5.    262144    32 8192 allocating memory for b-tree...
    6.     65536     8 8192 allocating memory for virtual array...
    7.    262144    32 8192 allocating memory for name pointers...
    8. -----------------------------------------------------------------
    9.    589824            total memory allocated
    10. Loading processor module G:\Programs\Reversing\IDA 7.2\procs\pc.dll for metapc...OK
    11. Loading type libraries...
    12. Autoanalysis subsystem has been initialized.
    13. G:\Programs\Reversing\IDA 7.2\plugins\keypatch.py: No module named six
    14. Traceback (most recent call last):
    15.   File "G:\Programs\Reversing\IDA 7.2\python\ida_idaapi.py", line 572, in IDAPython_ExecScript
    16.     execfile(script, g)
    17.   File "G:/Programs/Reversing/IDA 7.2/plugins/keypatch.py", line 56, in <module>
    18.     import six
    19. ImportError: No module named six
    20. G:\Programs\Reversing\IDA 7.2\plugins\secur32.dll: incompatible plugin version, skipped
    21. Database for file 'CRACKME.EXE' has been loaded.
    22. Hex-Rays Decompiler plugin has been loaded (v7.0.0.170914)
    23.   The hotkeys are F5: decompile, Ctrl-F5: decompile all.
    24.   Please check the Edit/Plugins menu for more informaton.
    25. IDAPython Hex-Rays bindings initialized.
    26. G:\Programs\Reversing\IDA 7.2\plugins\keypatch.py: No module named six
    27. Traceback (most recent call last):
    28.   File "G:\Programs\Reversing\IDA 7.2\python\ida_idaapi.py", line 572, in IDAPython_ExecScript
    29.     execfile(script, g)
    30.   File "G:/Programs/Reversing/IDA 7.2/plugins/keypatch.py", line 56, in <module>
    31.     import six
    32. ImportError: No module named six
    33. G:\Programs\Reversing\IDA 7.2\plugins\secur32.dll: incompatible plugin version, skipped
    34. ---------------------------------------------------------------------------------------
    35. Python 2.7.18 (v2.7.18:8d21aa21f2, Apr 20 2020, 13:25:05) [MSC v.1500 64 bit (AMD64)]
    36. IDAPython v1.7.0 final (serial 0) (c) The IDAPython Team <idapython@googlegroups.com>
    37. ---------------------------------------------------------------------------------------
    38.  
    Это с 64-битным Питоном. Пробовал установить 32-бит Питон, тогда такой лог:
    Код (Text):
    1. G:\Programs\Reversing\IDA 7.2\plugins\secur32.dll: incompatible plugin version, skipped
    2.  
    3.   bytes   pages size description
    4. --------- ----- ---- --------------------------------------------
    5.    262144    32 8192 allocating memory for b-tree...
    6.     65536     8 8192 allocating memory for virtual array...
    7.    262144    32 8192 allocating memory for name pointers...
    8. -----------------------------------------------------------------
    9.    589824            total memory allocated
    10.  
    11. Loading processor module G:\Programs\Reversing\IDA 7.2\procs\pc.dll for metapc...OK
    12. Loading type libraries...
    13. Autoanalysis subsystem has been initialized.
    14. G:\Programs\Reversing\IDA 7.2\plugins\keypatch.py: DLL load failed: %1 is not a valid Win32 application.
    15. Traceback (most recent call last):
    16.   File "G:\Programs\Reversing\IDA 7.2\python\ida_idaapi.py", line 572, in IDAPython_ExecScript
    17.     execfile(script, g)
    18.   File "G:/Programs/Reversing/IDA 7.2/plugins/keypatch.py", line 23, in <module>
    19.     from keystone import *
    20.   File "C:\Python27\lib\site-packages\keystone\__init__.py", line 4, in <module>
    21.     from .keystone import Ks, ks_version, ks_arch_supported, version_bind, debug, KsError, __version__
    22.   File "C:\Python27\lib\site-packages\keystone\keystone.py", line 10, in <module>
    23.     from ctypes import *
    24.   File "C:\Python27\Lib\ctypes\__init__.py", line 7, in <module>
    25.     from _ctypes import Union, Structure, Array
    26. ImportError: DLL load failed: %1 is not a valid Win32 application.
    27.  
    28. G:\Programs\Reversing\IDA 7.2\plugins\secur32.dll: incompatible plugin version, skipped
    29. Database for file 'CRACKME.EXE' has been loaded.
    30. Hex-Rays Decompiler plugin has been loaded (v7.0.0.170914)
    31.   The hotkeys are F5: decompile, Ctrl-F5: decompile all.
    32.   Please check the Edit/Plugins menu for more informaton.
    33. IDAPython Hex-Rays bindings initialized.
    34. G:\Programs\Reversing\IDA 7.2\plugins\keypatch.py: cannot import name arm_const
    35. Traceback (most recent call last):
    36.   File "G:\Programs\Reversing\IDA 7.2\python\ida_idaapi.py", line 572, in IDAPython_ExecScript
    37.     execfile(script, g)
    38.   File "G:/Programs/Reversing/IDA 7.2/plugins/keypatch.py", line 23, in <module>
    39.     from keystone import *
    40.   File "C:\Python27\lib\site-packages\keystone\__init__.py", line 2, in <module>
    41.     from . import arm_const, arm64_const, mips_const, sparc_const, hexagon_const, systemz_const, ppc_const, x86_const
    42. ImportError: cannot import name arm_const
    43.  
    44. G:\Programs\Reversing\IDA 7.2\plugins\secur32.dll: incompatible plugin version, skipped
    45. ---------------------------------------------------------------------------------------
    46. Python 2.7.18 (v2.7.18:8d21aa21f2, Apr 20 2020, 13:25:05) [MSC v.1500 64 bit (AMD64)]
    47. IDAPython v1.7.0 final (serial 0) (c) The IDAPython Team <idapython@googlegroups.com>
    48. ---------------------------------------------------------------------------------------
    --- Сообщение объединено, 18 фев 2021 ---
    Проблема была в том, что с какого-то времени, очевидно, keypatch использует библиотеку Six. Установил Six: pip install six. Заработало.
    [​IMG]
     
    texaciri нравится это.
  19. Kulagin

    Kulagin New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2020
    Сообщения:
    8
    В 11 части почему-то не выставляется OF при добавлении add eax, 1, когда eax = 0xFFFFFFFF.

    А, я не то значение вводил. Должно было быть 0x7FFFFFFF.