IDAPython是运行于交互式反汇编器IDA的插件,用于实现IDA的Python编程接口。IDA在逆向工程领域具有广泛的应用,尤其是二进制文件静态分析,其强大的反汇编功能一直处于业内领先水平。IDAPython插件使得Python脚本程序能够在IDA中运行并实现自定义的软件分析功能,通过该插件运行的Python脚本程序可以访问整个IDA数据库,并且可以方便地调用所有IDC函数和使用所有已安装的Python模块中的功能。
  
1、列出当前PE文件中所有函数

for ea in Segments(): #遍历所有段

for function in Functions(SegStart(ea), SegEnd(ea)): #遍历该段中所有函数

print hex(function), GetFunctionName(function) #输出函数起势地址和函数名

2、 反汇编当前鼠标所在函数的所有指令

ea = ScreenEA() #获取鼠标当前位置

for inst in FuncItems(ea): #遍历本函数所有地址

print hex(inst), GetDisasm(inst)  #输出每条指令及其地址

3、查看PE文件所有函数及其被调用情况

ea = ScreenEA() #鼠标当前位置

callers = dict()

for function_ea in Functions(SegStart(ea), SegEnd(ea)): #遍历所有函数

function_name = GetFunctionName(function_ea) #获取函数名

refs = CodeRefsTo(function_ea,0) #哪些函数调用了本函数

refs = list(refs)

if refs: #把结果保存到字典中

callers[function_name] = set(map(GetFunctionName, refs))

for k, v in callers.items(): #输出结果

print k, ':', v

4、查看当前函数调用了哪些函数

ea = ScreenEA()

for inst in FuncItems(ea):

refs = list(CodeRefsFrom(inst, 0))

if refs:

print hex(inst), 'calling...', GetFunctionName(refs[0])

5、统计PE文件中指令的出现频率

times = dict()

for seg_startEA in Segments():

if SegName(seg_startEA)!='.text': #只考虑代码段

continue

for instEA in Heads(seg_startEA, SegEnd(seg_startEA)):

if isCode(GetFlags(instEA)): #只考虑代码

mnem = GetMnem(instEA)

times[mnem] = times.get(mnem, 0)+1

times = sorted(times, key=lambda x: x[1], reverse=True) #按出现频率从高到低排序

for k, v in times: #输出结果

print k, ':', v

IDAPython精彩编程(1)相关推荐

  1. c#精彩编程200例百度云_邂逅百度云智学院:福州理工学院AIOT实训营火热开营!...

    福州理工学院携手百度云智学院(福州)分院,共同主办的 "福州理工学院AIOT实训营"于2020年7月20日火热开营! 本期实训营将针对2019级智能科学与技术与物联网工程两个专业学 ...

  2. c#精彩编程200例百度云_永安市教育局被授予“人工智能编程教育试验区”

    11月28日,"第二届人工智能与机器人教育大会·青少年人工智能与编程教育主题论坛"在厦门召开.永安市教育局被中国教育发展战略学会人工智能与机器人教育专委会授予"人工智能编 ...

  3. python精彩编程200例-Python趣味编程与精彩实例

    Python趣味编程与精彩实例 共19 章,前12章主要以Python 基础知识如文件创建.输出与变量.输入与判断.运算符和循环.列表和字典.函数编程.pygame的各种知识为主,13-19章则以游戏 ...

  4. python精彩编程200例百度_Python趣味编程与精彩实例

    前言 序 1Python基础 1.1简介 1.2诞生 1.3应用 1.4优点 2开发环境配置 2.1Python下载与安装 2.2VSCode安装 2.3VSCode辅助插件 3VSCode使用 3. ...

  5. python精彩编程200例pdf下载-最经典的25本Python编程开发电子书(附下载地址)!...

    如果,有人想转行程序猿,而让给出"如何切入编程"的建议的话,许多人一定毫不犹豫地向他推荐"Python"! 没错,就是这样一只Python,它让众多程序开发者, ...

  6. python精彩编程200例-200G的Python初高级教程+项目实战案例源码,让你做有钱途的人才...

    2018年1月16日上午,教育部正式将人工智能.物联网.大数据处理正式划入高中新课标,这就意味着现在的学生16岁就要开始学习编程了! 据统计,在所有专业级别的 39000 名开发人员中,有超过四分之一 ...

  7. python精彩编程200例-编程语言入门经典100例【Python版】

    无论学习哪门计算机语言,只要把100例中绝大部分题目都做一遍,就基本掌握该语言的语法了. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? #Filena ...

  8. python精彩编程200例-python趣味编程100例(99个)

    [实例简介] python如今很流行,AI的首选工具:python趣味编程100例(99个),学习编程不枯燥. [实例截图] [核心代码] python趣味编程100例(99个) └── python ...

  9. python精彩编程200例 pdf-Python创意编程200例turtle篇

    简 介: Python是一种高阶计算机语言.它更接近自然语言,学习成本低,开发效率高.如今越来越多的中小学生都在开始学习Python了.我们可以预见,全民会Python的日子不久就会到来,各行各业的人 ...

最新文章

  1. 72小时BCH日本生存挑战赛顺利完成
  2. 微信小程序一定要用https的理由,小程序使用HTTPS链接分析
  3. python数据可视化代码_python数据可视化
  4. python display函数_【python】pandas display选项
  5. 如何安装mysql5.7.15_ubuntu16.04安装mysql5.7.15
  6. 【Git/Github学习笔记】Github的使用介绍
  7. 几何画板是哪方面的计算机应用,几何画板主要功能是哪些?了解后就能愉快使用啦...
  8. php flea,Fleaphp常见函数功能与用法示例
  9. Mixgo CE初体验
  10. Windows 2003超级终端
  11. 云优CMS发布接口模块—免登录通用版
  12. SnakeYaml 反序列化的一个小 trick
  13. Android studio 打包 uni App 修改apk名称,app名称及图标
  14. ios safari 模拟器_web测试-ios设备模拟器(iOS Simulator)
  15. PCDN服务接入实操手册
  16. 【最优化问题】方法总结
  17. 人机界面和组态软件有什么区别?
  18. 【工作交接】 Touch Screen 模拟按键实现
  19. 【数电实验】触发器及其应用
  20. 尚学堂 高琪JAVA300集第十一章作业 编程题答案

热门文章

  1. java 可插拔注解_20200311 8. 注解和可插拔性
  2. 改变变压器联接方式可消除某些特定次数的谐波_电工牛人10年经验,总结的4电工常用接线方法41例,电机、变压器、接触器..都有...
  3. FTP测试手机软件画画教程图片,手机绘画SketchBook原创教程
  4. qt android刘海屏状态栏,华为Mate30 Pro设计曝光:仍配刘海屏+3D结构光
  5. java处理报错的快捷键_java快捷键
  6. solid 铝型材框架_solidworks铝型材库
  7. 计算机编程学英语词汇,计算机编程英语词汇大全
  8. android jackson 解析json字符串,一文搞定Jackson解析JSON数据
  9. 计算机培训三下乡实践报告,暑期“三下乡”社会实践心得体会范文
  10. linux下安装Jira6.3