网管中心的bbs服务器是基于RedHat5.1的Linux系统。作为临时bbs管理员,一天坐
在那里上比比哀思真的是很无聊。于是想用Xwindows来上万维网。但着台服务器偏偏是
讨厌的Sis 6236显卡,Xwindows根本就用不起,于是在沉淀的ftp上下了一个AccelerateX5.
0DEMO版。安装倒是非常的顺利,但讨厌的DEMO版非要在99年1月4号以前用。我把服务器的日
期调到1月4号之前则可以用,且效果很好!但作为bbs服务器,日期之重要,日期一变非但发
表文章不正常,每日排行榜也不能正常工作。那如何解决这个问题呢?把它搞定!!这么多
程序都是我可以轻松搞定的,区区一个AX算得了什么!在重起了N次gdb,重设了N次break
*0x804bxxx之后终于找到了关键的地方!千万不要以为断点是很好找的,特别是在Linux下。
找断点的功力需要在实践中长期练就,想当年的LOCK 89,90,91,95 NT,BitLOK,KeyMake
,LockMaster......都是在反跟踪措施非常严密的情况下步步跟踪到核心的。现在的程序有
个暴好的优点,那就是统统没有反跟踪代码!可以说是去除了破解软件的最大的困难,难度
从而降低了95%!那在Linux破解还有什么难度呢?难度是大大的,那就是:在Linux这种不太
成熟的操作系统下,连调试软件也是极其的难用!哪像Win95/DOS下大名鼎鼎的Soft-ice,
Turbo Debugger......像察看内存,修改内存这样的基本功能都没有!TMD!还有就是gdb下的
反汇编太伤脑筋了,看惯了Soft-ice和Debug下的汇编,看gdb下的真是像天书!还好,我功力
深厚,办法多:-)
来吧,切入正题,试试身手!
先启动Linux(废话),登录(又是废话),取得一定权限(如果你是root,那就方便多了,
俗话说得好“我是root我怕谁” xxx语)!
先看看你的AX50DEMO和我的一不一样!跟着作吧:-)
[~/]#cd /usr/X11R6/lib/X11/AccelerateX/bin
[/usr/X11R6/lib/X11/AccelerateX/bin]#gdb Xaccel-glibc ;用gdb调入AX50DEMO主程序
GNU gdb 4.17
Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux"...
(no debugging symbols found)...
(gdb)disass _start 反汇编函数 _start(Linux下的程序基本上都是以_start
或_init开始的)
Dump of assembler code for function _start:
0x804b520<_start>: xorl %ebp,%ebp
0x804b522<_start+2>: testl %edx,%edx
0x804b524<_start+4>: je 0x804b52d<_start+13>
0x804b526<_start+6>: pushl %edx
0x804b527<_start+7>: call 0x804b214
0x804b52c<_start+12>: popl %eax
0x804b52d<_start+13>: call 0x804ae24<__libc_init_first>
0x804b532<_start+18>: popl %esi
0x804b533<_start+19>: leal 0x4(%esp,%esi,4),%eax
0x804b537<_start+23>: movl %eax,0x80d33d8
0x804b53c<_start+28>: movl %esp,%edx
0x804b53e<_start+30>: andl $0xfffffff8,%esp
0x804b541<_start+33>: pushl %eax
0x804b542<_start+34>: pushl %eax
0x804b543<_start+35>: pushl %edx
0x804b544<_start+36>: pushl %esi
0x804b545<_start+37>: call 0x804a750<_init>
0x804b54a<_start+42>: pushl $0x80c3bb0
0x804b54f<_start+47>: call 0x804b214
0x804b554<_start+52>: popl %eax
0x804b555<_start+53>: call 0x804c96c<_start+5196>
0x804b55a<_start+58>: pushl %eax
0x804b55b<_start+59>: call 0x804b324
0x804b560<_start+64>: hlt
0x804b561<_start+65>: nop
0x804b562<_start+66>: nop
0x804b563<_start+67>: nop
0x804b564<_start+68>: pushl %ebp
0x804b565<_start+69>: movl %esp,%ebp
0x804b567<_start+71>: cmpl $0x0,0x80cdd8c
0x804b56e<_start+78>: jne 0x804b5a3<_start+131>
0x804b570<_start+80>: jmp 0x804b585<_start+101>
0x804b572<_start+82>: movl %esi,%esi
0x804b574<_start+84>: addl $0x4,0x80cdd88
0x804b57b<_start+91>: movl 0x80cdd88,%eax
0x804b580<_start+96>: movl 0xfffffffc(%eax),%eax
0x804b583<_start+99>: call *%eax
0x804b585<_start+101>: movl 0x80cdd88,%eax
0x804b58a<_start+106>: cmpl $0x0,(%eax)
0x804b58d<_start+109>: jne 0x804b574<_start+84>
0x804b58f<_start+111>: pushl $0x80d2bd4
0x804b594<_start+116>: call 0x80c397c
0x804b599<_start+121>: movl $0x1,0x80cdd8c
0x804b5a3<_start+131>: leave
0x804b5a4<_start+132>: ret
0x804b5a5<_start+133>: leal 0x0(%esi),%esi
0x804b5a8<_start+136>: pushl %ebp
0x804b5a9<_start+137>: movl %esp,%ebp
0x804b5ab<_start+139>: leave
0x804b5ac<_start+140>: ret
0x804b5ad<_start+141>: leal 0x0(%esi),%esi
.......
.......
.......
0x804b776<_start+598>: movl $0x63,0xffffef5c(%ebp)
0x804b780<_start+608>: movl $0x3,0xffffef58(%ebp)
0x804b78a<_start+618>: movl $0x1,0xffffef54(%ebp)
0x804b794<_start+628>: movl $0x0,0xffffef50(%ebp)
0x804b79e<_start+638>: movl $0x0,0xffffef4c(%ebp)
0x804b7a8<_start+648>: movl $0x1,0xffffef48(%ebp)
0x804b7b2<_start+658>: movl $0xffffffff,0xffffef68(%ebp)
0x804b7bc<_start+668>: pushl %eax
0x804b7bd<_start+669>: call 0x804ade4 ;获得时间
0x804b7c2<_start+674>: addl $0x4,%esp
0x804b7c5<_start+677>: cmpl $0xffffffff,%eax ;调用成功否?eax为返回值
0x804b7c8<_start+680>: je 0x804b7d2<_start+690>
0x804b7ca<_start+682>: cmpl %eax,0xffffeaec(%ebp)
0x804b7d0<_start+688>: jle 0x804b7dc<_start+700> ;小于则转到_start+700
0x804b7d2<_start+690>: pushl $0xffffffff ;失败标志'-1'入栈
0x804b7d4<_start+692>: call 0x804c948<_start+5160> ;失败处理并退出
0x804b7d9<_start+697>: addl $0x4,%esp
0x804b7dc<_start+700>: pushl $0x13880000 ;进入主程序
0x804b7e1<_start+705>: call 0x804ed80<_start+14432>
0x804b7e6<_start+710>: addl $0x4,%esp
0x804b7e9<_start+713>: testl %eax,%eax
0x804b7eb<_start+715>: jne 0x804b7fa<_start+730>
0x804b7ed<_start+717>: pushl $0x80c3ce4
0x804b7f2<_start+722>: call 0x8092674
0x804b7f7<_start+727>: addl $0x4,%esp
.......
.......
.......
q 这是退出命令
[/usr/X11R6/lib/X11/AccelerateX/bin]#
既然关键的地方找到了!那就该改原代码了。在dos/win95下要改代码很简单,先获得
指令的16进制代码,在调试器或16进制编辑器中查找到直接改掉即可!但在Linux下就......
还好我还没把我的M$ dos和Win95丢掉。跟着我作吧!
[/usr/X11R6/lib/X11/AccelerateX/bin]#mount /dev/fd0 -tvfat /mnt/fd ;插入软盘把软驱
蟒上(在目录/mnt/fd)
[/usr/X11R6/lib/X11/AccelerateX/bin]#cp Xaccel-glibc /mnt/fd ;把主文件考到软盘上
[/usr/X11R6/lib/X11/AccelerateX/bin]#umount /dev/fd0 ;卸下
(或直接把dos/win95的分区mount上,拷贝之,如果管理员给了你这个权限)
重起计算机或换台计算机,把软盘上的程序考到硬盘上!启动我最喜爱的,大名鼎鼎的
,最拉风的,最芭腊的Soft-ice(千万不要告诉我你不会启动Soft-ice,我cow,信不信我一刀
捅死你)!用Soft-ice的装入器(一般是Symbol Loader.exe)随便调入一个32为的程序(如calc.
exe).用a命令(汇编)把关键部分的指令(就是上面写的,但要翻译成一般的汇编格式)输入:
xxxxxxxx:cmp [ebp+0ffffeaec],eax ;就是cmpl %eax,0xffffeaec(%ebp)啦
xxxxxxxx:jle XXXXXXXX ;XXXXXXXX乱填
xxxxxxxx:jge XXXXXXXX ;XXXXXXXX乱填
在用code on命令把指令的16进制代码显示出来!
xxxxxxxx:3985eceaffff cmp [ebp+0ffffeaec],eax
~~~~~~~~~~~~记下该16进制代码
xxxxxxxx:7exx jle XXXXXXXX
~~~~~~~~~~~~记下该16进制代码
xxxxxxxx:7dxx jgl XXXXXXXX
~~~~~~~~~~~~记下该16进制代码
用exit命令强行退出(会获得一个非法指令错误,不理它)
看到这里,看官们都知道了,只要把jle 0x804b7dc<_start+700>改成
jge 0x804b7dc<_start+700>就可以了!
也就是把7e改成7d即可!
有人会说原理好~简单,但步骤好~复杂!我也没更好~办法,其实破解Linux程序的一般步
骤就只有这样了,将就用吧!但是看官你需要作的很简单:
1。把主程序Xaccel-glibc考到硬盘上
2。用不管什么编辑器修改,查找3985eceaffff7e,改为3985eceaffff7d,存盘。
3。把Xaccel-glibc考回去,覆盖之
好了好了!写这么多字,好辛苦哟(我打字极慢,用全拼,还分不清前鼻音后鼻音,卷
舌音,翘舌音......痛苦异常,速度可想而知,!)这全是为了全xx类,为了我国的xx技术,为
了早日实现xx的现代化......
上篇大作不知各位看了没有,没看?那肯定4月26日遭惨了!还不看?“Cih1.4病毒之
中文详解”,快去下吧ftp://202.115.32.2/incoming/tpo/cih14.asm或到我的主页上去瞧瞧:
http://bbs.scu.edu.cn/~tpo好东西多多哟(Email:zd_dan@263.net)!
鉴于cih病毒再次的爆发流行和4月26日的惨痛教训,我决定把cih病毒的发作模块好身
剖析一下,再把遭cih清洗的硬盘的恢复方法好好研究一下,写成文章张贴出来!
各位看官,敬请期待我的大作吧!下次再见咯!
相关视频
相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么
热门文章 去除winrar注册框方法
最新文章
比特币病毒怎么破解 比去除winrar注册框方法
华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据
人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程
查看所有0条评论>>