010editor是一款十六进制的编辑器,小生在此前分析apk和dex时有幸试用一番后简直欲罢不能,它的强大之处除了能以十六进制打开所有看得见看不见的文件外,更牛逼的是能支持模板和脚本操作,像之前的Dex文件格式分析里的说的,能把dex以dex的格式逐一分析出来,dex的格式可谓一览无遗,方便至极,更可自定义格式模板和解析脚本,分享他人。
当然,天下没有免费的午餐,此等神器新用户购买得要$49.96……说到这里,就已经不是钱不钱的问题了(严肃脸),得考虑实在困难的用户嘛(linux上实在找不到破解和可用的序列号了),遂想免费用的话得想点办法。
以下以7.0.2为例。
如果没注册,在进入010editor的时候就会要求输入序列号(用户名+注册号),这两个号码其实很好找,网上都有提供,还有注册机提供,这一步倒不是什么问题,问题是它要求网络验证=。=,这踏马就有点尴尬了。按以往使用盗版软件的经验来说,对付这种网络验证的注册建一个假的server欺骗它就可以了,搭建server不算难,但首先需要获取到注册的请求和响应格式。
我决定先从捉包下手,打开wireshark,设置捕获的过滤条件为过滤www.sweetscape.com(总不会验证还有别的域名吧,猜的),然后start
打开010editor的注册页,填入注册信息,然后点“Check License”,查看捉到的包。
从第四个包的请求信息可以看出,其实验证就是将name与pwd作用参数直接请求到sweetscape的服务器上,请求的地址完整就是
1 | www.sweetscape.com/cgibin/010editor_check_license_9b.php?name=demonk&pwd=12D1-0F9C-7134-EA78&id=0&chk=26178&typ=0 |
直接用浏览器打开并查看源码,只看到一句
invalid
我们再看一下捉到的第八个包的信息
可以获取到content-type以及text-data等信息。
到这里其实就很明显,010editor验证过程时使用的是http的get请求,通过分析name与pwd来判断是否验证通过,不通过则返回”invalid“,同理,如果通过的话,是不是可以理解为返回
valid
这样子就好办了,我们可以写一个简单的http服务来模拟这种响应试试。
python里提供了BaseHTTPServer的库,可以方便地搭建自己的http服务器,代码也不难,几行。
1 | #!/usr/bin/env python |
由于不能让程序访问到它直接的请求地址,所以需要先把www.sweetscape.com 给屏蔽看掉,直接在hosts中添加一行就可以了
1 | 127.0.0.1 www.sweetscape.com |
既然是本地服务,且www.sweetscape.com 也已经打到了127.0.0.1,那我们的服务器的监听应该设置如下:
- HOST: 127.0.0.1
- PORT: 80
然后直接启动这个脚本即可以运行一个http的服务器了,它的作用很简单,无论get收到什么请求都将”
先运行起这个脚本(因为监听地址需要root),当点击注册时,脚本会打印出请求