yes you can set multiple conditions on on break points refer to ollydbg.hlp and experiment
i mean if you want to set a breakpoint on eax then eax must have been filled by a prior instuction
assuming you have mov eax,fs:[0]
mov eax,[eax+2]
and whne you have set the break point on mov eax,fs:[0] you wont be getting any out put becuase the instruction is yet to be executed and the expresion fails
it is kinda tedious to explain the concept of condition
assume you have this code
00401026 B8 38304000 MOV EAX,MSGBOXMO.00403038
0040102B 8B00 MOV EAX,DWORD PTR DS:[EAX]
0040102D 8B00 MOV EAX,DWORD PTR DS:[EAX]
and you have on 403038
00403038 40 30 40 00 @0@.
on 403040
00403040 50 30 40 00 P0@.
on 403050
00403050 79 6F 75 00 you.
and if you wish to evaluate eax on first instruction it doesnt have any meaning because eax may contain any random garbage
breakpoint is hit first and the instruction at ip is executed later
but if you use the constant addr to evaluate then it will succed to get you the string you
try string [[[403038]]] on the first instuction
and olly will log it for you
Log data, item 1
Address=00401026
Message=COND: you
memory breakpoints by thier very nature or not set at a single address
but on a whole page as such only one memory break point is available
it is clearly mentioned in the help file
Set memory breakpoint on access - sets memory breakpoint on the whole memory block. Program will stop each time memory block is accessed. OllyDbg supports only one memory breakpoint. Under Windows 95/98, debugged program may crash when system routines access memory blocks containing memory breakpoint. Use it as a last resort.
Set memory breakpoint on write - sets memory breakpoint on the whole memory block. Program will stop each time when it writes to the memory block. Under Windows 95/98, debugged program may crash when system routines access memory blocks containing memory breakpoint. Use it as a last resort.
and to your first question yes it is possible to set multiple conditions
but you have to unsderstand the concept to effectively utilise it
tkae a look again in help file
To set breakpoint on message, OllyDbg creates specially prepared conditional logging breakpoint with explanation "<WinProc>". To see how it works, assume that we have button with handle 00001234 and request pause on all button messages. After breakpoint is set, open it as a conditional logging breakpoint. You will see the following options set:
Condition: [ESP+4]==00001234 && [ESP+8] IN (0F0..0F7,135)
Explanation: <WinProc>
Pause program: On condition