浏览模式: 普通 | 列表
1

代码混淆的一些注意事项

[ 2007-08-28 13:02:20 | 作者: progame ]
既然.Net总能够被人破解, 那么我们只好把重要的计算和功能放在server上通过webservice提供了,但是客户端的代码总还得混淆一下,否则别人反编译一下不是全部知道底细了,所以我只使用code protect tools的混淆功能而不是加密,毕竟再怎么加密也是可以破解掉的。

以XENOCODE为例(其实我只使用了这个,毕竟相信老牌软件,心里有底些),它的select pattern相当不错,经过一段时间的摸索,找到一些需要注意的地方:

1、Enumeration一定不要重命名:毕竟我们还有很多地方会使用Enum.Parse(string)以及直接tostring得到名称
2、Reference和Interface最好不要重命名
3、public, protect的不能重命名:因为public会被外部使用,而且有些还是virtual override或是implicitly implement, 而protect的会被其它的继承类使用
4、需要反射的最好单独一个assembly,不要去混淆:毕竟这个风险太大,很难去一个个选取哪些要哪些不要重命名,比如说有的ORM中需要反射属性和字段的实体类定义
5、资源类Properties.Resources修改为public(这样可以批量设置public的不要重命名)
因为这段代码
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("XXX.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
否则的话就会出现:
Could not find any resources appropriate for the specified culture or the neutral culture.

其它:
字符串加密这个不会出错,只是有些性能损失而已
流程混淆xenocode还是很安全的,我一般使用1~2级就可以了,毕竟有时候出错了我还得打开混淆后的代码查找位置
其它的防止反编译的选项我也没有设置,因为我自己还得用reflector呢。

导火线 又见甄子丹

[ 2007-08-24 01:16:52 | 作者: progame ]
甄子丹的动作看上去确实是最帅的, 很真实, 与之对比的大反角邹兆龙我也是喜欢已久了, 从以前和何家劲对打时的副船长, 到中南海保镖和李连杰对打的军人杀手, 还有霍元甲中的元甲老爹, 这么多年过去了, 看上去还是精神抖擞的样子, 可能反派人物经常崩着个脸, 更加不容易起皱纹吧

看过一些UFC, K-1的比赛, 确实寝技所占的比重和作用很大, 说白了就是地面压制, 而且对于双方来说都是非常耗体力的一个活, 当然导火线如杀破狼, 还是用了一些摔角动作, 美国的WWE的表演成份太重了, 虽然选手们确实会摔, 抗摔, 柔韧性也好得惊人, 但那种开始装着被打个半死, 然后马上爬起来又生龙活虎的, 假得都赶上西安彩票了 [sweat]

其实里面演反角的吕良伟不错, 虽然他和古天乐都没什么打戏(最后也只好让这两个战斗力相当的人PK了, 乐仔命真大, 怎么打都死不了, 小强一个), 但够嚣张, 这不由得让我想起来了张耀扬这个嚣张派的第一人, 也很喜欢. 演员尝试不同的角色, 有时候能够给观众很大的惊喜, 边缘人中的大傻演个警察(大傻一向都是被警察抓的人, 最经典的台词是:外面的警察听着...), 都市情缘中孟达演黎明的老爸, 都是经典得一塌糊涂

许晴是在里面混个脸熟的, 范冰冰还是很漂亮的, 郑则仕多年不在荧幕上见了, 只记得肥猫了很久, 弄得郭普安也跟着装傻, 让人想吐, 别人说导火线文戏不够, 我觉得武戏还是太少, 又想起来了战狼传说, 大学时在录像厅看完后的惊艳...

sqlparse.dll 总得让你干点活

[ 2007-08-21 12:28:13 | 作者: progame ]
SqlServer2000是自带了一个sqlparse.dll的 不过这个东西是用来高亮语法的 (晕) 所以它生成的东西类似这样:

\cf1 select\cf \cf5 [\cf \cf1 key\cf \cf5 ]\cf \cf5 ,\cf \cf5 [\cf \cf1 value\cf \cf5 ]\cf \cf1 from\cf \cf10 stConfig\cf

但是我们完全可以用它来做简单的sql analysis, 对应表如下
(先顺便说一下, \cf1...\cf是RTF格式, 表示...用colortable的定义的颜色显示
cf1 keyword
cf2 datatype
cf3 function
cf4 fmtonly 之类
cf5 符号 如 * . [ ] ( ) null
cf6 字符串 有可能是日期
cf7 数字(注意包括top count) 函数内的参数
cf8 comment
cf10 object (select n'abc' 的n会当做object)
par 语句结束

bug: 有多行字符串时分析结果是错误的

让我们一起YAML吧

[ 2007-08-18 12:43:03 | 作者: progame ]
YAML Ain't Markup Language, 一般会认为Yet Another Markup Lanuage, 结果它表明自己不是标记语言, 按wikipedia的解释: A markup language combines text and extra information about the text. The extra information, for example about the text's structure or presentation, is expressed using markup, which is intermingled with the primary text. 既然YAML说自己非标记性语言, 那么它很清楚的在告诉大家: 在这里, 只有数据!

YAML(tm) is an international collaboration to make a data serialization language which is both human readable and computationally powerful. 所以它的出发点就是对人来说是易读的, 对计算机来说是容易处理的, 主要用来序列化数据, 当然我认为它还包括了反序列化

慢慢地, 面对越来越多的诱惑和需求, YAML开始变得复杂, 有兴趣的可以看它的Specification: http://yaml.org/spec/current.html 估计大多数人要晕了, YAML的初衷是希望它的Parser是易于实现而且只需要单向处理(即不需回溯), 这样可以保证Prase的速度, 但现在, 如果完全实现它的Specification.... 起码C#的YAML Parser: http://yaml-net-parser.sourceforge.net/ 已经歇菜了, 两位作者说实在无法去应对所有的特性 [sweat]

因为我需要很多描述性的数据要存储读取, 包括在程序文件夹和数据库中, 在外部的还得经常编辑, 自然地但想着用YAML来处理, 结果试用了一下Yaml.Net, 很多我需要的功能没有, 所以最后我还是自己写了一个Yaml Parser, 因为它是通过TAB缩进描述的, 所以一般的Parser Generator就派不上用场了, 幸好里面的规则不多

当然我也不会去完全实现所有特性, 取舍之后, 有了很多修改, 到后来原来的YAML语法就不管了, 怎么易读易写就怎么来了

改动之后, TAG功能完全去掉了, 毕竟.Net是可以反射的, 没必要增加编辑文件的痛苦

一段Yaml可以包含多个对象定义
对象定义可以嵌套
字符串如果没有换行,空格和特殊字符 \t \" \' = : & , | >, 可以直接写入
否则可以以\' 和 \" 两种方式标明
换行的有两种表式 | 表示的是多行文件, > 表示的是单行文件写做多行
  string:abc
  string:"abc"
  string:'abc'
  string|  # value is "ab\r\nc"
    ab
    c
  string>  # value is "abc"
    ab
    c

注释以#开始
对象引用以&开始
  value:&object
对象定义后 : 表示继承
  inheritedtype:parenttype

属性和值
  prop:value
泛型的Dictionary
  简单类型  key1:value1, key2:value2
  复杂类型
      key=prop1:value1 prop2:value2
    或
      key
        prop1:value1
        prop2:value2
泛型的List
  简单类型
      value1, value2,...
    或
      value1
      value2
      ...
  复杂类型
      -
        prop1:value11
        prop2:value21
      -
        prop1:value12
        prop2:value22
    或
      - prop1:value11 prop2:value21
      - prop1:value21 prop2:value22
    或
      -
        prop1:value11 prop2:value21
      -
        prop1:value21 prop2:value22

      
测试用例:
public class Person
{
public string name;
public int age;
public float salary;
public bool married;
public DateTime birthday;
public string remark;

public Dictionary<string, Person> Children;
public List<Person> Friends;
public List<string> Titles;
public Dictionary<string, string> Address;
public Person ReportTo;
public Person Parent;
public Company Company;

public Color haircolor;

public Person()
{
Children = new Dictionary<string, Person>();
Friends = new List<Person>();
Titles = new List<string>();
Address = new Dictionary<string, string>();
}
}

public struct Company
{
public string name;
public string address;
}

YAML文件:
#collection:list,dictionary
#property
#simple type:string,int,float,double,datetime,bool
#custom type

simpletype
  name:progame
  age:100
  salary:10.23
  birthday:1979-09-20
  married:false # if married
  
simpletype2
  name:progame age: 100 remark>
...

阅读全文...

小心getdate()

[ 2007-08-16 16:58:49 | 作者: progame ]
在SqlServer里GetDate()被称之为不确定函数, 所以在针对这样的查询时:

select * from table where date > dateadd(month,-1,getdate())

SQLSERVER会认为后面的比较值不确定, 所以不会使用index seek

sql server2005如何未知, 要测试一下才知道

我的自行车终于坏了

[ 2007-08-14 20:47:04 | 作者: progame ]
昨天做了个梦, 骑自行车出游了, 走过一段坎坷而又辛酸的道路后, 我的坐骑内胎给扎破了

无奈之下, 找修车铺吧, 修好后就决定返回了, 万幸, 还是找到一家, 一看店家就是高手, 手上的活是干净利落, 不过他好像要急着去吃饭, 于是更是加快了手脚, 说时迟, 那时快, 才几眨眼的功夫就把车胎给补好了, 装好后, 就得打气了, 高手就是高手, 连给个车胎打气都这么帅!

可刚刚补的是后轮啊, 给前轮打气干什么? "砰"... 终于, 前轮也爆胎了

这个故事告诉我们说: 欲速而不达, 所以说速达是不可靠的

其实我是一个刀客

[ 2007-08-10 21:48:54 | 作者: progame ]

其实我是一个刀客

长久以来, 我一直隐藏着我的身份, 因为做为一名心中有刀, 手上无刀的刀客, 我只能用程序员的工作来做为掩护, 但现在, 我终于人刀合一了, 所以我的刀客身份也就只好公开了

这把刀是别人在西藏买的, 送给我的, 我很喜欢, 因为外形够酷, 入手也颇为沉重, 不仅可以用来刺和削, 还可以做为砍和切的动作, 也许西藏人是用来切割藏羚羊的? 不得而知了, 现在终于宝刀入得英雄手了, 它也不枉此生了

许多年以来, 我一直苦练刀削面绝技, 已是神功大成, 却发现空有可屠之龙, 憾无屠龙之刀,? 今日有此神器相助, 看来就不光是去做做刀削面这么简单的营生了...

google的

baidu的


这样的恶搞视频只是简单的堆凑, 越是在里面赤裸裸地贬低打击竞争对象百度, 越显得自己的心虚, 就像咯吱人笑从来就不是幽默一样

我很讨厌自动跳转到google.cn, 因为我不喜欢搜索提示, 我很明确地知道我要搜索什么, 不想受干扰, 于是只好进www.google.com/ncr改过来, 但百度我仍然基本不用, 结果排序太差了, 而且很多时候我要用的是google的论坛搜索

拍这样的一个视频自娱自乐是没关系的, 但要有些自知之明, 很不搞笑的一个东西硬要拿出来炒, 那只能再次从反面证明了百度更懂中文了

电视剧<<士兵突击>>又开轮了

[ 2007-08-05 09:37:12 | 作者: progame ]
很多个月以前, 是在MHTV播放的, 没想到, 现在乘着八一节之余威, 各大电视台又开轮了...

现在能看到的有:四川卫视, 河南,河北卫视, 北京电视台, 尤其是前面3个, 不但在频道中数字非常接近, 连播放的时间也很接近, 所以经常是一个情节在3个台的重复重复再重复中进行复习...

许三多是幸运的, 因为他碰到了史今班长, 但电视剧中要把三多塑造成一个全能尖兵, 实在有点让人不信服, 史今当了9年兵, 伍六一年头也不少了该, 结果怎么会一个两年兵龄不到的脑袋慢三拍的人把集团军的各项比武的第一名, 第二名给拿了, 况且这两年, 许三多分别在新兵连, 草原5班散了不少时间的心. 让主人公成绩非凡, 出人头地是剧本们的最终归宿, 士兵突击能免了感情戏的俗(实际上是以战友情代替了), 但没能免了大好结局的俗, 虽然前面以老马, 史今, 伍六一的惨淡离去做了铺垫, 但最后, 三多和成才都进了老A还是让观众们感到皆大欢喜.

电视剧的成功在于对每个人的塑造都相当好, 每个人物都很丰满, 但无论如何, 袁朗和伍六一我是不怎么喜欢的, 前者太假, 后者太直, 最喜欢的还是连长高城, 十足的男人味, 那种外刚内柔的表现相当到位. 三多同志前面的傻笑, 随着他成长起来后消失, 以面容严肃常做思考状而代替, 这让我感觉到了一个不真实的许三多, 也许故事情节应该是这样的: 在三多的努力下, 终于赶上了钢七连一排三班的其它战友, 顺利地为班里把先进班集体挣回来了, 最后思想斗争之下, 转为士官, 先是代替六一成为班副, 又在史今走后成为班长, 迎接新来的战友们...

凭什么好事都三多一人赶上了啊, 抓袁朗, 进老A, 多次演习中扮演着关键角色, 幸运女神是他家的宠物啊? 现实的残酷在于, 不是所有努力都能得到回报, 不是所有付出都有收获, 电视剧如果能在煽情的基础上再无情一把, 才会更符合我们这些理想破灭, 苟延残喘的中老年们的心声.

这部片子其实是非常搞笑的一个, 老马, 白铁军, 高连长再加上一个许木木, 可惜是后来, 老马走了, 白铁皮走了, 连长和三多最后留守时爆发了一下, 接下来就只剩下一个思考者许三多了, 索然无味了许多. 不过许三多的性情还是能成就一些事情的, 坚忍无比, 百毒不侵, 战友们无情的挖苦讽刺, 本来是效果良好的反话结果硬是让三多听不懂, 这是多么让挖苦者痛心疾首的一件事啊! 里面有些话还是有意义的, 记之如下:
活着就要有意义, 有意义就是好好活着 (抡锤有意义, 掌钎没意义这个不算 [sweat] )
他干任何小事都好像抓一个救命稻草一样,抓住就不放手,但最后别人一无所有的时候,他却拥有了参天大树

转个别人的评论:
除了比许三多早一些受到军队的锻炼之外,跟许三多相比,他们其实都是一样的,没有后台,没有钱,来自于农村,需要靠自己的努力和打拼,尽最大可能留在部队,为自己拼出一个前途。

 可是许三多出现了,为了将他捏出一个人样来,班长就无法为自己作任何一点多余的打算,不能不将他背起来一起走,于是他退步了,一步一步地往后退,退到退伍边缘了,许三多还是无法觉醒,那刀在他心里扎啊。等到那一朵朵的花终于在许三多的心里孕育了,班长也耗尽了自己的元气,不得不接受退伍这条路。可是许三多还无法自立啊,于是就班副就挑起了班长的担子。

 许三多从参军到进入A大队之前的路,都是踩着班长和班副的身体,被他们一路帮着、拖着、拉着往前走。就像连长所说的那样:“他干任何小事都好像抓一个救命稻草一样,抓住就不放手,但最后别人一无所有的时候,他却拥有了参天大树。”

 他把班长和班副当救命稻草这样紧紧地抓着,他们就这样背着自己的前途,背着全副武装,再背着一个许三多,拼命地往前跑,班长无力了,班副接着背。在同样艰苦的环境之下,在极其有限的体力和能力之下,他们要分出精力去照顾许三多,就好像泡在冷水中,班副要分出一只手去抓住许三多推着他前进,让他不要睡着,给他打气,给他鼓励,而其实——班副面临的是同样的境况啊,他也冷,他也困,他也危险,他也饿啊……

 终于,班副也撑不住了,也倒下了,也垮了,可是许三多却积累了,却成长了,却从班副疲惫不堪的身体上站起来了,一步一步地走向了终点。

 “你就是我的地狱!”高连长怒吼。

 为什么?因为他最好的两个兵被他认为最孬的那一个兵给拖垮了,这个孬兵站起来了,开始发挥他的优点长处了,开始长大成人,开始开花结果了,开始反过来能给他带来教育意义了……可是老七的两个宝贝却从此消失了。

 许三多长大了,吸取了班长和班副全部的营养,长成了参天大树,转身就跟那个在他茂生枝叶上雕花的袁朗说:“你是这辈子帮我最多的人。”

 ……本来是想写的搞笑点的,不知怎么下笔却觉得义愤填膺。极其不解的是为什么A大队那么欣赏许三多。不错,他是吃苦耐劳,不抛弃不放弃,执着,打靶射击越野等等考核都过硬,可是,在实战中他行吗?他射击准,但他知道往哪儿射吗?他擒拿水平高,可他敢下手抓人吗?他了解战争的意义吗?他能够面对敌人下杀手吗?

 在进A大队的考核当中,除了能吃苦耐劳,他什么主意也没有,就跟着班副和成才跑来跑去,别人还得照顾着他。

 ……他确实是一个好人,老实人,有恒心有毅力,吃苦耐劳,有着许多人没有的优点。可是从头到尾他几乎所有的问题都得靠别人来解决,他一出事,身边的人就遭殃。他成长,班长就牺牲了军旅生涯,他爸爸要他复员,班副就背了平生第一个处分,他杀了毒贩,连长就得靠挖苦成才来给他做对比,班长班副耗尽心血,到头来你就为杀个毒犯就退伍了吗?他家欠了20万元钱,A大队所有的队员就都得捐出一个月的工资……

 许三多在谁身边,他的杀伤力就波及到谁。因为自身的自我保护能量较小,所以班副和班长先后报销了,而他的思维方式非常奇特,连长曾被他气的发疯,袁朗也几乎被他气得痴呆。

深以为然, 许三多成长了, 代价是一批人的倒下, 况且这样的全能尖兵, 如果你是他的上级, 敢在战场上用他吗?

这里给个士兵突击在线观看的地址
这是BT下载
1