I'm trying to reverse engineer a program that sees how many windows it has opened. The max number of windows it allows are 6, and I want to change that limit. I can find the address that stores the value on open windows, and lock it (at 1 for example, so the program would think it only has 1 open window), but the program still detects when it reaches the limit of 6 windows.
So I guess that when it opens a new window, it doesn't really check that variable, and computes on-the-fly how many windows are open. So I put a break-point at calls of the functions EnumWindows(), EnumChildWindows(), EnumThreadWindows(), FindWindowA(), FindWindowW(), FindWindowExA(). Still, the program detects when it reaches the 6 open windows. Am I missing any function? How is the program seeing how many open windows it has?