摘要:记录一些IDA常见条件断点

常见消息断点

注意0x,OD里面的断点设置条件时默认不管加不加0x默认都是按照十六进制算,IDA不加0x就是按照十进制

IDA条件断点举例.jpg

例如 Msg的地址是[esp+ACh],当Msg的值是0x111时暂停程序。
刚开始我以为

IDA条件断点举例2.jpg

结果始终断不下来,最后使用print(Dword(Msg))发现Msg的值始终不变,而查看debug下面的locals面板发现Msg的值是一直在变的,应该是条件断点不支持局部变量类似Msg == 0x111的形式?我也不知道。

Dword(Dword(esp)+4)==0x202 在当前ESP代表的地址指向的值取出来+4,然后以这个新值为起始地址,向高地址取四个字节。

IDA python脚本例子

下面三个脚本功能一样
使用方法:下面的脚本必须在ida python下才能使用

ida断点使用python.jpg

当返回ture时表示命中断点
脚本一:

head = GetRegValue("ESP")
head = Dword(head)
print(head)
if(head == 0x111):
    return True
return False

脚本二:

head = Dword(cpu.ESP+0xAC)
print(head)
if(head == 0x111):
    return True
return False

脚本三:

from idaapi import *
head = get_dword(cpu.ESP+0xAC)
print(head)
if(head == 0x111):
    return True
return False