⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 program-crack-mtv-detail.html

📁 学习linux的工具书
💻 HTML
📖 第 1 页 / 共 4 页
字号:
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a4c4&nbsp; fl_add_menu
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a4d4&nbsp; fl_use_fselector
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a4e4&nbsp; __errno_location
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a4f4&nbsp; exit
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a504&nbsp; fl_get_filename
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a514&nbsp; __fxstat
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a524&nbsp; fl_add_timer
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a534&nbsp; fl_set_object_resize
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a544&nbsp; open
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a554&nbsp; fl_set_object_lalign
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a564&nbsp; fl_get_directory
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a574&nbsp; fl_show_choice
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a584&nbsp; fl_set_slider_size
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a594&nbsp; fputs
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a5a4&nbsp; execvp
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a5b4&nbsp; fl_get_counter_value
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a5c4&nbsp; close
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a5d4&nbsp; XOpenDisplay
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a5e4&nbsp; free
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a604&nbsp; fl_set_button
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a614&nbsp; _start
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08052e7c&nbsp; whereError
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 080583c0&nbsp; _fini
<br>&nbsp;&nbsp; mtv用到了xforms库,fl_xxxx都是这个库里的函数, 其中的哪个fl_get_input是
<br>这么的显眼, 虽然没有做过xforms的编程,但是可以大胆设想这个东东会不会类似
<br>windows中的GetDlgItemText(GetDlgItemTextA), 所以不妨试试
<p>(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
<p>出现填写注册信息对话框, 我做如下输入
<p>Name: I007
<br>Order number: B123456789 (有editmask,只能一字母后跟字数)
<br>Key: 87654321 (也有editmask)
<p>按OK键后, mtv果然在断点处停住, 猜得不错. 如果没猜中, 只好慢慢跟踪罗
<br>(no debugging symbols found)...(no debugging symbols found)...
<br>Breakpoint 1, 0x400429e3 in fl_get_input ()
<br>(gdb)
<p>继续让它运行...
<br>(gdb) c
<br>Continuing.
<p>Breakpoint 1, 0x400429e3 in fl_get_input ()
<br>(gdb) c
<br>Continuing.
<p>Breakpoint 1, 0x400429e3 in fl_get_input ()
<br>(gdb) c
<br>Continuing.
<p>它连续调用了fl_get_input三次, 正好对应三个输入项, 然后注册信息错误的
<br>对话框就出现了, 看来是没错了, 现在关键是要看最后一次调用fl_get_input
<br>后的代码,当然看它每次调用fl_get_input后到取回的字串放到了什么地地方
<br>也很重要.我重新输入一次注册信息,然后让它在三次调用fl_get_input后的
<br>情况:
<br>(gdb) c
<br>Continuing.
<p>Breakpoint 1, 0x400429e3 in fl_get_input ()
<br>(gdb) bt
<br>#0&nbsp; 0x400429e3 in fl_get_input ()
<br>#1&nbsp; 0x804ea96 in _start ()
<br>#2&nbsp; 0x4003b5f5 in fl_do_forms ()
<br>#3&nbsp; 0x8050a59 in _start ()
<p>这是堆栈中的情况, 看来调用完fl_get_input后应返回到_start中的
<br>地址0x804ea96处, 我们来看看这段代码
<br>(gdb) disass 0x804ea96 0x804ffff
<br>Dump of assembler code from 0x804ea96 to 0x804ffff:
<br>0x804ea96 &lt;_start+17538>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl&nbsp;&nbsp;
%eax,0x806e584
<br>0x804ea9b &lt;_start+17543>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pushl&nbsp;
%eax
<br>0x804ea9c &lt;_start+17544>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl&nbsp;&nbsp;
0x806e9d4,%eax
<br>0x804eaa1 &lt;_start+17549>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl&nbsp;&nbsp;
0x18(%eax),%ecx
<br>0x804eaa4 &lt;_start+17552>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pushl&nbsp;
%ecx
<br>0x804eaa5 &lt;_start+17553>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call&nbsp;&nbsp;
0x804a264 &lt;fl_get_input>&nbsp; &lt;-第二次
<br>0x804eaaa &lt;_start+17558>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl&nbsp;&nbsp;
%eax,%ebp
<br>0x804eaac &lt;_start+17560>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl&nbsp;&nbsp;
0x806e9d4,%eax
<br>0x804eab1 &lt;_start+17565>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pushl&nbsp;
%eax
<br>0x804eab2 &lt;_start+17566>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl&nbsp;&nbsp;
0x10(%eax),%edx
<br>0x804eab5 &lt;_start+17569>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pushl&nbsp;
%edx
<br>0x804eab6 &lt;_start+17570>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call&nbsp;&nbsp;
0x804a264 &lt;fl_get_input>&nbsp; &lt;-第三次
<br>0x804eabb &lt;_start+17575>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl&nbsp;&nbsp;
%eax,%ebx
<br>0x804eabd &lt;_start+17577>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl&nbsp;&nbsp;
%ebp,%edx
<br>0x804eabf &lt;_start+17579>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl&nbsp;&nbsp;
%ebp,%eax
<br>0x804eac1 &lt;_start+17581>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; addl&nbsp;&nbsp;
$0x18,%esp
<br>0x804eac4 &lt;_start+17584>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; andl&nbsp;&nbsp;
$0x3,%edx
<br>0x804eac7 &lt;_start+17587>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; je&nbsp;&nbsp;&nbsp;&nbsp;
0x804eadf &lt;_start+17611>
<br>0x804eac9 &lt;_start+17589>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jp&nbsp;&nbsp;&nbsp;&nbsp;
0x804eada &lt;_start+17606>
<br>0x804eacb &lt;_start+17591>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmpl&nbsp;&nbsp;
$0x2,%edx
<br>0x804eace &lt;_start+17594>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; je&nbsp;&nbsp;&nbsp;&nbsp;
0x804ead5 &lt;_start+17601>
<br>0x804ead0 &lt;_start+17596>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmpb&nbsp;&nbsp;
%dh,(%eax)
<br>....
<br>(gdb) break *0x804ea96
<br>Breakpoint 2 at 0x804ea96
<br>(gdb) c
<br>Continuing.
<p>Breakpoint 2, 0x804ea96 in _start ()
<br>(gdb) info reg eax
<br>eax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0x8083dd0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 134757840
<br>(gdb) x/s 0x8083dd0
<br>0x8083dd0:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "I007"
<p>看来 "I007" 放在 0x8083dd0, 这个地址还存放到了 0x806e584
<p>(gdb) ni
<br>....
<p>到第三次调用fl_get_input完回到0x804eabb时,我们知道了输入的信息存在在哪
<p>名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
值&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
地址
<br>Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"I007"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x8083dd0
<br>Order number&nbsp;&nbsp;&nbsp; "B123456789"&nbsp;&nbsp;&nbsp; 0x809e850
<br>Key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"87654321"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x809e880
<p>以下的一些反汇编代码中会有一些注释, 主要说明是执行到这样地方时一些情况,
<br>也不一步步的ni了..
<br>(gdb) disass 0x804eabb 0x804ffff
<br>Dump of assembler code from 0x804eabb to 0x804ffff:
<br>0x804eabb &lt;_start+17575>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl&nbsp;&nbsp;
%eax,%ebx (eax: 0x809e880->""87654321")
<p>0x804eabd &lt;_start+17577>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl&nbsp;&nbsp;
%ebp,%edx (ebp: 0x809e850->"B123456789"
<br>)
<br>0x804eabf &lt;_start+17579>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movl&nbsp;&nbsp;
%ebp,%eax
<br>0x804eac1 &lt;_start+17581>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; addl&nbsp;&nbsp;
$0x18,%esp
<br>0x804eac4 &lt;_start+17584>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; andl&nbsp;&nbsp;
$0x3,%edx
<br>0x804eac7 &lt;_start+17587>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; je&nbsp;&nbsp;&nbsp;&nbsp;
0x804eadf &lt;_start+17611> --
<br>0x804eac9 &lt;_start+17589>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jp&nbsp;&nbsp;&nbsp;&nbsp;
0x804eada &lt;_start+17606>&nbsp; |
<br>0x804eacb &lt;_start+17591>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmpl&nbsp;&nbsp;
$0x2,%edx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
|
<br>0x804eace &lt;_start+17594>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; je&nbsp;&nbsp;&nbsp;&nbsp;
0x804ead5 &lt;_start+17601>&nbsp; |
<br>0x804ead0 &lt;_start+17596>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmpb&nbsp;&nbsp;
%dh,(%eax)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
|
<br>0x804ead2 &lt;_start+17598>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; je&nbsp;&nbsp;&nbsp;&nbsp;
0x804eb05 &lt;_start+17649>&nbsp; |
<br>0x804ead4 &lt;_start+17600>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; incl&nbsp;&nbsp;
%eax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
|
<br>0x804ead5 &lt;_start+17601>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmpb&nbsp;&nbsp;
%dh,(%eax)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
|
<br>0x804ead7 &lt;_start+17603>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; je&nbsp;&nbsp;&nbsp;&nbsp;
0x804eb05 &lt;_start+17649>&nbsp; |
<br>0x804ead9 &lt;_start+17605>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; incl&nbsp;&nbsp;
%eax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
|
<br>0x804eada &lt;_start+17606>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmpb&nbsp;&nbsp;
%dh,(%eax)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
|
<br>0x804eadc &lt;_start+17608>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; je&nbsp;&nbsp;&nbsp;&nbsp;
0x804eb05 &lt;_start+17649>&nbsp; |
<br>0x804eade &lt;_start+17610>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; incl&nbsp;&nbsp;
%eax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
|
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
|
<br>以下检查Order number长度是否为10:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -