I'm trying hard to find this routine in my FW. It's shure a different version, but the routine itself should be there also...
First i let IDA search all strings using the Subview-function. Then i searched for the menu text "Pointer Placement" and found it here:
ida-pro_lookup_string.png
I've then used the back-reference to the part of the code where this string is used:
ida-pro_string_backref.png
And get to this sub:
ida-pro_menu_sub.png
It's easy to find out what is going on here:
ida-pro_pointer_menu_sub.png
(1) Start of sub
(2) Load the start address of the string into R0
(3) Load Y-Position of string into R2 (0x0A = 10 pixel from top)
(4) Load X-Position of string into R1 (0x0A = 10 pixel from left)
(5) Finaly, call the drawing routine
As C++ pseudocode this routine looks like:
ida-pro_pointer_menu_sub_c++.png
I assume the first subs are to clear the display and make the amber backround. Well, this sub_29942 looks interesting, but is a decend one. More interesting is the routine which is calling this menu drawing, as we want to know how to access this menu.
To our luck, there is just one backref calling this. Here is the calling sub as pseudo-code:
ida-pro_calling_pointer_menu_sub_c++.png
What i find very interesting is, that there is a while-loop, so the menu is shown until a certain condition is met:
Code: Select all
while ( 1 )
{
if ( !sub_2F778(100) ) // if this sub returns false, v3 is set to 5 and the menu is drawn
v3 = 5;
v3 = (v3 + 1) & 0xFF; // add 1 to v3 and clip variable to byte boundary
if ( v3 >= 5 ) // loop until this condition is met
{
v4 = drawPointerPlacementMenu();
v5 = sub_2358E(v4);
sub_1DB04(v5);
JUMPOUT(&loc_1BCEC); // leave while loop
}
}
You do not have the required permissions to view the files attached to this post.