SQL Enlight 1.5 破解 第二版
SQL Enlight 1.5 破解 第二版 收藏
破解声明:我的破解仅用于研究,请勿用于商业用途,需要使用请购买正版软件。
可恶的UbitSoft,我的破解出来还没几天,他的程序就改变了验证逻辑,虽然我觉得SQL Enlight的功能不是非常强大,但是他的防破解功能倒是下了不少功夫,除了核心代码用vc++.net编写的native code和il code混合的组件,还在程序逻辑中调用了.net执行引擎的StrongNameSignatureVerificationEx方法验证调用程序集的强命名是否有效,所以简单的反编译SQL Enlight的组件,并绕过强命名验证的方法是不行的,除此之外在这个用c++.net编写的Ubitsoft.SqlEngage.Sql.dll组件中,对调用程序集的强命名做了检查,除了检查强命名有效之外,调用程序集的强命名必须和Ubitsoft.SqlEngage.Sql.dll组件的强命名一致,而Ubitsoft.SqlEngage.Sql.dll这个组件是没法用ildasm反编译,再用ilasm编译回去的。
所以麻烦就来了,对于目前这个版本可以简单的反编译Ubitsoft.Security.dll这个组件,然后绕过强命名验证,可以破解,因为SQL Enlight代码里面没有对这个组件验证强命名的有效性,:)可能是忘记了,我想UbitSoft公司很快会意识到这点。因此这种破解方法并不好,而且本人不喜欢绕过强命名的破解方式,始终觉得不爽,一旦使用了StrongNameSignatureVerificationEx方法进行验证的话,那么这种方法就不凑效了。
不过问题来了,抛弃了绕过强命名的方式,搞不定Ubitsoft.SqlEngage.Sql.dll组件就没法破解了,因为Ubitsoft.SqlEngage.dll组件是需要被反编译的,但是他要调用Ubitsoft.SqlEngage.Sql.dll组件中的TsqlParser类,在这个类的构造函数中会检验调用程序集,除了签名验证,还要验证强命名是否和Ubitsoft.SqlEngage.Sql.dll一致,因此完美的方式就要修改Ubitsoft.SqlEngage.Sql.dll的强命名,没法反编译,就只能用另外的方式重新签名这个程序集了,尝试了ILMerge.exe,sn.exe,signer.exe,snremove.exe等,无一凑效,原因就是这是一个混合编程的组件,有unmanaged code,郁闷啊。
于是我打算放弃修改Ubitsoft.SqlEngage.Sql.dll组件的强命名了,想通过间接的方式构造出TsqlParser对象,然后赋值给破解的组件,不过这么做比较麻烦,而且万一UbitSoft变态起来在每个方法调用的时候检查调用程序集,那么这个方法又行不通了。
最后实在没办法了,只能用最土的办法来重新签名Ubitsoft.SqlEngage.Sql.dll这个组件了,好了,成功了。
破解
相关文档:
语句:select rank() over(Order By 表的主键 Desc) As UID ,其他列 from 表
说明:rank函数
作用:
返回指定元组在指定集中的排名(排名从 1 开始)
Rank(Tuple_Expression, Set_Expression [ ,Numeric Expression ] )
参数:
Tuple_Expression
一个有效的多维表达式 (MDX) 元 ......
作为一个B/S开发者,或多或少都得和数据库打交道,而对数据库的操作归根到底都是query语句,所有到最后都是为了查询,那么查看sql性能又成了我们开发中的一件趣事。下面简单介绍下sql_trace的使用:
alter session set sql_trace =true ;--打开sql_trace
select * from (select * from t order by id) where rownum <= ......
按指定次数重复字符表达式。
语法
REPLICATE ( character_expression, integer_expression)
参数
character_expression
字符数据型的字母数字表达式,或者可以隐式转换为 nvarchar 或 ntext 的其他数据类型的字母数字表达式。
integer_expression
可以隐式转换为 int 的表达式。如果 integer_expression 为 ......
随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Inj ......