用SoftICE进行reverse engineering的一个例子(转载)

news/2024/7/7 13:20:13
转自http://dgdown.myetang.com/text/text24.htm,译者和原作者未知。

Sub7中的公用密码的发现


我们的目标是Sub7你认为,你在Sub7的服务端设置了一个密码,那么其他人就无法连接它了吗?
你犯了一个大错误!这儿我就向你展示,我是怎样在这木马服务端找到安全漏洞的。

你需要的工具:

(x) SoftICE (+ SymbolLoader.)可以从crack迷们要到,许多crack网站也可以找到!
(x) Hiew 6.16,一个编辑器。
(x) 目标, Sub7, 可在这里找到: subseven.slak.org
(x) SoftICE's 命令和汇编语言的基础知识.


让我们开始吧:

我对连接客户端的时候,让密码进行比较的过程比较感兴趣。所以,我使用SoftICE's的symbol
loader输入一些winsock的端口 :)

运行loader,点击“FILE--LOAD EXPORTS”菜单,指向你的windows系统目录,选择"wsock32.dll"
打开。SymbolLoader应该显示:

"Exports for Z:/WINDBLOWZ/SYSTEM/Wsock32.dll loaded sucessfully"

现在去使用 EditServer.exe文件设置Sub7的服务端(请看其它文档,我在这儿不提了)我设置端口
为666,密码为“abuse”.运行服务端的木马,你不久就可以被安装好服务端,但千万别在网上。(
关于这个程序我不对你负任何责任,它不是我编的)执行SubSeven.exe连接到服务端(IP地址为127.0.0.1,
就是你本机了),密码框会弹出来,任意输入一个密码。服务端是用WSOCK32!recv接收客户端的信息的。
Windows的Sockets recv 接收数据功能使用一个Socket.结构如下:

int recv (

SOCKET s,
char FAR* buf,
int len,
int flags
);
第二行(char FAR* buf)非常重要。信息就储藏在那里。现在,在softice中在recv上设置断点
(输入 "d esp->8")点击OK送出密码。SoftICE回弹出,按F11(g @ss:esp)。跳到密码部分时会在
SoftICE的信息栏中显示'PWD'。现在在密码的地址中设置一个断点。(如: bpr 405000 405010 RW)
Now set a bpr on the password's address (e.g.: bpr 405000 405010 RW) and on the copy
it will make at 004029c5.

下一次你将会停在004040dd:

0167:004040dd 8b0e mov ecx,[esi]
0167:004040df 8b1f mov ebx,[edi]
0167:004040e1 39d9 cmp ecx,ebx
0167:004040e3 7558 jnz 0040413d
0167:004040e5 4a dec edx
0167:004040e6 7415 jz 004040fd
0167:004040e8 8b4e04 mov ecx,[esi+04]
0167:004040eb 8b5f04 mov ebx,[edi+04]
0167:004040ee 39d9 cmp ecx,ebx

它停在了4040dd这一行,我们在我们的密码上设置了一个断点。那么它在本地将保存在esi中。前四个字母
移到ecx中。另外四个字母存在ebx中后进行比较...你现在认为,你发现了密码比较的地方了吗?不,不,
没门!其实Sub7的作者更愚蠢!!!在softice中输入“d edi”看看:

016F:012A3DD4 31 34 34 33 38 31 33 36-37 38 32 37 31 35 31 30 1443813678271510
016F:012A3DE4 31 39 38 30 00 69 6F 00-28 00 00 00 22 00 00 00 1980.io.(..."...
016F:012A3DF4 01 00 00 00 13 00 00 00-53 75 62 73 65 76 65 6E ........Subseven
016F:012A3E04 5F 5F 5F 3C 20 70 69 63-6B 20 3E 00 10 3E 2A 01 ___< pick >..>*.
016F:012A3E14 10 3E 2A 01 38 00 00 00-53 75 62 73 65 76 65 6E .>*.8...Subseven

奇怪,那不是我设置的“abuse”密码。那么让我们在连接一次试试...SubSeven显示:connected.
啊,那怎么可能?SubSeven留一个系统密码吗?呵呵,你可以在自己的电脑上再试几次。啊,是的,
那是系统密码。

好的就到这儿了,我只是想有人会对这感兴趣的。我对这遍文章不负任何责任!

祝好运!

http://www.niftyadmin.cn/n/3725918.html

相关文章

网络虚拟化之FlowVisor:网络虚拟层(中)

一. 概念理解和回顾 上一篇博客说了&#xff0c;切片定义为一个虚拟网络的实例&#xff0c;而组成切片的流可以被当作有所有可能出现的数据包的包头构成的整个几何空间的一个子空间。举一个例子&#xff0c;OpenFlow的流表项会匹配一定的域&#xff0c;我们可以按照不同的域将整…

《gradle 用户指南》中文版 目录

gradle 用户指南 版权所有©2007-2017 Hans Dockter&#xff0c;Adam Murdoch只要您不对这些副本收取任何费用&#xff0c;并且进一步规定&#xff0c;每个副本都包含本版权声明&#xff0c;无论是以印刷版还是电子版分发&#xff0c;本文档的副本可供您自己使用并分发给他…

防火墙交换模式和路由模式问题 (转至 绿盟)

主题 防火墙交换模式和路由模式问题 上一主题 | 下一主题 fong 发表于&#xff1a;2003-06-27 10:36回复发帖&#xff1a; 34注册&#xff1a; 2002-08-12两者在性能和安全性上有何区别呢&#xff1f;大家讨论下吧。 南阳岩冰 发表于&#xff1a;2003-06-27 11:45回复发帖&a…

成功的发行模式(标题 我自己改的 转至 敏思博客)

成功的封面设计可以极大提升期刊发行量/博客日志/敏思博客 博客日志 作者&#xff1a;就这么简单&#xff08;leokuo&#xff09; 发表于&#xff1a;2004年10月5日 22:00 浏览&#xff1a;127 评论&#xff1a;0 字数&#xff1a;4677 成功的封面设计可以极大提升期…

10行Java代码实现最近被使用(LRU)缓存

在最近的面试中&#xff0c;我曾被多次问到&#xff0c;怎么实现一个最近最少使用&#xff08;LRU&#xff09;的缓存。缓存可以通过哈希表来实现&#xff0c;然而为这个缓存增加大小限制会变成另一个有意思的问题。现在我们看一下怎么实现。 最近最少使用缓存的回收 为了实现缓…

Internet不再是专属名词 美联社将启用小写

据外媒报道&#xff0c;从今天夏天开始&#xff0c;很多传统的外国媒体将放弃传统的老式科技新闻界的习俗&#xff0c;即互联网的专属名词大写的“the Internet”。 美联社近日宣布&#xff0c;“Internet”将不再是专属名词&#xff0c;未来他们将在各大新闻报道中使用小写的i…

你与其他程序员可能常犯的 6 个错误

我担任 CTO 已经有一段时间了&#xff0c;我觉得这是一个非常好的锻炼机会&#xff0c;因为我不仅可以编写代码&#xff0c;还要带领团队&#xff0c;管理项目&#xff0c;设计架构&#xff0c;组织工作&#xff0c;审查代码&#xff0c;调查不同的问题&#xff0c;研究各种解决…

QQ在线时长等级说明

腾讯QQ 2004II beta1全新推出在线时长功能&#xff0c;通过累积在线时长&#xff0c;您就可以获取相应的QQ等级。累积在线时长等级将有机会参加我们即将推出的奖励活动和享受相关的优惠服务&#xff0c;而不影响正常的QQ使用。 在线时长从去年下半年开始统计&#xff0c;使用腾…