调试方法

使用 pydevd

然后在需要调试处加入调试代码

GetOperandValue

作用

  • 参数1: ea 虚拟地址
  • 参数2: 操作数号

返回指令的操作数的被解析过的值

文档

def GetOperandValue(ea, n):
"""
Get number used in the operand This function returns an immediate number used in the operand @param ea: linear address of instruction
@param n: the operand number @return: value
operand is an immediate value => immediate value
operand has a displacement => displacement
operand is a direct memory ref => memory address
operand is a register => register number
operand is a register phrase => phrase number
otherwise => -1
"""

实例

.text:080488C9                 cmp     eax, 1
.text:080488CC jz short loc_80488D8
.text:080488CE sub esp, 0Ch

其中 080488CC 处的指令的16进制表示为

74 0A

这一条指令有一个操作数,所以通过 GetOperandValue 可以获取获取通过 ida 解析的值。

Python>hex(GetOperandValue(0x080488CC,0))
0x80488d8L

GetMnem

作用

  • 参数1: ea 虚拟地址

返回指令的操作码的助记符

文档

def GetMnem(ea):
"""
Get instruction mnemonics @param ea: linear address of instruction @return: "" - no instruction at the specified location

实例

.text:080488C9                 cmp     eax, 1
.text:080488CC jz short loc_80488D8
.text:080488CE sub esp, 0Ch
Python>GetMnem(0x80488CC)
jz

GetOpnd

作用

  • 参数1: ea 虚拟地址
  • 参数2: 操作数索引

返回指令的操作数

文档

def GetOpnd(ea, n):
"""
Get operand of an instruction @param ea: linear address of instruction
@param n: number of operand:
0 - the first operand
1 - the second operand @return: the current text representation of operand or ""
"""

实例

.text:080488C9                 cmp     eax, 1
.text:080488CC jz short loc_80488D8
.text:080488CE sub esp, 0Ch
Python>GetOpnd(0x80488CC,0)
loc_80488D8

GetDisasm

作用

  • 参数1: ea 虚拟地址

得到指令的反汇编字符串

文档

def GetDisasm(ea):
"""
Get disassembly line @param ea: linear address of instruction @return: "" - could not decode instruction at the specified location @note: this function may not return exactly the same mnemonics
as you see on the screen.
"""

实例

.text:080488C9                 cmp     eax, 1
.text:080488CC jz short loc_80488D8
.text:080488CE sub esp, 0Ch
Python>GetDisasm(0x80488CC)
jz short loc_80488D8

PrevHead 和 NextHead

作用

  • 参数1: ea 虚拟地址

得到前一条或者后一条指令的地址

实例

.text:080488AF                 add     esp, 10h
.text:080488B2 mov [ebp+fd], eax
.text:080488B5 sub esp, 4
Python>hex(PrevHead(0x080488B2))
0x80488afL
Python>hex(NextHead(0x080488B2))
0x80488b5L

idapython 开发的更多相关文章

  1. python开发_常用的python模块及安装方法

    adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctype ...

  2. 避免重复造轮子的UI自动化测试框架开发

    一懒起来就好久没更新文章了,其实懒也还是因为忙,今年上半年的加班赶上了去年一年的加班,加班不息啊,好了吐槽完就写写一直打算继续的自动化开发 目前各种UI测试框架层出不穷,但是万变不离其宗,驱动PC浏览 ...

  3. App开发:模拟服务器数据接口 - MockApi

    为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...

  4. 使用HTML5开发Kinect体感游戏

    一.简介 我们要做的是怎样一款游戏? 在前不久成都TGC2016展会上,我们开发了一款<火影忍者手游>的体感游戏,主要模拟手游章节<九尾袭来 >,用户化身四代,与九尾进行对决, ...

  5. Android SwipeRefreshLayout 下拉刷新——Hi_博客 Android App 开发笔记

    以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有 ...

  6. Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记

    以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...

  7. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  8. Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境

    一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...

  9. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...

随机推荐

  1. 启动Storm各个后台进程

    启动Storm的所有后台进程.和Zookeeper一样,Storm也是快速失败(fail-fast)的系统,这样Storm才能在 任意时刻被停止,并且当进程重启后被正确地恢复执行.这也是为什么Stor ...

  2. 安装Hive-0.10.0-CDH4.5.0所遇异常

    Note: 虚拟机访问Win7中mysql(root用户+密码) hive出现异常1: FAILED: Error in metadata: java.lang.RuntimeException: U ...

  3. 使用Properties类和ResourceBundle类读取properties文件

    一.介绍: 项目中经常把一些常用的用户名和密码都填写到一个对应的配置文件中,这样每次修改密码或者用户名的时候就可以直接修改这个配置文件了,不用动源码. 这里讲两种方式读取properties文件的方法 ...

  4. Ubuntu链接库查找

    apt-get install apt-file apt-get update apt-file search

  5. Android之从TCP/IP、HTTP看Socket通信

    1.概念 TCP/IP:属于传输层/网络层协议.手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上层网络数据的传 ...

  6. PlanetTogether APS安装与配置

    一.PT 安装 1.PT Server与Client的下载 下载网址:https://download.planettogether.com/ 2.安装.net framework 4.6.2 安装P ...

  7. Python 基础语法——数字和表达式(包含数学上的一些函数)

    >>> 2+2 4 >>> 1/2 0 >>> 1.0/2.0 0.5 >>> 1/2.0 0.5 >>> 1 ...

  8. Eclipse *的下载(图文详解)

    不多说,直接上干货! 简单了解,Eclipse是绿色软件,下载下来是个压缩包,只需要解压,加上jdk就可以运行了. 相比MyEclipse而言,它是免费的,后者是收费的.各有侧重吧 有很多人用Ecli ...

  9. C/C++练习题(三)

    1.对下面两个文件编译后,运行会输出什么? // 第一个文件a.c #include <stdio.h> extern char p[]; extern void f(); int mai ...

  10. flask小demo-数据查询

    mysqlconn-flask.py # -*- coding: utf-8 -*- #coding=utf-8 import os import mysql.connector from flask ...