IDA条件断点
摘要:记录一些IDA常见条件断点
常见消息断点
注意0x,OD里面的断点设置条件时默认不管加不加0x默认都是按照十六进制算,IDA不加0x就是按照十进制
例如 Msg的地址是[esp+ACh],当Msg的值是0x111时暂停程序。
刚开始我以为
结果始终断不下来,最后使用print(Dword(Msg))发现Msg的值始终不变,而查看debug下面的locals面板发现Msg的值是一直在变的,应该是条件断点不支持局部变量类似Msg == 0x111的形式?我也不知道。
Dword(Dword(esp)+4)==0x202 在当前ESP代表的地址指向的值取出来+4,然后以这个新值为起始地址,向高地址取四个字节。
IDA python脚本例子
下面三个脚本功能一样
使用方法:下面的脚本必须在ida python下才能使用
当返回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
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。