吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4751|回复: 32
上一主题 下一主题

[原创] RubyEncoder解密实战 (以顶渲网 V-Ray 3.4为例)

  [复制链接]
跳转到指定楼层
楼主
发表于 2018-1-26 16:52 | 只看该作者 回帖奖励 |倒序浏览
本帖最后由 身未动,心已 于 2018-1-27 11:24 编辑

    加入论坛这么长时间了,终于能发第一篇文章了~ 本文大部分参考fatezero大神的 解密 RubyEncoder (https://paper.seebug.org/231/) 文章,付诸于实践。建议看本文前先看这篇文章,其中提到的本文不再赘述。
    最近在用SketchUp作图,V-Ray渲染工具是必备的,奈何顶渲网整了一下,二次开发还收费。。。破解之!
    破解之前,打开后自动跳出:



    这是一个简单的.NET小程序,无壳无加密,放入IDA分析发现,也没有验证功能,只要输入的授权码为44位就提示正确。那验证的东西在那里呢?
    再分析后,发现,最可疑的地方就是加载插件的ruby脚本,显然是加密过的,如下图所示,而原版的是没有这种加密的。  


其最主要的函数就是 RGLoader_load() , 查了查发现是一种ruby代码的加密软件搞出来的,名为RubyEncoder,收费的,但是有十五天试用。下载下来试用,写了个HelloWorld加密了发现就是这样:

它的目录结构是这样的:

a.rb 通过loader.rb加载特定ruby版本的动态库,进而解密运行a.rb中的加密信息。

好了,万事具备,开始按照fatezero大神的文章破解。注意:以下操作都是在mac下进行的,linux也一样可以,但是windows就不知道行不行了,因为需要从源码编译ruby。
首先下载下来ruby2.2的源码,在 iseq.c 中插入 rb_iseq_nex() 函数来劫持 rb_iseq_new() 函数,同理在 vm.c 中插入 rb_iseq_evax() 函数以劫持 rb_iseq_eval() 函数。

[C] 纯文本查看 复制代码
VALUE
rb_iseq_nex(NODE *node, VALUE name, VALUE path, VALUE absolute_path,
            VALUE parent, enum iseq_type type)
{
    rb_io_write(rb_stdout, rb_parser_dump_tree(node, 0));
    printf("\n\n");
    return rb_iseq_new(node, name, path, absolute_path, parent, type);
}


[C] 纯文本查看 复制代码
VALUE
rb_iseq_evax(VALUE iseqval)
{
    rb_io_write(rb_stdout, rb_iseq_disasm(iseqval));
    return rb_iseq_eval(iseqval);
}


然后./configure —prefix=/somedir/ && make && make install

再吧把RubyEncoder的运行库修改一下,让它能调用这两个修改后的函数:
LC_ALL=C sed 's/rb_iseq_eval/rb_iseq_evax/g' rgloader22.darwin.bundle > tmp.bundle
LC_ALL=C sed 's/rb_iseq_new/rb_iseq_nex/g' tmp.bundle > rgloader22.darwin.bundle
加入LC_ALL是因为不加会出错。。。。设置一下环境

然后使用这个自定义的ruby 运行这个修改后库的ruby脚本,发现输出了完整的AST,啥是AST呢?
AST(Abstract syntax tree)即为“抽象语法树”,简称语法树,指代码在计算机内存的一种树状数据结构,便于计算机理解和阅读。
大概就是一种编译的中间过程吧,看起来挺有条例的,但真的不容易看懂。。。。输出的AST如下:一共23K行。。。。还有好多都是重复的。。。。别问我怎么知道的。。。。


有了这个还是需要转换成原始的ruby源码才能看懂,为此fatezero大神写了一个 node2ruby.c ,洋洋洒洒1400行,但是gcc编译出错,鼓捣makefile试图通过make来编译也无从下手。。哪位兄弟会可以教教我。。。。那就用笨方法吧,观察这段代码:
[C] 纯文本查看 复制代码
static VALUE dump_node(….) {……..}
void rb_node_tree_to_ruby(NODE *node) {
    rb_io_write(rb_stdout, dump_node(node, NULL, 0, 1));
}

发现它只需要一个Node参数就能运行,正好在我们刚刚hook的 rb_iseq_nex() 里有Node,那好吧整个代码黏贴到 iseq.c 的开头 并在 rb_iseq_nex() 里使用这个方法。
[C] 纯文本查看 复制代码
VALUE
rb_iseq_nex(NODE *node, VALUE name, VALUE path, VALUE absolute_path,
            VALUE parent, enum iseq_type type)
{
    rb_node_tree_to_ruby_value(node);
    //rb_io_write(rb_stdout, rb_parser_dump_tree(node, 0));
    printf("\n\n");
    return rb_iseq_new(node, name, path, absolute_path, parent, type);
}


再编译ruby,用它运行那个脚本,报错了:
[Bash shell] 纯文本查看 复制代码
Apple@Mac➜ ~/Desktop/Plugins ~/Downloads/ruby-2.2.9/ruby ./vfs.rb             
./vfs.rb:6:in `RGLoader_load': no implicit conversion of nil into String (TypeError)
    from ./vfs.rb:6:in `<main>’

回去看源码,鼓捣了半天多发现了报错原因:

试图吧nil类型转换成String,这也确实是大神的一个疏忽导致的bug,知道了成因就好修复。
那就加入一个判断就好啦,如下:

截图时候忘了去注释了。。。附加中也没有去掉这个注释,各位运行前记得去掉,要不还是会报错

嗯,然后成功输出了类似ruby源码的代码,看起来还不错,但是不能运行,不过对于我要写一个注册机来说也够用了。
有了源码就好说了嘛,找出关键算法,在这里:

然后很简单就写出了注册机:
[Ruby] 纯文本查看 复制代码
require 'digest/md5'
id2 = 'Su1815VR-72fd94f1-5e632792-c24e597c-d5c50fa2' #机器码
id2_s = id2.gsub("-", "")[8..39]
key = Digest::MD5.hexdigest( "#1Bz" + Digest::MD5.hexdigest(id2_s[0..17] + id2_s[11..31]) + "a9!" ) # 32
input_key = ( '12345678' + '-' + key[0..7] + '-' + key[8..15] + '-' + key[16..23] + '-' + key[24..31] )
puts "the key is: "
puts input_key


验证后发现,成功!
相关代码及动态库见附件
第一次写文章,多多包涵,求勿喷。。


1月27日更:
SketchUp 本身有Ruby控制台,修改id2为自己的机器码再复制进去运行就能出激活码,见下图:




codes.7z

278.67 KB, 下载次数: 103, 下载积分: 吾爱币 -1 CB

相关代码

免费评分

参与人数 28吾爱币 +31 热心值 +27 收起 理由
keytam + 1 + 1 热心回复!
逍遥一仙 + 3 + 1 我很赞同!
?﹏從此沉默 + 1 我很赞同!
aristotlez + 1 + 1 谢谢@Thanks!
qaz003 + 1 + 1 用心讨论,共获提升!
kilkilo502 + 1 + 1 用心讨论,共获提升!
zhczf + 1 + 1 请楼主把注册机放出来啊
ainihenju + 1 + 1 我很赞同!
shock-c + 1 + 1 用心讨论,共获提升!
qzr + 1 + 1 用心讨论,共获提升!
Ganlv + 2 + 1 用心讨论,共获提升!
海底总动员 + 1 热心回复!
zy1234 + 1 + 1 用心讨论,共获提升!
qq02463 + 1 + 1 谢谢@Thanks!
SomnusXZY + 1 + 1 热心回复!
土川鼠 + 1 + 1 谢谢@Thanks!
111152lt + 1 + 1 用心讨论,共获提升!
610100 + 1 + 1 膜拜!
旋木过流年 + 1 + 1 谢谢@Thanks!
邪恶博士 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lies2014 + 1 + 1 谢谢@Thanks!
whdfog + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
把心格式化 + 1 + 1 我很赞同!
失仓 + 1 + 1 请问能发一个破解后的吗
夏雨微凉 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
勤奋好学的美工 + 1 + 1 受教了!感谢大佬分享心得!
坏猫 + 2 + 1 我很赞同!
绝不裸奔 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

推荐
 楼主| 发表于 2018-1-28 12:18 | 只看该作者 |楼主
YUN小乔 发表于 2018-1-27 23:57
楼主也是学设计的?这是兼职敲码吗

哈哈 没有啦  现在顶多算半个程序员,跟设计一点关系都没有,这都业余爱好~

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

推荐
 楼主| 发表于 2018-1-27 11:26 | 只看该作者 |楼主
cunzher 发表于 2018-1-26 22:52
@身未动,心已 第一张图片麻烦打一下码

不好意思。。已经修改~

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

板凳
发表于 2018-1-26 17:09 | 只看该作者

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

报纸
发表于 2018-1-26 17:14 | 只看该作者
学习学习~~
厉害厉害~

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

地板
发表于 2018-1-26 17:16 | 只看该作者
感谢分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

7#
发表于 2018-1-26 19:14 | 只看该作者
只是广告吗?这么大的二维码

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

8#
发表于 2018-1-26 22:52 | 只看该作者
@身未动,心已 第一张图片麻烦打一下码

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

9#
发表于 2018-1-26 22:59 | 只看该作者
感谢楼主分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

10#
发表于 2018-1-27 09:02 | 只看该作者
需要这个渲染器

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

11#
 楼主| 发表于 2018-1-27 11:25 | 只看该作者 |楼主
董秘书 发表于 2018-1-26 19:14
只是广告吗?这么大的二维码

不好意思。。已经修改~

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则


免责声明:
吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Service@52PoJie.Cn

快速回复 收藏帖子 返回列表 搜索

RSS订阅|手机版|小黑屋|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2018-2-24 11:57

Powered by Discuz!

© 2001-2017 Comsenz Inc.

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