冰凌汇编

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 174|回复: 1
收起左侧

[原创] 手动改造天盾网络验证增强效验能力

[复制链接]
3366470538 发表于 2022-4-25 17:21:05
现在的tcp网络验证(E某,天某,云某)判断是否登录成功都是根据返回值来确定,这就使破解者根据这个空子进行所谓的中途拦截,例如:直接通过API(支持库)定位登录子程序禁止他向服务器发包直接伪造返回值,让其返回,程序又是傻呜呜的只会判断返回值,我们能不能手动改造一下他呢!答案是可以的,由于天盾作者并没有开放模块的源代码我们直接通过反汇编工具进行修改了。
手里头也没有什么好的网络验证就用作者开放的免费版来讲吧,先看看登录源码部分
登录源码中验证_卡登陆是可以被直接定位到,这个是无视VM的看起来只需要定位到然后
强行修改返回值就可以成功的 迷惑那个如果()这个语句 大概汇编如下
Mov eax,1 先给他置1
Leave 平衡堆栈 让堆栈空了不然崩溃
Ret 返回出去

这样子就可以顺利的进入了下一个环节 看起来貌似是怎么样都防止不了他的发生
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

其实不然,下面我们引入一个概念就是寄存器:寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,寄存器有累加器(ACC)。
上面一大串是官方解释我也不是很理解但是我们可以捕捉标红色部分
二、寄存器的作用
1、可将寄存器内的数据执行算术及逻辑运算
2、存于寄存器内的地址可用来指向内存的某个位置,即寻址

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。
这些32位寄存器有多种用途,但每一个都有“专长”,有各自的特别之处。
EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。
EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址。
ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。
EDX 则总是被用来放整数除法产生的余数。
ESI/EDI分别叫做"源/目标索引寄存器"(source/destinationindex),因为在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目标串.
EBP是"基址指针"(BASE POINTER), 它最经常被用作高级语言函数调用的"框架指针"(frame pointer). 在破解的时候,经常可以看见一个标准的函数起始代码:
  push ebp ;保存当前ebp
  mov ebp,esp ;EBP设为当前堆栈指针
  sub esp, xxx ;预留xxx字节给函数临时变量.
  ...
  这样一来,EBP 构成了该函数的一个框架, 在EBP上方分别是原来的EBP, 返回地址和参数. EBP下方则是临时变量. 函数返回时作 mov esp,ebp/pop ebp/ret 即可.
ESP 专门用作堆栈指针,被形象地称为栈顶指针,堆栈的顶部是地址小的区域,压入堆栈的数据越多,ESP也就越来越小。在32位平台上,ESP每次减少4字节。
这个寄存器很重要他会在我们判断是否登录成功占据了一个很重要的优势 简单阅读上面的
文章我们也有了大概的了解接下来就是进行寄存器的操作了
先去反汇编模块找到登录子程序然后往下翻阅找到底部代码
从图中可以看到登录结尾部分有一个退出许可区 这个将是我定位登录子程序的关键命令
由于模块不是开源状态只能手动在尾部进行一个寄存器操作了 具体的寄存器操作就是给edi赋值就简单的一句mov edi,整数型的数值  mov edi,666

由于模块不是开源那么就是需要在登录源码内配合模块的效验
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

更多X86汇编指令请移步:http://c.biancheng.net/view/3585.html
我们打开汇编指令转换工具进行一个简单的汇编指令转换 我罗列一个基本的汇编效验代码
.if edi==666 判断edi是不是=666
mov edi,0 等于就进来这里
.else 不等于就执行下面的代码
mov eax,123 给eax赋值1
jmp eax jmp 去eax地址
leave 平衡堆栈
ret 返回出去

.endif
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

转换成机器码之后我们在登录源码中内置一下,这样就达到了里应外合的效果了
我们在登录源码中这个位置置入我们汇编指令转换的机器码 然后编译出去就可以通过OD进行改造了先源码内写好效验 在用OD修改程序走向让他走提供的代码
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

我们打开OD根据模块的代码我们通过退出许可区定位到登录程序的尾部位置

大概步骤就是:退出许可区下断点,登录按钮点下,断点拦截,我们F8单步走出核心支持库就到了图下这个位置也就是对应模块中登录子程序的尾部
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

接下来我们就根据jmp大法来改变代码的流程让他先去执行我们的代码然后在回来执行他的代码,因为我们在尾部所以不用太担心寄存器会被占用,而且也不影响程序的使用
一个程序中是有一部分的空白位置,程序百分之999999都用不到的地方 我们就借用一下
在进行jmp大法之前需要复制需要操作的代码前8个字节以防备用
根据图中我就复制4行代码吧
0041BF04   83C4 10         add esp,0x10
0041BF07   8B85 74FFFFFF   mov eax,dword ptrss:[ebp-0x8C]
0041BF0D   E9 10000000     jmp 1.0041BF22
0041BF12   EB 0E           jmp short1.0041BF22

然后我们ctrl+B输入0000000000000000000000000000000去到程序空白的地址
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

然后就开始对寄存器进行操作了 汇编指令: mov edi,0x29a
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

然后我们回到之前的位置 jmp到我们的空白地址  
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

然后我们在空白地址写入图中的代码
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

接下来就是一顿单步走了 由于是图文就无法作图 那么我们只需要观察edi已经变成了29a那么继续单步就可以看见两个寄存器的数据是永远不变了 eax=1  edi=29a是固定不变的

直到我们走出登录子程序也是一样不会变得  我们马上就走出登录子程序了 可以看到寄存器的值依然没有变化 在单步一下就可以看到登录源码的代码了
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

单步走出去就到了我们的登陆源码 也可以看到我们写的汇编指令了
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

到这里我就保存修改文件,
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

然后登陆效验就改造完成了接下来就是测试爆破看是否触发效验

根据命令定位到登录子程序然后强行拦截伪造返回值 然后我们单步走出去看看会发生什么
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

此时此刻由于他的强行拦截导致我们尾部的改造代码没有执行到 所以eax=1条件满足edi不等于29a条件不成立 下面的汇编代码就崩溃了
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

可以看见跳转跳过了正常代码 跳向了崩溃代码 F9放开运行就提示崩溃了
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

我们正版卡登陆是没有任何问题的
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

然后我们再来看看合法是怎么样改造了,还是老方法先定位合法位置先 直接通过退出许可区即可定位到,需要先过登录或者正版卡登录才能到合法检测我们定位到合法之后发现他并没有对寄存器进行操作 我们就可以对图中任意寄存器进行赋值然后在登录源码写汇编代码配合 图中的合法在尾部 尾部没有多余的附加代码 不向登录还需要保存登录数据。
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

我们继续把汇编效验在写一次 这次是eax=888555 转换成十六进制= D8EEB
.if eax==888555
mov eax,0
.else
mov eax,123
jmp eax
call eax
leave
ret


.endif
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编


我们把它放到合法的后面即可!
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

然后编译出来继续按照老方法 定位登录 然后jmp过去执行我们的代码 然后定位合法jmp过去执行我们的代码 步骤重复了就不继续贴图了! 我们可以看到正版卡登录是走完整个子程序顺便也把我们插入的小代码执行了 如果是爆破是中途拦截的 是走不完子程序的
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

最后我们配上VM效果就马上出来了
手动改造天盾网络验证增强效验能力 - 3366470538_冰凌汇编

完结撒花!!!
冰凌汇编免责声明
以上内容均来自网友转发或原创,如存在侵权请发送到站方邮件9003554@qq.com处理。
Pierce 发表于 2022-5-3 17:23:01
学到老学到老
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|站点统计|Archiver|小黑屋|RSS|冰凌汇编 ( 滇ICP备2022002049号 滇公网安备 53032102000029号)|网站地图

GMT+8, 2022-10-6 22:57 , Processed in 0.127890 second(s), 8 queries , Redis On.

冰凌汇编 - 建立于2021年12月20日

Powered by Discuz! © 2001-2022 Comsenz Inc.

快速回复 返回顶部 返回列表