windbg文字列比較条件ブレークポイント


windbg文字列比較条件ブレークポイント


目的:


レジスタが文字列を指すと、ある文字列と同時にプログラムが切断されます.
問題点:
レジスタが指す文字列を比較する必要があり、別名はこれを行うことができます.
テストソース:
void main()
{
	char buf[] = "shengfu";
	char* p = buf;

	__asm mov eax, p
}

ブレークポイント:
 1 e 0040141f [e:\hello\test2\test2.cpp @ 30]    0001 (0001)  0:**** test2!main+0x3f "$>スクリプトe:/script.txtの内容は以下の通りです.
as /ma TMS_LI	eax

.block
{
	.if ( $scmp("TMS_LI", "shengfu") == 0 )
	{	
	}
	.else
	{
		gc
	}
}

説明:
1.as /ma TMS_LI eaxはeaxに別名TMS_を付けたことを示すLI,/maはTMS_を表すLIはeaxをはじめアドレスのascz文字列
2.追加します.blockの原因は、別名はblockで発効しなければならないので、この比較的変態で、ドキュメントの中にはないようですが、海外の達人が言っています.http://analyze-v.com/?p=765.
3.下ブレークポイントに「$><の後ろにスペースがなく、パスにも反スラッシュは使用できません.