下面命令对32位程序有效,当修改内存属性为读写执行并大小是0x57e0时断下,并打印出地址、大小、和新属性值
bp kernel32!VirtualProtect ".if((poi(@esp+4*3)==40)&(poi(@esp+4*2)==57e0)){.printf \"addr=0x%08x size=0x%08x newProtect=0x%08x\\n\",poi(@esp+4),poi(@esp+4*2),poi(@esp+4*3);.echo hit!!! }.else{gc}; " "

比较坑的是.printf命令,换行要用\\n才行。
.if()中两个条件 用一个&符号分割
本文探讨了如何使用调试命令在32位程序中针对内存地址设置断点,当内存区域的属性变为可读写执行且大小为0x57e0时,触发断点并打印相关信息。调试过程中,printf命令的特殊转义字符使用和逻辑条件的组合是关键。
275

被折叠的 条评论
为什么被折叠?



