📄 1094.html
字号:
0804a0a4 kill <br>
0804a0b4 ctime <br>
0804a0c4 fl_get_menu <br>
0804a0d4 strcat <br>
0804a0e4 fl_bgn_group <br>
0804a0f4 fl_set_atclose <br>
0804a104 chdir <br>
0804a114 fl_invalidate_fselector_cache <br>
0804a124 XCreateBitmapFromData <br>
0804a134 fseek <br>
0804a144 mktime <br>
0804a154 fl_show_fselector <br>
0804a164 __libc_init_first <br>
0804a174 fl_do_forms <br>
0804a184 signal <br>
0804a194 read <br>
0804a1a4 fl_get_fselector_form <br>
0804a1b4 fl_set_form_icon <br>
0804a1c4 fl_set_slider_value <br>
0804a1d4 fl_set_timer <br>
0804a1e4 XParseGeometry <br>
0804a1f4 fl_show_object <br>
0804a204 strncpy <br>
0804a214 unlink <br>
0804a224 strcasecmp <br>
0804a234 fl_set_form_geometry <br>
0804a244 fl_get_menu_item_mode <br>
0804a254 fl_add_input <br>
0804a264 fl_get_input <------------------好显眼啊..icon_razz.gif <br>
0804a274 _IO_getc <br>
0804a284 fork <br>
0804a294 sscanf <br>
0804a2a4 fl_hide_oneliner <br>
0804a2b4 sigaction <br>
0804a2c4 fl_set_focus_object <br>
0804a2d4 strdup <br>
0804a2e4 gettimeofday <br>
0804a2f4 fl_add_slider <br>
0804a304 fopen <br>
0804a314 memset <br>
0804a324 ftell <br>
0804a334 fl_set_menu <br>
0804a344 fl_get_pattern <br>
0804a354 fl_set_oneliner_color <br>
0804a364 fclose <br>
0804a374 time <br>
0804a384 fl_add_valslider <br>
0804a394 fl_set_object_lcol <br>
0804a3a4 fl_set_object_label <br>
0804a3b4 fl_set_counter_step <br>
0804a3c4 fl_library_version <br>
0804a3d4 fl_show_oneliner <br>
0804a3e4 sprintf <br>
0804a3f4 fl_set_border_width <br>
0804a404 atexit <br>
0804a414 fl_mapcolor <br>
0804a424 fl_initialize <br>
0804a434 fl_set_menu_item_mode <br>
0804a444 fl_set_input_maxchars <br>
0804a454 fl_set_browser_fontstyle <br>
0804a464 fl_get_button <br>
0804a474 fl_hide_form <br>
0804a484 fl_set_counter_bounds <br>
0804a494 fl_set_object_lsize <br>
0804a4a4 fl_add_checkbutton <br>
0804a4b4 fl_set_object_callback <br>
0804a4c4 fl_add_menu <br>
0804a4d4 fl_use_fselector <br>
0804a4e4 __errno_location <br>
0804a4f4 exit <br>
0804a504 fl_get_filename <br>
0804a514 __fxstat <br>
0804a524 fl_add_timer <br>
0804a534 fl_set_object_resize <br>
0804a544 open <br>
0804a554 fl_set_object_lalign <br>
0804a564 fl_get_directory <br>
0804a574 fl_show_choice <br>
0804a584 fl_set_slider_size <br>
0804a594 fputs <br>
0804a5a4 execvp <br>
0804a5b4 fl_get_counter_value <br>
0804a5c4 close <br>
0804a5d4 XOpenDisplay <br>
0804a5e4 free <br>
0804a604 fl_set_button <br>
0804a614 _start <br>
08052e7c whereError <br>
080583c0 _fini <br>
mtv用到了xforms库,fl_xxxx都是这个库里的函数, 其中的哪个fl_get_input是 <br>
这么的显眼, 虽然没有做过xforms的编程,但是可以大胆设想这个东东会不会类似 <br>
windows中的GetDlgItemText(GetDlgItemTextA), 所以不妨试试 <br>
<br>
(gdb)break fl_get_input <br>
Breakpoint 1 at 0x804a264 <br>
(gdb)r <br>
Starting program: /usr/X11R6/bin/mtv <br>
(no debugging symbols found)...Breakpoint 1 at 0x400429e3 <br>
<br>
出现填写注册信息对话框, 我做如下输入 <br>
<br>
Name: I007 <br>
Order number: B123456789 (有editmask,只能一字母后跟字数) <br>
Key: 87654321 (也有editmask) <br>
<br>
按OK键后, mtv果然在断点处停住, 猜得不错. 如果没猜中, 只好慢慢跟踪罗 <br>
(no debugging symbols found)...(no debugging symbols found)... <br>
Breakpoint 1, 0x400429e3 in fl_get_input () <br>
(gdb) <br>
<br>
继续让它运行... <br>
(gdb) c <br>
Continuing. <br>
<br>
Breakpoint 1, 0x400429e3 in fl_get_input () <br>
(gdb) c <br>
Continuing. <br>
<br>
Breakpoint 1, 0x400429e3 in fl_get_input () <br>
(gdb) c <br>
Continuing. <br>
<br>
它连续调用了fl_get_input三次, 正好对应三个输入项, 然后注册信息错误的 <br>
对话框就出现了, 看来是没错了, 现在关键是要看最后一次调用fl_get_input <br>
后的代码,当然看它每次调用fl_get_input后到取回的字串放到了什么地地方 <br>
也很重要.我重新输入一次注册信息,然后让它在三次调用fl_get_input后的 <br>
情况: <br>
(gdb) c <br>
Continuing. <br>
<br>
Breakpoint 1, 0x400429e3 in fl_get_input () <br>
(gdb) bt <br>
#0 0x400429e3 in fl_get_input () <br>
#1 0x804ea96 in _start () <br>
#2 0x4003b5f5 in fl_do_forms () <br>
#3 0x8050a59 in _start () <br>
<br>
这是堆栈中的情况, 看来调用完fl_get_input后应返回到_start中的 <br>
地址0x804ea96处, 我们来看看这段代码 <br>
(gdb) disass 0x804ea96 0x804ffff <br>
Dump of assembler code from 0x804ea96 to 0x804ffff: <br>
0x804ea96 <_start+17538>: movl %eax,0x806e584 <br>
0x804ea9b <_start+17543>: pushl %eax <br>
0x804ea9c <_start+17544>: movl 0x806e9d4,%eax <br>
0x804eaa1 <_start+17549>: movl 0x18(%eax),%ecx <br>
0x804eaa4 <_start+17552>: pushl %ecx <br>
0x804eaa5 <_start+17553>: call 0x804a264 <fl_get_input> <-第二次 <br>
0x804eaaa <_start+17558>: movl %eax,%ebp <br>
0x804eaac <_start+17560>: movl 0x806e9d4,%eax <br>
0x804eab1 <_start+17565>: pushl %eax <br>
0x804eab2 <_start+17566>: movl 0x10(%eax),%edx <br>
0x804eab5 <_start+17569>: pushl %edx <br>
0x804eab6 <_start+17570>: call 0x804a264 <fl_get_input> <-第三次 <br>
0x804eabb <_start+17575>: movl %eax,%ebx <br>
0x804eabd <_start+17577>: movl %ebp,%edx <br>
0x804eabf <_start+17579>: movl %ebp,%eax <br>
0x804eac1 <_start+17581>: addl $0x18,%esp <br>
0x804eac4 <_start+17584>: andl $0x3,%edx <br>
0x804eac7 <_start+17587>: je 0x804eadf <_start+17611> <br>
0x804eac9 <_start+17589>: jp 0x804eada <_start+17606> <br>
0x804eacb <_start+17591>: cmpl $0x2,%edx <br>
0x804eace <_start+17594>: je 0x804ead5 <_start+17601> <br>
0x804ead0 <_start+17596>: cmpb %dh,(%eax) <br>
.... <br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -