无瑕黑心肠 发表于 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


总结:
   毕竟这些都是吴涛前辈很久之前写的程序, 在程序的验证机制、反破解等方面没有很好的防护, 所有只要思路找对了, 破解的问题也就迎刃而解了. 这期主要讲解了破解对应的多个常用下断函数, 以及多种思路找程序的验证关键. 相信新手朋友们学到的更多是思路, 而不是爆破的奇淫技巧, 相信此破文能让你们破解有所提升. 吾爱有你更"精"、"彩"。

无瑕黑心肠 发表于 2016-6-14 23:21

青霄 发表于 2016-6-14 23:13
大神,能加个好友吗,企鹅,散就思刘而吧要务思

你可以关注我, 我有空就发发教程. 逛逛论坛!

无瑕黑心肠 发表于 2016-6-15 21:00

Hmily 发表于 2016-6-15 17:28
应该不至于只有这么简单的爆破吧,后面功能还有限制吗?

没用限制了. 就一处验证!

huxiaokui 发表于 2016-6-14 22:39

很棒!学习了!

青霄 发表于 2016-6-14 23:13

大神,能加个好友吗,企鹅,散就思刘而吧要务思

onspee 发表于 2016-6-14 23:34

思路不错.

VIP1003 发表于 2016-6-14 23:36

小白鼠看不懂,先顶一个

无敌小儿 发表于 2016-6-15 06:46

总见半字破解,学习下!

yhxing 发表于 2016-6-15 08:13

经典的很啊。。思路太多了吧。

Hmily 发表于 2016-6-15 17:28

应该不至于只有这么简单的爆破吧,后面功能还有限制吗?
页: [1] 2
查看完整版本: "半"字节破解易·飞扬