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. 总结一下嵌入式OLED显示屏显示中文汉字的办法
  2. 用jQuery设置多个css样式
  3. freebsd linux目录,FreeBSD和Linux如何互相访问文件系统
  4. Hive记录-Impala jdbc连接hive和kudu参考
  5. 卷积神经网络特征图大小计算公式
  6. python声明一个长度为n的列表_python中长度为n的列表的置换
  7. 关于MVC与三层架构
  8. webserver的作用!
  9. 学习(踩坑)记录——新建工程
  10. 【印刷字符识别】基于matlab模板匹配英文字母识别【含Matlab源码 808期】
  11. 计算机硬件系统主机主要包括,组成计算机硬件系统的基本部分是什么?
  12. 打印水仙花数,并统计个数 java 代码
  13. 伦敦银走势分析最新,十大国际黄金白银交易平台排名
  14. 常见的 Git 错误解决方法
  15. HTML里子DIV设置margin-top后影响父DIV位置的解决办法
  16. PHP1c型GNAS,8盘位HP ML110 G9开箱测试,刷群晖改装20盘位
  17. cad怎么去除drawing1_如何设置cad2012打开已有的DWG图纸的时候不自动新的Drawing1窗口?...
  18. 《Python语言程序设计》王恺 王志 李涛 机械工业出版社第7章 I/O编程与异常 课后习题答案【强烈推荐】
  19. 基于java的在线学生管理系统【原创】
  20. Nokia 5110字模提取

热门文章

  1. mysql查看当前最大连接数_MySQL查看当前连接数、连接数和最大连接数
  2. 关于string容器一些简单函数的讲解
  3. WC Day1 第一课堂 随机算法
  4. java configuration类_JAVA中的Configuration类详解
  5. 嵌入式开发(S5PV210)——u-boot中开启MMU
  6. 盲盒商城小程序开发功能列表
  7. Android通过程序接听或者挂断电话
  8. 关于二叉树结点的小公式
  9. 【解决Windows】电脑桌面文件卡顿变白问题
  10. mysql利用级联删除和更新_MySql级联删除和更新