Сейчас на форуме: r0lka, johnniewalker, vsv1, NIKOLA (+4 невидимых)

 eXeL@B —› Крэки, обсуждения —› плагин ida pro
Посл.ответ Сообщение

Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 08 мая 2019 10:20
· Личное сообщение · #1

плагин ida pro


кто шарит в сборке плагина, нашел в инете учебник по плагинам для иды (http://www.binarypool.com/idapluginwriting/idapw.pdf) , там был пример написанный на с++, и вроде пытался собрать все по инструкции, но все равно выдает ошибки при сборке, всяко разно пробовал, мб кто уже сталкивался с такой проблемой, и расскажет что да как, или уже у кого то есть готовый собранный файл .plw . интересно просто посмотреть как это работает вообще.




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 08 мая 2019 11:01 · Поправил: plutos
· Личное сообщение · #2

Вот, возьми этот код за основу, а если будут ошибки, то пиши какие именно.

The simplest possible --> IDA plugin <--with multiple actions

Code:
  1. ##############################################################################
  2. #
  3. # Name: hello_world_plugin.py
  4. # Auth: @cmatthewbrooks
  5. # Desc: A test plugin to learn how to make these work; Specifically, how to
  6. #       have multiple actions within the same plugin.
  7. #
  8. #       In plain English, IDA will look for the PLUGIN_ENTRY function which
  9. #       should return a plugin object. This object can contain all the 
  10. #       functionality itself, or it can have multiple actions.
  11. #
  12. #       To register actions, use the idaaapi.register_action() function with
  13. #       an argument of type idaapi.action_desc_t.
  14. #
  15. #       A helpful hint from IDA support, don't register actions inside the
  16. #       Edit/Plugins sub-menu. It's dynamic and can be wiped out and built
  17. #       within a session. It's better to register actions' menu locations
  18. #       elsewhere.
  19. #
  20. #
  21. # With help from:
  22. # http://www.hexblog.com/?p=886
  23. # https://github.com/fireeye/flare-ida/blob/master/plugins/
  24. # https://github.com/mwrlabs/win_driver_plugin/
  25. #
  26. ##############################################################################
  27.  
  28.  
  29.  
  30. import idaapi
  31.  
  32.  
  33.  
  34. # Define callbacks which are the actions I actually
  35. # want to perform
  36.  
  37. def hello_mars():
  38.  
  39.     print('Hello Mars!')
  40.  
  41. def hello_earth():
  42.  
  43.     print('Hello Earth!')
  44.  
  45.  
  46. # Define the action_handler_t object that fires the
  47. # callback function when each action is activated
  48.  
  49. class ActionHandler(idaapi.action_handler_t):
  50.  
  51.     def __init__(self, callback):
  52.         
  53.         idaapi.action_handler_t.__init__(self)
  54.         self.callback = callback
  55.     
  56.     def activate(self, ctx):
  57.  
  58.         self.callback()
  59.         return 1
  60.  
  61.     def update(self, ctx):
  62.         
  63.         return idaapi.AST_ENABLE_ALWAYS
  64.  
  65.  
  66. # Define a method to register all the actions when
  67. # the plugin is initialized
  68.  
  69. def register_actions():   
  70.  
  71.     actions = [
  72.         {
  73.             'id': 'hello:earth',
  74.             'name': 'Hello Earth',
  75.             'hotkey': 'Ctrl+Alt+E',
  76.             'comment': 'Print Hello Earth',
  77.             'callback': hello_earth,
  78.             'menu_location': 'Edit/Hello World/Hello Earth'
  79.         },
  80.         {
  81.             'id': 'hello:mars',
  82.             'name': 'Hello Mars',
  83.             'hotkey': 'Ctrl+Alt+M',
  84.             'comment': 'Print Hello Mars',
  85.             'callback': hello_mars,
  86.             'menu_location': 'Edit/Hello World/Hello Mars'
  87.         }
  88.     ]
  89.  
  90.  
  91.     for action in actions:
  92.  
  93.         if not idaapi.register_action(idaapi.action_desc_t(
  94.             action['id'], # Must be the unique item
  95.             action['name'], # The name the user sees
  96.             ActionHandler(action['callback']), # The function to call
  97.             action['hotkey'], # A shortcut, if any (optional)
  98.             action['comment'] # A comment, if any (optional)
  99.         )):
  100.  
  101.             print('Failed to register ' + action['id'])
  102.  
  103.         if not idaapi.attach_action_to_menu(
  104.             action['menu_location'], # The menu location
  105.             action['id'], # The unique function ID
  106.             0):
  107.  
  108.             print('Failed to attach to menu '+ action['id'])
  109.  
  110.  
  111. # Define the plugin class itself which is returned by
  112. # the PLUGIN_ENTRY method that scriptable plugins use
  113. # to be recognized within IDA
  114.  
  115. class HelloWorldPlugin(idaapi.plugin_t):
  116.  
  117.     # Use the HIDE flag to avoid the entry in 
  118.     # Edit/Plugins since this plugin's run()
  119.     # method has no functionality...it's all
  120.     # in the actions.
  121.  
  122.     flags = idaapi.PLUGIN_HIDE
  123.     comment = 'A test plugin'
  124.     help = 'No help - this is just a test'
  125.     wanted_name = 'Hello World'
  126.     wanted_hotkey = ''
  127.  
  128.     def init(self):
  129.         print('HelloWorldPlugin init')
  130.         
  131.         register_actions()
  132.  
  133.         # Return KEEP instead of OK to keep the
  134.         # plugin loaded since it registers
  135.         # callback actions and hotkeys
  136.         #
  137.         # Use OK if the functionality is 
  138.         # all in the plugin and it does
  139.         # one thing then completes.
  140.         return idaapi.PLUGIN_KEEP
  141.  
  142.     def run(self, arg):
  143.         print('HelloWorldPlugin run')
  144.  
  145.     def term(self):
  146.         print('HelloWorldPlugin term')
  147.  
  148.  
  149. # The PLUGIN_ENTRY method is what IDA calls when
  150. # scriptable plugins are loaded. It needs to
  151. # return a plugin of type idaapi.plugin_t
  152.  
  153. def PLUGIN_ENTRY():
  154.     
  155.     try:
  156.         return HelloWorldPlugin()
  157.     
  158.     except Exception, err:
  159.         import traceback
  160.         print('Error: %s\n%s' % str((err), traceback.format_exc()))
  161.         raise
  162.  
  163.  


-----
Give me a HANDLE and I will move the Earth.


| Сообщение посчитали полезным: dma

Ранг: -12.6 (нарушитель), 11thx
Активность: 0.050.03
Статус: Участник

Создано: 08 мая 2019 17:48
· Личное сообщение · #3

pashtetizmoskvi пишет:
интересно просто посмотреть как это работает вообще


Серега, ты штоле? Ты штоле из Масквы?
Одно не закончил, за другое взялся?
Сори, если обознался.


Ссылки. Может пригодятся?

--> Пишем Ida Плагин дампа памяти — Ida Dump <--

--> Написание плагина — эмулирующего отладчика для дизассемблера IDA <--




Ранг: 170.1 (ветеран), 96thx
Активность: 0.090.01
Статус: Участник

Создано: 08 мая 2019 18:00
· Личное сообщение · #4

pashtetizmoskvi пишет:
готовый собранный файл .plw


Несколько старых примеров. SDK, наверняка, изменился.


bd9b_08.05.2019_EXELAB.rU.tgz - PLW.rar



Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 мая 2019 13:45
· Личное сообщение · #5

dma

Компиляция плагина в VS, так я тоже делал, как и разные примеры, все равно не выходит




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 10 мая 2019 22:08
· Личное сообщение · #6

pashtetizmoskvi пишет:
все равно не выходит


IDA 7.x VisualStudio 2017 --> Sample Project <--(works with Community Edition)

не знаю, какая у тебя студия, но этот проэкт работает даже с бесплатной Community Edition. Бери проэкт за основу и добавляй свой код, но не сразу весь, а по частям, периодически компеллируя. Если будут ошибки - сразу увидишь где именно.

-----
Give me a HANDLE and I will move the Earth.




Ранг: -4.4 (нарушитель)
Активность: 0.010.03
Статус: Участник

Создано: 20 мая 2020 17:20
· Личное сообщение · #7

а для 7-ый версий есть плагины Xbox 360 (Xex, PPC) ?



Ранг: 58.0 (постоянный), 13thx
Активность: 0.020.01
Статус: Участник

Создано: 20 мая 2020 20:31
· Личное сообщение · #8

AD010 пишет:
а для 7-ый версий есть плагины Xbox 360 (Xex, PPC) ?


А смысл? Это всё уже давно добавлено в саму иду.


 eXeL@B —› Крэки, обсуждения —› плагин ida pro
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати