This will probably be much easier to do if you use a debugger to dynamically analyze the process than with static analysis.
If the application uses the plain windows API, you could try a software like spy++ to get the address of the dialog procedure, which is called whenever something interesting happens within the dialog Or, you could place a breakpoint on then DialogBox
API functions (there are several of them, DialogBoxA
for ascii strings, DialogBoxW
for wide char strings, and some DialogBoxEx
variants). Once you know the address, you can look up that in IDA.
If the application uses some window toolkit (like gtk
, qt
, swing
if it's a java application, whatever), this might be a bit harder, because these toolkits will probably use only a small subset of the Windows API and do the event handling themselves. It might, however, still be successful if you place a breakpoint on GetWindowText
and/or GetDlgItemText
(again, in several A/W/Ex variants) to check when and where the application actually reads what you've entered.
If, for some reason, you absolutely can't use a debugger and have to use IDA only, you can still try to cross-reference the above functions and work your way from there. But, since you don't know which of the cross-references is used in the password checking code, this will probably be much harder/more time consuming.
Apart from this, some of the ideas in my answer to a similar question might help you.