http://bbs.pediy.com/showthread.php?t=45356&highlight=%E7%BD%91%E7%BB%9C+%E7%BB%9C%E9%AA%8C+%E9%AA%8C%E8%AF%81【求助】一个挂的破解历程;

如果网络验证没有很好的算法的话, 那么简直是给破解者开方便之门.
本文针对的就是一种简单的网络验证算法, 简单到  仅供一笑.

正文:

第一次跟踪MFC写的程序, 着实给它郁闷死了. 到最后还是没有正面解决 :( 绕过了正面分析, 从后面突破.

这个软件分为两个版本: 1, 是普通用户, 免费但是打开的时候有一个弹出广告. 2, 是类似VIP的用户, 比普通用户多出几个功能. 两个版本分别有不同的客户端, 但是它们的数据驱动是相同的, 这就成为了我们下手的地方.我们可以大胆的推测, 从服务器上发下来的数据应该同时适用于两种不同的客户端, 如果侥幸的话, 或许我们甚至可以弄到VIP的数据, 当然, 如果倒霉点的话, 我们至少可以绕过那个开始的广告了, 而不用对主程序进行修改. 那么, 我们该如何下手呢?

要得到服务器的承认, 登录是必不可少的, 用Iris可以帮你嗅探到这些登录数据. (Iris是收费软件, 这里提供的是试用版的连接, 网上找的Iris有可能是其他奇怪的软件, 或者你可以找4.X版本的).
用普通账户在两个不同的客户端登录看看, 可以拦截到下面信息:

普通客户端

Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F

00000000 B0 00 00 00 1B 02 00 00 0B 00 00 00 63 68 6F 70 ?……….chop
00000010 64 6F 77 6E 00 00 00 00 00 00 00 00 00 00 00 00 down…………
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000030 00 00 00 00 31 32 33 34 35 36 00 00 00 00 00 00 ….123456……
00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000050 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 …………….
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000080 00 00 00 00 00 00 00 00 33 33 33 34 46 66 44 39 ……..3334FfD9
00000090 2D 33 41 36 42 00 00 00 00 00 00 00 00 00 00 00 -3A6B………..
000000A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….

VIP客户端

Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F

00000000 B0 00 00 00 1B 02 00 00 0B 00 00 00 63 68 6F 70 ?……….chop
00000010 64 6F 77 6E 00 00 00 00 00 00 00 00 00 00 00 00 down…………
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000030 00 00 00 00 31 32 33 34 35 36 00 00 00 00 00 00 ….123456……
00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000050 00 00 00 00 00 00 00 00 00 00 00 00 7B 00 00 00 …………{…
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00000080 00 00 00 00 00 00 00 00 33 33 33 34 46 66 44 39 ……..3334FfD9
00000090 2D 33 41 36 42 00 00 00 00 00 00 00 00 00 00 00 -3A6B………..
000000A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
—> 这里服务器会返回一个登录失败, 非VIP的信号

果然如我们所料, 封包只有一个字的差异:) . 我们只要把VIP的客户端标识7B修改为2, 那么我们就可以用普通用户的身份大摇大摆的登录进去了, 唯一不同的就是, 我们的坐骑换了

纸上谈兵容易, 做起来就比较困难了. 不知道各位对MFC写的程序是什么感觉, 反正我是觉得晕晕的, 所以一直没去研究它. 另外, 客户端和数据驱动是两个独立的程序, 相互依靠, 我们不能单独把数据驱动运行起来, 除非你掉头又去研究客户端. 那可是一个大工程了. 如果我要调试它, 只能用附加的方式进入程序. 昨天晚上我唯一的想法是….通过IDA的反汇编代码….找到客户端怎么样把标识符传进数据驱动程序的, 为此我付出了惨重的代价: 两杯咖啡. 而且一无所获

今天清醒过来才知道自己很笨, 其实只要在数据发送的时候把 标志位修改不就可以了么   马上对socket的send下断, 来到

0043A121 /$ FF7424 0C push dword ptr [esp+C] ; /Flags
0043A125 |. FF7424 0C push dword ptr [esp+C] ; |DataSize
0043A129 |. FF7424 0C push dword ptr [esp+C] ; |Data
0043A12D |. FF71 04 push dword ptr [ecx+4] ; |Socket
0043A130 |. FF15 20664700 call dword ptr [<&WS2_32.#19>] ; \send

上面的Data就是保存了我们登录信息的地址了.在0043A121 再次下断, 重新点登录, 就可以知道是从哪里转跳过来的(这里是公共部分, 我们不方便下手修改代码):

00403EF0 . 8379 44 00 cmp dword ptr [ecx+44], 0
00403EF4 . C741 3C 00000>mov dword ptr [ecx+3C], 0
00403EFB . 74 11 je short 00403F0E
00403EFD . 68 33270000 push 2733 ; /Error = WSAEWOULDBLOCK
00403F02 . FF15 08664700 call dword ptr [<&WS2_32.#112>] ; \WSASetLastError
00403F08 . 83C8 FF or eax, FFFFFFFF
00403F0B . C2 0C00 retn 0C
00403F0E > E9 E0140700 jmp 0043A121

找到上面的那句. 修改如下

00403F0E > \E9 E0140700 jmp 004753F3

004753F3 > \C740 5C 02000>mov dword ptr [eax+5C], 2
004753FA .^ E9 224DFCFF jmp 0043A121

eax保存了封包的地址, 然后PUSH进堆栈, 直接加上偏移就是客户端标识了.  , 程序经过我们的乾坤大挪移往别处走了一下, 回来的时候, 我们已经把标志修改回2了
经过测试发现功能基本正常, 相比普通客户端, 多了几个功能. 不过由于有些数据需要VIP权限, 所以

一个简单的网络验证分析(菜鸟)相关推荐

  1. 易语言php注册,易语言简单ASP网络验证源码 PHP一键搭建网络验证源码

    说明: 易语言简单ASP网络验证源码 ,很不错的易语言源码,适合易语言爱好者学习, (Easy language simple ASP network verification source code ...

  2. 【IOS】利用ASIHTTPRequest 实现一个简单的登陆验证

    [原创作品, 欢迎转载,转载请在明显处注明! 谢谢. 原文地址:http://blog.csdn.net/toss156/article/details/7638529] 今天给大家带来一个简单的登陆 ...

  3. visjs使用小记-1.创建一个简单的网络拓扑图

    1.插件官网:http://visjs.org/  2.创建一个简单的网络拓扑图 <!doctype html> <html> <head><title> ...

  4. 使用eNSP搭建一个简单的网络

    使用eNSP搭建一个简单的网络 第一次使用eNSP搭建一个简单的网络,在师傅的耐心讲解及自己的慢慢摸索下最终使得3台PC之间通过静态路由实现了互通. 一.前言 华为现在不知道是在eNSP进行优化还是咋 ...

  5. 【Pytorch分布式训练】在MNIST数据集上训练一个简单CNN网络,将其改成分布式训练

    文章目录 普通单卡训练-GPU 普通单卡训练-CPU 分布式训练-GPU 分布式训练-CPU 租GPU服务器相关 以下代码示例基于:在MNIST数据集上训练一个简单CNN网络,将其改成分布式训练. 普 ...

  6. 安装GNS3以及实现一个简单的网络拓扑图

    双击(GNS3.exe)安装包按顺序安装就可以到下面的一个界面: 安装完成后路由器选项卡是灰色的(不可用),可以通过挂载的方式添加对应的路由器,因此必须挂载相应镜像,下面是相应的步骤: 找到文件中相应 ...

  7. 从零开始,搭建一个简单的UVM验证平台(一)

    前言: 这篇系列将从0开始搭建一个UVM验证平台,来帮助一些学习了SV和UVM知识,但对搭建完整的验证环境没有概念的朋友. UVM前置基础: 1.UVM基础-factory机制.phase机制 2.U ...

  8. 一个简单的UVM验证平台

    2.1 验证平台的组成 2.1.1. 何谓验证平台 何谓验证平台?验证最基本的目的在于测试 DUT 的正确性,其最常使用的方法就是给 DUT 施加不同的输入(激励),所以一个验证平台最重要的的功能在于 ...

  9. 诙谐有趣的《UVM实战》笔记——第二章 一个简单的UVM验证平台

    前言 某天白天在地铁上听鬼故事,结果晚上要睡觉时,故事里的情节都历历在目,给我鸡皮疙瘩起的~ 不过我倒是没有吓得睡不着,而是转念一想,为啥我学知识忘得很快,随便听的鬼故事却记得这么清楚咧? 那如果能像 ...

最新文章

  1. 1063 Set Similarity
  2. 13岁小孩都跟我抢Python了,完了!
  3. 各互联网大厂办公室恋情政策盘点:最不能碰的部门竟是HR!
  4. C语言中sizeof与strlen的区别总结!
  5. linux 文件系统覆盖目录,Linux内核裁减及根文件系统定制
  6. 离线安装宝塔lnmp_宝塔LNMP环境 Nginx安装EduSoho教程说明
  7. Emulator: PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT
  8. WPF MVVM 架构 Step By Step(2)(简单的三层架构示例及粘合代码GLUE code)
  9. java中对象输入流和输出流
  10. 几行代码就搞定一个文字识别功能,同时还能转换成语音,畅快!
  11. linux 文本编辑器Vim/Vi详细介绍
  12. 基于深度学习的超大面积室内导航机器人Java后台软件设计
  13. Java实现简易图形编辑系统
  14. GCC编译宏_GLIBCXX_USE_CXX11_ABI背景分析和实现原理
  15. 使用watermark.js给HTML、Word、PPT、Excel等添加水印
  16. Design Compiler知识点汇总
  17. (笔记)斯坦福机器学习第十讲--特征选择
  18. Kaggle上的狗品种识别(ImageNet Dogs)
  19. 51cto学院微信支付实战对接开发视频教程
  20. java 日历界面_Java实现简单日历小程序 Java图形界面小日历开发

热门文章

  1. “智能音箱”技术详解
  2. RK3568 + 国产 PHY YT8531 调试
  3. 双色球基础分析--SQL
  4. lunix 安装mysql5.7.38
  5. h5页面支持ios暗黑模式 (css、js)
  6. Python3.xprint时只回车不换行方法
  7. 安卓手机铃声怎么设置
  8. 计算机管理中的用户和组里的名称和全名有什么不同
  9. METHODS FOR NON-LINEAR LEAST SQUARES PROBLEMS 翻译(七)
  10. WebGL自学教程——WebGL示例:开始