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

📄 program-crack-mtv-detail.html

📁 学习linux的工具书
💻 HTML
📖 第 1 页 / 共 4 页
字号:
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
   <meta name="Author" content="Edward Fu">
   <meta name="GENERATOR" content="Mozilla/4.05 [zh-CN] (X11; I; Linux 2.1.127 i686) [Netscape]">
   <title>Freesoft Linux FAQ -- Linux下破解实战--Crack MTV</title>
</head>
<body>
发信人: I007 (阿健), 信区:
Linux
<br>标&nbsp; 题: Linux下破解实战
<br>发信站: BBS 水木清华站 (Wed Sep 30 22:13:49 1998) WWW-POST
<br>&nbsp;
<p>其实自已也只破解过一个Linux的程序: MTV Player 1.0.6.6, 所以
<br>这只是个人的一点经验,欢迎大家交流, 我的email是: <a href="mailto:jesse@263.net">jesse@263.net</a>
<p>那就言归正传罗:
<p>&nbsp;&nbsp;&nbsp; linux的破解(i386)相对于其它unix下的破解自然要容易一些,因为
<br>大家对于8086系列的结构以及汇编多少都有些了解。不过对于第一次做
<br>linux下的破解,还是让人感到富有挑战而又令人兴奋的.
<br>&nbsp;&nbsp;&nbsp; 要动手破解,除了破解本身的乐趣外,动力多半还是来自被破解对象
<br>--应用程序的诱惑, 我就是被mtv player的功能给吸引了,又不满它每次
<br>只放一小会就静音了, 于是乎我抄起了家伙---gdb
<p>&nbsp;&nbsp;&nbsp; 老实说,原来没怎么用过gdb, 经常是通过xwpe间接的用,于是当时
<br>就抱了抱佛脚。
<br>&nbsp;&nbsp;&nbsp;&nbsp; gdb主要是针对源程序的调试除错的,对汇编级的支持的并不好(最
<br>不好的就是没有类似debug中的a命令,没法汇编),对于破解,gdb常用的命令
<br>有:
<br>&nbsp;&nbsp;&nbsp;&nbsp; info target 显示当前目标的一些信息,包括一些分段的信息
<br>&nbsp;&nbsp;&nbsp;&nbsp; info functions 可以列出所有定义的函数名和数据类型,相当有用,
<br>有的程序检查系列号和License会在一个名称明确的函数里
<br>&nbsp;&nbsp;&nbsp;&nbsp; info functions REGEXP 可以列出匹配正规表达表的函数
<br>&nbsp;&nbsp;&nbsp;&nbsp; info registers 列出所有寄存器(除浮点)的值,
这个跟踪时自然常用到
<br>&nbsp;&nbsp;&nbsp;&nbsp; info all-registers 列出所有寄存器(包括浮点)的值
<br>&nbsp;&nbsp;&nbsp;&nbsp; info registers REGNAME... 列出所指出的所有寄存器的值
<br>&nbsp;&nbsp;&nbsp;&nbsp; info break 列出所有的断点和观察点
<br>&nbsp;&nbsp;&nbsp;&nbsp; break *ADDR&nbsp; 在地址ADDR处设置断点
<br>&nbsp;&nbsp;&nbsp;&nbsp; break FUNCTION 在函数FUNCTION处设置断点
<br>&nbsp;&nbsp;&nbsp;&nbsp; clear FUNCTION 删除在函数FUNCTION入口处的断点
<br>&nbsp;&nbsp;&nbsp;&nbsp; delete BNUMS 删除BNUMS指定序点的断点或观察点
<br>&nbsp;&nbsp;&nbsp;&nbsp; backtrace(bt) 显示堆栈中的信息,也很有用,可以在调试中搞清楚当前的调用关系
<br>&nbsp;&nbsp;&nbsp;&nbsp; x/NFU ADDR 这个也是常用,N:重复数, F:显示格式,s字串,i机器码,
<br>缺省是x十六进制数, U:单元大小,b字节,h半字(两字节),w字(四字节,缺省)
<br>ADDR为地址,如 x/3uh 0x54320
<br>&nbsp;&nbsp;&nbsp;&nbsp; set $REGNAME=VALUE&nbsp; 设定寄存器REGNAME的值为VALUE,还可以是
<br>set $sp += 4这样的让sp加4
<br>&nbsp;&nbsp;&nbsp;&nbsp; set {TYPE}ADDR=VALUE 将地址ADDR的TYPE类型的值设为VALUE,例
<br>如:set {int}0x83040=4
<br>&nbsp;&nbsp;&nbsp;&nbsp; nexti(ni) 执行一行机器码,如果是函数调用,则执行到函数返回
<br>&nbsp;&nbsp;&nbsp;&nbsp; stepi(si) 执行一行机器码,如果是函数调用,则进入函数
<br>&nbsp;&nbsp;&nbsp;&nbsp; disassemble FUNCTION 反汇编FUNCTION函数
<br>&nbsp;&nbsp;&nbsp;&nbsp; disassemble ADDR1 ADDR2 反汇编ADDR1和ADDR2间的机器码
<br>&nbsp;&nbsp;&nbsp;&nbsp; disassemble ADDR 反汇编ADDR所在的函数
<br>&nbsp;&nbsp;&nbsp;&nbsp; run(r)&nbsp; 开始执行程序到第一个断点或程序结束
<br>&nbsp;&nbsp;&nbsp;&nbsp; continue(c) 继续程序的执行到下一断点或程序结束
<br>&nbsp;&nbsp;&nbsp;&nbsp; continue(c) IGNORE-COUNT 继续程序的执行并忽略掉IGNORE-COUNT个断
<br>点,在第IGNORE-COUNT+1个断点停下或程序结束
<br>&nbsp;
<p>正式开工了:
<p>&nbsp;&nbsp;&nbsp; 运行mtv,首先出现的是对话框,要求"Enter Key"或是"Try
it!",选"Enter Key",
<br>填写了资料后,提示注册信息不正确, 显然这其中做了Key的合法性检查,于时选中这
<br>里做突破口:
<p>$ 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.&nbsp; Type "show warranty"
for details.
<br>This GDB was configured as "i386-redhat-linux"...
<br>(no debugging symbols found)...
<br>(gdb)
<p>通常第一个断点可以设在_start函数处,也可以先运行,中途送中断信号让它停下来
<br>(一般可以 kill -18 pid, 18是SIGCONT)做这些之前还可以先看看程序中的函数
<br>(包括使用到的共享库的函数),特别对于Xwindows应用程序,这点十分重要:
<br>(gdb)info functions
<br>All defined functions:
<p>Non-debugging symbols:
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049cf0&nbsp; _init
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049d34&nbsp; fl_set_object_lstyle
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049d44&nbsp; fl_set_object_gravity
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049d54&nbsp; fl_add_browser
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049d64&nbsp; waitpid
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049d74&nbsp; printf
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049d84&nbsp; __strtod_internal
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049d94&nbsp; fl_set_slider_bounds
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049da4&nbsp; fl_set_form_atclose
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049db4&nbsp; ungetc
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049dc4&nbsp; sigemptyset
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049dd4&nbsp; strerror
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049de4&nbsp; fl_end_group
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049df4&nbsp; hsearch
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049e04&nbsp; fl_show_question
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049e14&nbsp; fl_add_roundbutton
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049e24&nbsp; XCloseDisplay
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049e34&nbsp; getenv
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049e44&nbsp; fl_add_text
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049e54&nbsp; fl_set_input_filter
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049fd4&nbsp; fl_hide_object
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049fe4&nbsp; lseek
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08049ff4&nbsp; abort
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a004&nbsp; fl_end_form
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a014&nbsp; fl_remove_io_callback
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a024&nbsp; pipe
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a034&nbsp; fl_set_object_color
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a044&nbsp; fl_set_object_posthandler
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a054&nbsp; calloc
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a064&nbsp; fl_bgn_form
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a074&nbsp; rindex
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a084&nbsp; write
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a094&nbsp; fprintf
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a0a4&nbsp; kill
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a0b4&nbsp; ctime
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a0c4&nbsp; fl_get_menu
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a0d4&nbsp; strcat
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a0e4&nbsp; fl_bgn_group
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a0f4&nbsp; fl_set_atclose
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a104&nbsp; chdir
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a114&nbsp; fl_invalidate_fselector_cache
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a124&nbsp; XCreateBitmapFromData
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a134&nbsp; fseek
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a144&nbsp; mktime
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a154&nbsp; fl_show_fselector
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a164&nbsp; __libc_init_first
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a174&nbsp; fl_do_forms
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a184&nbsp; signal
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a194&nbsp; read
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a1a4&nbsp; fl_get_fselector_form
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a1b4&nbsp; fl_set_form_icon
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a1c4&nbsp; fl_set_slider_value
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a1d4&nbsp; fl_set_timer
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a1e4&nbsp; XParseGeometry
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a1f4&nbsp; fl_show_object
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a204&nbsp; strncpy
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a214&nbsp; unlink
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a224&nbsp; strcasecmp
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a234&nbsp; fl_set_form_geometry
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a244&nbsp; fl_get_menu_item_mode
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a254&nbsp; fl_add_input
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a264&nbsp; fl_get_input&nbsp;&nbsp;
&lt;------------------好显眼啊..:P
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a274&nbsp; _IO_getc
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a284&nbsp; fork
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a294&nbsp; sscanf
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a2a4&nbsp; fl_hide_oneliner
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a2b4&nbsp; sigaction
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a2c4&nbsp; fl_set_focus_object
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a2d4&nbsp; strdup
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a2e4&nbsp; gettimeofday
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a2f4&nbsp; fl_add_slider
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a304&nbsp; fopen
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a314&nbsp; memset
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a324&nbsp; ftell
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a334&nbsp; fl_set_menu
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a344&nbsp; fl_get_pattern
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a354&nbsp; fl_set_oneliner_color
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a364&nbsp; fclose
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a374&nbsp; time
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a384&nbsp; fl_add_valslider
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a394&nbsp; fl_set_object_lcol
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a3a4&nbsp; fl_set_object_label
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a3b4&nbsp; fl_set_counter_step
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a3c4&nbsp; fl_library_version
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a3d4&nbsp; fl_show_oneliner
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a3e4&nbsp; sprintf
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a3f4&nbsp; fl_set_border_width
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a404&nbsp; atexit
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a414&nbsp; fl_mapcolor
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a424&nbsp; fl_initialize
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a434&nbsp; fl_set_menu_item_mode
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a444&nbsp; fl_set_input_maxchars
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a454&nbsp; fl_set_browser_fontstyle
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a464&nbsp; fl_get_button
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a474&nbsp; fl_hide_form
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a484&nbsp; fl_set_counter_bounds
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a494&nbsp; fl_set_object_lsize
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a4a4&nbsp; fl_add_checkbutton
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0804a4b4&nbsp; fl_set_object_callback

⌨️ 快捷键说明

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