用python编写第一个IDA插件的实例

IDA插件是经过编译的、功能更强大的IDC脚本,与仅仅使用脚本相比,插件能够执行更加复杂的任务。与编写IDC脚本相比,python显得更为轻巧和强大,IDAPython作为IDA的一个插件,具有IDA SDK的大部分功能,能够帮助我们编写实现IDC脚本语言所有功能的python脚本。

本文将以一个简单的例子开始展示如何使用python编写并安装一个IDA插件。

1、编写插件文件msg.py

from idaapi import *
class myIdaPlugin(plugin_t):
 flags=0
 wanted_name="my ida plugin"
 wanted_hotkey="F1"
 comment="my ida plugin"
 help="Something helpful"
 def init(self):
  msg("Ida plugin init called.\n")
  return PLUGIN_OK
 def term(self):
  msg("Ida plugin term called.\n")
 def run(self,arg):
  warning("Ida plugin run(%d) called.\n"%arg)
def PLUGIN_ENTRY():
 return myIdaPlugin()

2、将msg.py文件置于IDADIR/plugins目录,修改IDADIR/plugins/plugins.cfg文件,将plug_name 值设置为IDA菜单栏显示的菜单,plugin_file值设为msg.py文件全称,记得带上扩展名,否则是系统默认的.plw或.p64,保存后重启IDA即可。

以上这篇用python编写第一个IDA插件的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 使用Python编写vim插件的简单示例

    Vim 插件是一个 .vim 的脚本文件,定义了函数.映射.语法规则和命令,可用于操作窗口.缓冲以及行.一般一个插件包含了命令定义和事件钩子.当使用 Python 编写 vim 插件时,函数外面是使用 VimL 编写,尽管 VimL 学起来很快,但 Python 更加灵活,例如可以用 urllib/httplib/simplejson 来访问某些 Web 服务,这也是为什么很多需要访问 Web 服务的插件都是使用 VimL + Python 编写的原因. 在开始编写插件之前,你需要确认 Vim

  • python实现sublime3的less编译插件示例

    利用http://tool.oschina.net/less 提供的接口,发送请求进行远程编译.再将编译好的less,保存为同名后缀为css的文件中.第一次使用python,代码也是拼拼凑凑的.需要加上线程进行异步请求,但是不会... 复制代码 代码如下: import sublime, sublime_pluginimport urllibimport json class exampleCommand(sublime_plugin.TextCommand): def run(self, ed

  • 使用Python的Flask框架表单插件Flask-WTF实现Web登录验证

    表单是让用户与我们的网页应用程序交互的基本元素.Flask 本身并不会帮助我们处理表单,但是 Flask-WTF 扩展让我们在我们的 Flask 应用程序中使用流行的 WTForms 包.这个包使得定义表单和处理提交容易一些. Flask-WTF 我们想要使用 Flask-WTF 做的第一件事情(在安装它以后,GitHub项目页:https://github.com/lepture/flask-wtf )就是在 myapp.forms 包中定义一个表单. # ourapp/forms.py fr

  • 使用python开发vim插件及心得分享

    vim有各种强大的插件,这不仅归功于其提供的用来编写插件的脚本语言vimL,还得益于它良好的接口实现,从而支持python等语言编写插件.当vim编译时带有+python特性时就能使用python2.x编写插件,+python3则支持python3.x,可以使用vim --version来查看vim的编译特性. 要使用python接口,可以用:h python来查看vim提供的帮助文档,本文做一个简单的介绍.我们都知道在vim里可以执行bash命令,只需要:!command即可,那么vim里可以

  • python3实现读取chrome浏览器cookie

    好几年前我在做一些自动化的脚本时,脑子里也闪过这样的想法:能不能直接把浏览器的cookies取出来用呢? 直到昨天看到代码<python模拟发送动弹>,想起来当年我也曾经有类似的想法没能完成,那就优先拿这个练手,之后的代码也会用这个功能. 直接从浏览器中取出cookies,有以下好处和用途: 1.不需要配置用户密码,直接读出浏览器中cookies就得到一样的身份,用来完成各种自动化操作. 2.部分网站登录会更新Session,会导致之前成功登录的Session失效,与浏览器使用相同的Sessi

  • 详解如何使用Python编写vim插件

    前言 vim是个伟大的编辑器,不仅在于她特立独行的编辑方式,还在于她强大的扩展能力.然而,vim自身用于写插件的语言vimL功能有很大的局限性,实现功能复杂的插件往往力不从心,而且运行效率也不高.幸好,vim早就想到了这一点,她提供了很多外部语言接口,比如Python,ruby,lua,Perl等,可以很方便的编写vim插件.本文主要介绍如何使用Python编写vim插件. 准备工作 1. 编译vim,使vim支持Python 在编译之前,configure的时候加上--enable-pytho

  • python导出chrome书签到markdown文件的实例代码

    python导出chrome书签到markdown文件,主要就是解析chrome的bookmarks文件,然后拼接成markdown格式的字符串,最后输出到文件即可.以下直接上代码,也可以在 py-chrome-bookmarks-markdown 中直接参见源码. from json import loads import argparse from platform import system from re import match from os import environ from

  • python与sqlite3实现解密chrome cookie实例代码

    本文研究的主要问题:有一个解密chrome cookie的事情,google出了代码,却不能正常执行,原因在于sqlite3的版本太低,虽然我切换到了python3.5的环境,但sqlite3的版本也只有3.6. google了许久,终于找到方法: 1. 进入页面 http://www6.atomicorp.com/channels/atomic/centos/6/x86_64/RPMS/ 2. 下载 atomic-sqlite-sqlite-3.8.5-2.el6.art.x86_64.rpm

  • 基于Python开发chrome插件的方法分析

    本文实例讲述了基于Python开发chrome插件的方法.分享给大家供大家参考,具体如下: 谷歌Chrome插件是使用HTML.JavaScript和CSS编写的.如果你之前从来没有写过Chrome插件,我建议你读一下这个.在这篇教程中,我们将教你如何使用Python代替JavaScript. 创建一个谷歌Chrome插件 首先,我们必须创建一个清单文件:manifest.json. { "manifest_version": 2, "name": "Py

  • 用python编写第一个IDA插件的实例

    IDA插件是经过编译的.功能更强大的IDC脚本,与仅仅使用脚本相比,插件能够执行更加复杂的任务.与编写IDC脚本相比,python显得更为轻巧和强大,IDAPython作为IDA的一个插件,具有IDA SDK的大部分功能,能够帮助我们编写实现IDC脚本语言所有功能的python脚本. 本文将以一个简单的例子开始展示如何使用python编写并安装一个IDA插件. 1.编写插件文件msg.py from idaapi import * class myIdaPlugin(plugin_t): fla

  • python编写softmax函数、交叉熵函数实例

    python代码如下: import numpy as np # Write a function that takes as input a list of numbers, and returns # the list of values given by the softmax function. def softmax(L): pass expL = np.exp(L) sumExpL = sum(expL) result = [] for i in expL: result.appen

  • 由Python编写的MySQL管理工具代码实例

    本文实例为大家分享了由Python编写的MySQL管理工具的具体代码,供大家参考,具体内容如下 import pymysql import pandas as pd from tkinter import Label,StringVar,Entry,Tk,Button from tkinter.simpledialog import askstring def Entry_address(): #输入数据库地址 root=Tk() l1=Label(root,text='服务器:').grid(

  • python编写扎金花小程序的实例代码

    游戏规则: 一付扑克牌,去掉大小王,每个玩家发3张牌,最后比大小,看谁赢. 有以下几种牌: 豹子:三张一样的牌,如3张6. 顺金:又称同花顺,即3张同样花色的顺子, 如红桃 5.6.7 顺子:又称拖拉机,花色不同,但是顺子,如红桃5.方片6.黑桃7,组成的顺子 对子:2张牌一样 单张:单张最大的是A 这几种牌的大小顺序为, 豹子>顺金>顺子>对子>单张 程序需要实现的点: 先生成一付完整的扑克牌 给5个玩家随机发牌 统一开牌,比大小,输出赢家是谁 主要思路: 把各种牌用积分来计算,

  • python实现的一个p2p文件传输实例

    考虑到我手上的服务器逐渐的增多,有时候需要大规模的部署同一个文件,例如因为方便使用systemtap这个工具定位问题,需要把手上几百台服务器同时安装kernel-debuginfo这个包,原有的方式采用一个源服务器,采用rsync或者scp之类的文件传输方式只能做到一个点往下分发这个文件,这个时候下发的速度就会比较的慢,基于以上原因,我写了一个基于bt协议传输文件的小工具,实际测试,传输到10个机房,70多台机器传输一个240M的这个内核文件,到所有的机器,源采用限速2m/s的上传速度,测试的结

  • 使用Python编写简单的端口扫描器的实例分享

    单线程实现 单线程实现道理比较简单,这里尝试Soket连接3389,连接成功说明端口开放,否则说明没有开远程服务.随便修改了一下就ok了,代码如下,最终得到自己的IP地址. #!/usr/bin/env python import socket if __name__=='__main__': port=3389 s=socket.socket() for cnt in range(253,2,-1): address='XXX.XXX.XXX.'+str(cnt) #XXX.XXX.XXX I

  • Python写的一个简单DNS服务器实例

    因为突然有个邪恶的想法,想在自己的Android平板上面搭建一个DNS服务器,因为平板上之前安装过SL4A和Python的解释器,也想继续学学Python因此,就打算用Python实现了. 在Google上面找了一下,Python实现的DNS,没找到我所希望的答案,因此就决定自己来实现了. 现在所实现的没什么高深的,只是能够对A记录查询进行简单的匹配和回复. 实现的代码如下: 复制代码 代码如下: '''Created on 2012-10-15 @author: RobinTang''' im

  • 基于Python编写一个自动关机程序

    目录 1.实现效果 2.实现步骤 3.全部代码 1.实现效果 2.实现步骤 模块导入 import os,sys,time from PyQt5 import QtCore,QtWidgets,QtGui 窗口设置 def pageShow(self,page): #设置窗口的位置和大小 page.setGeometry(400,400,400,200) #设置窗口的标题 page.setWindowTitle('Window shutdown') #设置窗口的图标 #page.setWindo

随机推荐