锦州市广厦电脑维修|上门维修电脑|上门做系统|0416-3905144热诚服务,锦州广厦维修电脑,公司IT外包服务
topFlag1 设为首页
topFlag3 收藏本站
 
maojin003 首 页 公司介绍 服务项目 服务报价 维修流程 IT外包服务 服务器维护 技术文章 常见故障
锦州市广厦电脑维修|上门维修电脑|上门做系统|0416-3905144热诚服务技术文章
[.NET逆向] 对一个在线学习的秒挂助手的破解

作者: wmsuper  日期:2017-05-18 08:51:46   来源: 本站整理

 



0x01 软件分析
软件是由C#写的,需要充值,否则不能使用,其次软件并没有加壳,猜测能直接爆破。
 

0x02 软件破解
直接改跳转,把brtrue.s  ->(206)  改成brtrue.s  ->(188)  即无论正确与否都跳转到下一句,到这里,保存之后能成功运行并开始进行秒挂操作,看样子是成功破解了
 
0x03 遇到问题
在破解第二天之后,发现软件不行了,全部失败,估计有验证。
 

仔细查看代码,发现程序在确认信息的时候,会发送支付请求,但是实际上余额不足不会发起支付请求的,所以这样会

被作者察觉可能软件被非法修改。那么他是如何让秒挂结果失败的呢?进一步发现有一处登陆的地方,获取登陆后的cookies,

但是登陆的账号和密码并不是发往在线学习网站,而是发往作者服务器的,由作者的服务器作为代{过}{滤}理对在线学习的网站发起请求,
并返回对应的登陆cookies,所以作者可以轻易把账号或IP作为黑名单拉黑。
 
示意图如下:
 
从以上可以知道,软件并没有实现登陆网站的逻辑,登陆逻辑在服务器上,但是却实现了秒挂的代码,所以要实现的是直接登陆获取获取登陆cookies而不依赖作者的服务器。
0x04 软件补完计划
先把程序反编译并导出,并把所有关于支付的代码注释掉。研究了下登陆POST的请求,发现很简单,教科书式的登陆:
 
写出获取cookies的函数,替换掉原来获取cookies的代码,这样就能把软件缺少的那部分代码逻辑补完了(ps:还有一处获取cookies的地方,原理差不多,不再赘述。)

[C#] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public string getCookies(string url, string account, string password)
       {
           CookieContainer cc = new CookieContainer();
           HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
           request.Method = "POST";
           string postData = "txtLoginName=" + account + "&txtPassword=" + password;
           byte[] byteArray = Encoding.UTF8.GetBytes(postData);
           request.ContentType = "application/x-www-form-urlencoded";
           request.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2";
           request.ProtocolVersion = HttpVersion.Version11;
           request.AllowAutoRedirect = true;
           request.ContentLength = byteArray.Length;
           request.CookieContainer = cc;
           Stream dataStream = request.GetRequestStream();
           dataStream.Write(byteArray, 0, byteArray.Length);
           dataStream.Close();
           HttpWebResponse response = (HttpWebResponse)request.GetResponse();
           dataStream = response.GetResponseStream();
           StreamReader reader = new StreamReader(dataStream);
           string responseFromServer = reader.ReadToEnd();
           reader.Close();
           dataStream.Close();
           response.Close();
           //判断登录是否成功
           // Console.WriteLine(responseFromServer);
 
           if (responseFromServer.Contains("用户名或密码错误"))
               return "-1";
           else
               return cc.GetCookieHeader(request.RequestUri); ;
 
       }

[C#] 纯文本查看 复制代码
1
this.student_COOKIE =getCookies("http://student.uestcedu.com/login.jsp", this.txtUserName.Text, this.txtPassWord.Text);


0x05 建议
1.加强壳,比较厉害当然是DNG啦。
2.把重要的代码实现逻辑都放在服务器上,那么破解程序的难度不亚于重新编写一个程序的难度。(注意处理网站的安全性,尤其是个人网站,否则黑客嘿嘿嘿)


热门文章
  • 机械革命S1 PRO-02 开机不显示 黑...
  • 联想ThinkPad NM-C641上电掉电点不...
  • 三星一体激光打印机SCX-4521F维修...
  • 通过串口命令查看EMMC擦写次数和判...
  • IIS 8 开启 GZIP压缩来减少网络请求...
  • 索尼kd-49x7500e背光一半暗且闪烁 ...
  • 楼宇对讲门禁读卡异常维修,读卡芯...
  • 新款海信电视机始终停留在开机界面...
  • 常见打印机清零步骤
  • 安装驱动时提示不包含数字签名的解...
  • 共享打印机需要密码的解决方法
  • 图解Windows 7系统快速共享打印机的...
  • 锦州广厦电脑上门维修

    报修电话:13840665804  QQ:174984393 (联系人:毛先生)   
    E-Mail:174984393@qq.com
    维修中心地址:锦州广厦电脑城
    ICP备案/许可证号:辽ICP备2023002984号-1
    上门服务区域: 辽宁锦州市区
    主要业务: 修电脑,电脑修理,电脑维护,上门维修电脑,黑屏蓝屏死机故障排除,无线上网设置,IT服务外包,局域网组建,ADSL共享上网,路由器设置,数据恢复,密码破解,光盘刻录制作等服务

    技术支持:微软等