首页
社区
课程
招聘
[原创]记对某VPN的分析
发表于: 2017-5-1 22:07 12251

[原创]记对某VPN的分析

2017-5-1 22:07
12251

本次逆向分析仅供学习交流之用


这次算是本菜鸟第一次在论坛发逆向帖,如果文章有疏漏之处还请各位指出

因为以前看大神分析的时候,很多东西大神都是一语带过,导致很多地方看不懂,我深受其苦

因此这篇分析会写得比较详细,我会尽量把分析过程中的各种尝试都写出来,供大家作参考


这个软件以前也有人发过类似的帖子,但破解不完全,这次发的是完全破解的


第一步


这个软件有一个试用功能,每天可以领取一小时的试用时间,我从这个方面着手进行破解

点击连接之后,会弹出如下界面:


有了弹出框就好办了,用OD打开,对MessageBoxW和MessageBoxA分别下断,然后点击连接



发现OD断在了MessageBoxW,把MessageBoxA的断点取消,然后用ctrl+f9执行到返回,然后f8,返回到上一层代码


发现还是在系统领空,重复这个过程,直到返回到用户空间

(对了,我的OD的执行到用户代码经常使用不了,每次都是只单步执行,不知道是哪里出了问题,有知道的大神烦请指出)

到达上图所示的位置之后,就开始在前面的代码找关键跳了

一共找到两个可能会跳过这个MessageBox的跳转,00B24BB3和00B24BAD:

分别在这两个跳转上下断,重新运行程序,看程序的运行过程


发现在第一个跳转里没有进行跳转,继续运行

发现在第二个跳转里也没有进行跳转,在第二个跳转的时候,把寄存器Z标志的值改一下,使其跳转,继续运行:


发现程序没有再弹出提示框,但也没有进行连接

再次点击连接,使其断在第一个跳转上,这次改第一次跳转时寄存器的值,使其跳转


发现程序连接上了,可以确定第一个跳转就是我们要找的关键跳,将其汇编代码改为jmp,


然后选中修改后的代码,右键->复制到可执行文件->选择,进入如下窗口,右键->保存文件


起个新名字,然后保存,再运行一下,发现可以正常运行


至此,第一步破解就完成了,第一步的破解非常简单,第二步才是真正的难点


第二步


在程序连接之后,过两分钟,发现程序会自动断开,并且没有任何提示

初步猜测是有一个定时器或是无限循环的sleep函数,会每过两分钟就检测剩余时间,如果为0就断开连接

先把这个猜测抛到一边,我们先来看看能不能直接查找字符串找到关键的跳转

在汇编代码窗口右键->中文搜索引擎->智能搜索

找到的带中文的字符串如下:


发现红笔圈出来的字串比较可疑,点进去看看,然后下断,再在程序中点击连接,并等待两分钟,待其自动断开,没现没有断在断点处

再回头看看下断的地方:


发现前面出现的中文字符都在一起

再把程序重新运行一下,发现断下来了,猜测其是在程序运行最开始的时候一并进行加载的

再在字串参考里查找其他中文字串,发现下述字符串:


尝试下断,发现还是在程序开始运行时一并加载的


然后尝试对sleep和setTimer下断,断下之后返回用户空间,尝试修改了sleep前面的跳转,发现都没什么用

setTimer也没有什么发现,至此,放弃这个思路。


过了几天,突然想到程序可能是联网在服务器端进行验证时间的,那么能不能抓包看看呢?

用WinSock expert(至于为什么不用WireShark,因为WireShark不能单独对某程序进行分析,干扰项太多)分析一下这个程序的收发包情况


发现程序断开连接的时候,客户端向服务器端发了一个post,然后服务器返回了一个response

根据WinSock中看到的IP地址,使用WireShark进行过滤,找到对应的包


查看一下post和 response里的内容,发现都被加密了:


尝试用base64解密,发现无效,猜测是用的RSA之类的需要公钥进行解密的加密方式

那么,我们能不能在程序里找到他的加密方式?这样我就能知道他是用的什么进行验证了


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
打赏 + 1.00雪花
打赏次数 1 雪花 + 1.00
 
赞赏  CCkicker   +1.00 2017/05/08
最新回复 (36)
雪    币: 24479
活跃值: (62844)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
2
精彩!
2017-5-1 22:38
0
雪    币: 33
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
3
HOOK  send函数不更简单吗
2017-5-1 23:04
0
雪    币: 3757
活跃值: (1757)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
4
邓桂 HOOK send函数不更简单吗
本人小菜鸟一个,还没学怎么hook
2017-5-1 23:29
0
雪    币: 33
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
5
我也是菜鸟,只是想到一个思路
2017-5-2 02:26
0
雪    币: 3757
活跃值: (1757)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
6
邓桂 我也是菜鸟,只是想到一个思路
据我所知,hook应该是只能用来辅助分析,而且每次分析的时候都要运行hook程序
而我这里是要破解,没有hook程序也要能正常运行
2017-5-2 10:05
0
雪    币: 0
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fkp
7
支持支持!
2017-5-2 10:47
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
看不懂
2017-5-2 19:08
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
MARK  精彩
2017-5-3 08:53
0
雪    币: 376
活跃值: (92)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
楼主能发个VPN给我练练吗
2017-5-3 17:56
0
雪    币: 3757
活跃值: (1757)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
11
蛋蛋好疼 楼主能发个VPN给我练练吗
这个网上一大堆啊
2017-5-3 19:52
0
雪    币: 3757
活跃值: (1757)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
12
freelang 看不懂
我感觉已经写得很详细了呀
应该有逆向基础的人都能看懂
不知道你是哪里看不懂?
2017-5-3 19:54
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
梦野间 本人小菜鸟一个,还没学怎么hook[em_16]
我也尝试了好久没有解决      后来用pchunterj将这个软件的进程定时器全部去除后发现也不会断开连接!
2017-5-4 09:08
0
雪    币: 3757
活跃值: (1757)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
14
好啊一 我也尝试了好久没有解决 后来用pchunterj将这个软件的进程定时器全部去除后发现也不会断开连接!
竟然还能这样这样!!!
估计是有一个定时器是专门用来干扰调试的,导致我没断到正确的位置
2017-5-4 18:38
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
高手,  写的这么详细,  但我还是看不懂
2017-5-4 18:38
0
雪    币: 3757
活跃值: (1757)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
16
哈里菠菜dhb 高手, 写的这么详细, 但我还是看不懂[em_2]
那你应该先看点基础的教学视频
2017-5-4 19:32
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
精彩,入门的我看懂了,  主要是学习思路和技巧!  支持楼主!~
2017-5-5 15:12
0
雪    币: 4668
活跃值: (4092)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
好精彩噢!
2017-5-5 16:43
0
雪    币: 20730
活跃值: (3940)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
19
谢谢分享,学习了。
2017-5-5 18:22
0
雪    币: 49
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
不错,很详细
2017-5-5 22:23
0
雪    币: 139
活跃值: (1150)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
21
是天行VPN么?
2017-5-8 10:07
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22

为什么我第一次改  那个cmp  全局搜索  全改1    没有断线?

但是你的思路不错啊


2017-5-9 22:44
0
雪    币: 3757
活跃值: (1757)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
23
hackbs 是天行VPN么?
这个。。我什么都没说
2017-5-10 08:54
0
雪    币: 3757
活跃值: (1757)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
24
飞鱼快跑啊 为什么我第一次改  那个cmp  全局搜索  全改1    没有断线? ...
这样也行?我觉得这样改整个程序逻辑都会乱掉了
可能是这个程序里的cmp比较少?
顺便问一下,怎么用全局搜索找cmp?        我用OD的查找命令只能查找完整的命令(类似于cmp  eax,1)
2017-5-10 09:05
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
学习大牛的作品了
2017-5-10 16:34
0
游客
登录 | 注册 方可回帖
返回
//