📄 1094.html
字号:
<div align=center><font class=normalfont>搜索文章:
<input type=hidden value=result name=action2>
<input type=radio checked value=title name=type>标题
<input type=radio value=content name=type>内容
<input type=image src="images/button_go.gif" tppabs="http://www.linuxhero.com/docs/images/button_go.gif" border=0 name=image2>
</font></div>
</td>
</tr>
<tr>
<td noWrap>
<div align="center">
<input maxlength=100 size=30 name=keyword2>
</div>
</td>
</tr></tbody>
</table>
</form>
</TD>
<TD rowSpan=2><IMG src="images/header_r1_c7.gif" tppabs="http://www.linuxhero.com/docs/images/header_r1_c7.gif" width=26 border=0 name=header_r1_c7></TD>
<TD><IMG height=83 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=1 border=0></TD></TR>
<TR>
<TD background="images/bgline.gif" tppabs="http://www.linuxhero.com/docs/images/bgline.gif"><IMG height=22
src="images/header_r2_c1.gif" tppabs="http://www.linuxhero.com/docs/images/header_r2_c1.gif" width=296 border=0
name=header_r2_c1></TD>
<TD background="images/bgline.gif" tppabs="http://www.linuxhero.com/docs/images/bgline.gif" colSpan=5>
<DIV align=right><FONT class=normalfont>当前位置:
<A href="index.html" tppabs="http://www.linuxhero.com/docs/index.html">本站首页</A>
<font color="#FF6699">>></font>
<A href="type15.html" tppabs="http://www.linuxhero.com/docs/type15.html">网络安全</A> | <A href="copyright.html" tppabs="http://www.linuxhero.com/docs/copyright.html">版权说明</A></font></DIV>
</TD>
<TD><IMG height=22 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=1
border=0></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=10 cellPadding=0 width="100%" bgColor=#ffffff
border=0>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=3 width="100%" border=0>
<TR>
<TD vAlign=top align=middle width="60%">
<TABLE cellSpacing=0 cellPadding=0 width="100%"
background="images/back.gif" tppabs="http://www.linuxhero.com/docs/images/back.gif" border=0>
<TBODY>
<TR>
<TD vAlign=top width="80%">
<DIV align=center>
<FORM action="search.html" tppabs="http://www.linuxhero.com/docs/search.html" method=get>
</FORM>
<TABLE cellSpacing=0 cellPadding=0 width="95%"
border=0><TBODY>
<TR>
<TD background="images/bgi.gif" tppabs="http://www.linuxhero.com/docs/images/bgi.gif"
height=30></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=3 width="95%"
align=center border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=3 width="100%"
border=0>
<TBODY>
<TR>
<TD vAlign=top>
<p><FONT class=normalfont><B><font color=blue>linux下破解实战</font></B></FONT><BR><FONT class=smallfont color=#ff9900>2004-04-23 15:18 pm</FONT><BR><FONT class=normalfont>作者:作者<br>来自:Linux知识宝库<br>联系方式:无名<br><br>linux的破解(i386)相对于其它unix下的破解自然要容易一些,因为 <br>
大家对于8086系列的结构以及汇编多少都有些了解。不过对于第一次做 <br>
linux下的破解,还是让人感到富有挑战而又令人兴奋的. <br>
要动手破解,除了破解本身的乐趣外,动力多半还是来自被破解对象 <br>
--应用程序的诱惑, 我就是被mtv player的功能给吸引了,又不满它每次 <br>
只放一小会就静音了, 于是乎我抄起了家伙---gdb <br>
<br>
老实说,原来没怎么用过gdb, 经常是通过xwpe间接的用,于是当时 <br>
就抱了抱佛脚。 <br>
gdb主要是针对源程序的调试除错的,对汇编级的支持的并不好(最 <br>
不好的就是没有类似debug中的a命令,没法汇编),对于破解,gdb常用的命令 <br>
有: <br>
info target 显示当前目标的一些信息,包括一些分段的信息 <br>
info functions 可以列出所有定义的函数名和数据类型,相当有用, <br>
有的程序检查系列号和License会在一个名称明确的函数里 <br>
info functions REGEXP 可以列出匹配正规表达表的函数 <br>
info registers 列出所有寄存器(除浮点)的值, 这个跟踪时自然常用到 <br>
info all-registers 列出所有寄存器(包括浮点)的值 <br>
info registers REGNAME... 列出所指出的所有寄存器的值 <br>
info break 列出所有的断点和观察点 <br>
break *ADDR 在地址ADDR处设置断点 <br>
break FUNCTION 在函数FUNCTION处设置断点 <br>
clear FUNCTION 删除在函数FUNCTION入口处的断点 <br>
delete BNUMS 删除BNUMS指定序点的断点或观察点 <br>
backtrace(bt) 显示堆栈中的信息,也很有用,可以在调试中搞清楚当前的调用关系 <br>
x/NFU ADDR 这个也是常用,N:重复数, F:显示格式,s字串,i机器码, <br>
缺省是x十六进制数, U:单元大小,b字节,h半字(两字节),w字(四字节,缺省) <br>
ADDR为地址,如 x/3uh 0x54320 <br>
set $REGNAME=VALUE 设定寄存器REGNAME的值为VALUE,还可以是 <br>
set $sp += 4这样的让sp加4 <br>
set {TYPE}ADDR=VALUE 将地址ADDR的TYPE类型的值设为VALUE,例 <br>
如:set {int}0x83040=4 <br>
nexti(ni) 执行一行机器码,如果是函数调用,则执行到函数返回 <br>
stepi(si) 执行一行机器码,如果是函数调用,则进入函数 <br>
disassemble FUNCTION 反汇编FUNCTION函数 <br>
disassemble ADDR1 ADDR2 反汇编ADDR1和ADDR2间的机器码 <br>
disassemble ADDR 反汇编ADDR所在的函数 <br>
run(r) 开始执行程序到第一个断点或程序结束 <br>
continue(c) 继续程序的执行到下一断点或程序结束 <br>
continue(c) IGNORE-COUNT 继续程序的执行并忽略掉IGNORE-COUNT个断 <br>
点,在第IGNORE-COUNT+1个断点停下或程序结束 <br>
<br>
<br>
正式开工了: <br>
<br>
运行mtv,首先出现的是对话框,要求"Enter Key"或是"Try it!",选"Enter Key", <br>
填写了资料后,提示注册信息不正确, 显然这其中做了Key的合法性检查,于时选中这 <br>
里做突破口: <br>
<br>
$ gdb mtv <br>
GNU gdb 4.17 <br>
Copyright 1998 Free Software Foundation, Inc. <br>
GDB is free software, covered by the GNU General Public License, and you are <br>
welcome to change it and/or distribute copies of it under certain <br>
conditions. <br>
Type "show copying" to see the conditions. <br>
There is absolutely no warranty for GDB. Type "show warranty" for details. <br>
This GDB was configured as "i386-redhat-linux"... <br>
(no debugging symbols found)... <br>
(gdb) <br>
<br>
通常第一个断点可以设在_start函数处,也可以先运行,中途送中断信号让它停下来 <br>
(一般可以 kill -18 pid, 18是SIGCONT)做这些之前还可以先看看程序中的函数 <br>
(包括使用到的共享库的函数),特别对于Xwindows应用程序,这点十分重要: <br>
(gdb)info functions <br>
All defined functions: <br>
<br>
Non-debugging symbols: <br>
08049cf0 _init <br>
08049d34 fl_set_object_lstyle <br>
08049d44 fl_set_object_gravity <br>
08049d54 fl_add_browser <br>
08049d64 waitpid <br>
08049d74 printf <br>
08049d84 __strtod_internal <br>
08049d94 fl_set_slider_bounds <br>
08049da4 fl_set_form_atclose <br>
08049db4 ungetc <br>
08049dc4 sigemptyset <br>
08049dd4 strerror <br>
08049de4 fl_end_group <br>
08049df4 hsearch <br>
08049e04 fl_show_question <br>
08049e14 fl_add_roundbutton <br>
08049e24 XCloseDisplay <br>
08049e34 getenv <br>
08049e44 fl_add_text <br>
08049e54 fl_set_input_filter <br>
08049fd4 fl_hide_object <br>
08049fe4 lseek <br>
08049ff4 abort <br>
0804a004 fl_end_form <br>
0804a014 fl_remove_io_callback <br>
0804a024 pipe <br>
0804a034 fl_set_object_color <br>
0804a044 fl_set_object_posthandler <br>
0804a054 calloc <br>
0804a064 fl_bgn_form <br>
0804a074 rindex <br>
0804a084 write <br>
0804a094 fprintf <br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -