【逆向】破解苏亚星:卸载学生机

最近上机课多出来一些琐碎的时间,于是我乘着无聊,顺便为了巩固一下刚刚入门的反汇编,然后看到桌面上的学生机挺碍眼(-_-;),当即决定拿它开刀了!


首先,试了下,如果用任务管理器结束学生机程序student.exe,那过不久它会重新启动,我猜想是后台有个守护程序,一旦检测到student.exe关闭,就重新打开它。考虑到时间问题,我没有仔细去研究,而是采用如下投机取巧的方法。


其实苏亚星自己有卸载学生机的程序,不过要输入管理员密码。那这样我们的目标就明确了,只要能找到管理员密码就行。 



先用PEiD检测了下,程序没有加壳,嘛,还是对新手挺友好的~

然后,我们使用强大的动态追踪反汇编工具OllyDbg,点击字符串参考工具,搜索unicode关键字“密码”,我们能找到以下内容:




跳转到相关汇编语句,我们能看到如下内容:







这里应该就是密码验证的代码,往上拉一下,能看到注释有"adminpwd"字样,我认为这一段应该会有管理员密码的提示,我先直接试了下“adminpwd”行不行,尝试了下以后,果然不行(这是当然啦- -)。

再往上拉看又能看到"%ssysdata\config.ini"这段注释,这明显是个设置文件。顿时我觉得这个文件一定有猫腻(难道密码就藏在这里?),于是跟随到苏亚星的目录下,C:\Program Files\AsiaStar\Mars8.1下有个config.ini文件,打开一看,里面有如下内容:


[Student]
TcpPort=6990
SvrIp=192.168.52.253
AutoFind=1
AutoSaveIP=1
AdminPwd=200CEB26807D6BF99FD6F4F0D1CA54D4
SysHAC=0
BindIP=
LastSecPara=0
[LogClt]
ip=192.168.52.253
port=6993



想必管理员密码就在这里面。


接着,看到了AdminPwd字段,显而易见,是管理员密码(居然还真藏在了这里!),它的值是"200CEB26807D6BF99FD6F4F0D1CA54D4"(为何感觉如此感觉似曾相识) ,是32个16进制数。

PS:当时我还拿这个当做密码试了下,不过结果当然是失败- -,所以这段密码还是被加密过的。

其实这32个16进制数是MD5码,卸载学生机程序应该就是先从用户窗口中读取输入的密码再加密成md5,再从这个config.ini文件读取这一段md5码,然后,最后将两个md5码比对,看看是否匹配。


PS:看到了汇编代码中有调用mfc的dll中的函数来进行加密,这里顺便去考查了下,原来MFC库里还有真提供了md5的加密函数(-_-;)。


接下来想想看破解方案:

考虑到MD5码是不可逆的,所以我们不打算破解这段密码,而是投机取巧去修改这段密码,比如:我们想要修改成1234,随便拿一个md5加密器,将1234加密成md5,得到"81DC9BDB52D04DC20036DBD8313ED055",修改config.ini文件的AdminPwd字段,使其变成:

AdminPwd=81DC9BDB52D04DC20036DBD8313ED055

然后打开卸载学生机程序,输入密码1234,然后确定,过了一会儿便大功告成啦!




评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值