好友
阅读权限25
听众
最后登录1970-1-1
|
无瑕黑心肠
发表于 2016-6-14 22:30
本帖最后由 无瑕黑心肠 于 2016-6-14 22:34 编辑
前言:
无意中在易语言的官网看到有意思的东西:
三联判断表达式、嵌入方法、多返回值、类型反射等等...于是就很好奇, 下了易·飞扬, 试了一下, 果真能这么书写, 真所谓和Javascript有得一拼, JavaScript使用方法内嵌能实现闭包这个东西, 于是就好奇易·飞扬能不能实现闭包? 正在编写完代码按下F5编译之际. 它居然提示授权文件到期, 编译失败:
以我的性格是不可能善罢甘休的, 于是我就默默的打开吾爱破解的OD.
正题:
破解之前说一下我的破解思路:
1. 它肯定要读取"license.key"授权文件, 于是马上就想到在CreateFile函数下断.
2. 它如果载入前就读取了"license.key"授权文件, 那就在SetWindowText函数下断. (用SPY探测出是个EDIT控件)
3. 如果这三种都不能断下来, 就是使用SendMessage、PostMessage函数下断. (作者可能搞小动作不让我们拦截普通函数)
思路一: F9跑起来, F5编译, 在CreateFile函数上是断下来了, 不过是读取编译文件的, 不是授权文件:
试了好多种方法都发现它没读取授权文件. 接着下一个思路:
思路二: 在SetWindowText函数下断, 可以看到写入的内容是空的:
在这个函数上也捣鼓挺久, 以失败告终. 接着来:
思路三: SendMessage、PostMessage函数下断, 但是断下来的信息量太大了, 条件断点都挡不住..., 此时又到了冷静一下了, 想想有什么新的思路去破解. 于是又想到如下的思路:
1. 去授权文件的目录, 看看有没有可用信息.
2. 是不是程序安装完成第一次启动就读取授权文件的信息, 然后写到注册表里面了? 是的话就要下注册码的函数断点了.
3. 是不是程序还调用了第三方的程序执行代码, 所以重要的代码不在易·飞扬程序内?
有了思路继续走, 到授权文件的目录可以看到两个文件:
我注意到的是映入眼帘的"efc.exe", 因为我知道这三个就一定就是"e feiyang compile"(易·飞扬编译)的简写, 之前也写过简单的编译器, 命名也是这样的, 真是碰巧. 好, 回到正题, 是编译器就一定是使用命令行作为参数进行编译的, 打开cmd, 把这个拖进去回车, 果不其然:
用这个编译器编译一个飞扬文件(*.ef)看看:
什么情况? 编译器报出到期? 之前遇到的问题就全集中在这380kb的编译器上了, 既然如此就对它进行分析. 将它在在桌面上添一个快捷方式, 然后在属性->目标上加个空个在添个易·飞扬的源码路径, 当作编译器的参数, 然后用这个快捷方式拖进吾爱破解的OD, 此时在ReadFile函数下断, 果不其然, 读取授权文件了:
回到程序领空搜索字符串发现"惊喜", 双击进来一起来看看:
这一个是授权文件有效的情况才会跳到这里的, 不然不会提示授权文件过期、编译失败的提示.
往上找, 能找到关键跳(它读取完授权文件信息并且解析完后调用一个关键CALL计算返回值, 这个跳前面就有一个关键比较):
如图所述, 比较完如果授权文件过期就跳到编译失败, 如果有效就继续JNZ这个跳, JNZ就是跳到企业级授权的地方, 经过我的分析只要将"jg"改成"jl"就能实现完美爆破了. 也就是企业级的"易·飞扬"
附上爆破点以及破解成品:
[原]0041539A 7F 13 jg short efc2.004153AF
[改]0041539A 7C 13 jl short efc2.004153AF
只要用C32ASM打开efc.exe定位到0041539A(如果不是这个地址那得计算偏移, 因为有些C32ASM默认开始地址是10000000), 然后将"7F"的"F"改成"C"就完成"半"字节的爆破了.
成品: https://yunpan.cn/cRxVenAg37Ngg 访问密码 68eb
总结:
毕竟这些都是吴涛前辈很久之前写的程序, 在程序的验证机制、反破解等方面没有很好的防护, 所有只要思路找对了, 破解的问题也就迎刃而解了. 这期主要讲解了破解对应的多个常用下断函数, 以及多种思路找程序的验证关键. 相信新手朋友们学到的更多是思路, 而不是爆破的奇淫技巧, 相信此破文能让你们破解有所提升. 吾爱有你更"精"、"彩"。
|
免费评分
-
查看全部评分
本帖被以下淘专辑推荐:
- · 鱼木收集|主题: 2526, 订阅: 2706
- · 值得收集 |主题: 248, 订阅: 162
|