Canbitwell Products

Yuri'Blog +[基于冲量物理实时模拟] [碰撞检测]
posts - 12, comments - 10, trackbacks - 0, articles - 1
   :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

研究Xenocode

Posted on 2007-11-16 13:19 Yuri 阅读(144) 评论(1)  编辑 收藏 网摘 所属分类: 默认分类

暑假没事写的,当时一直没发布……


  最近弄下来Xenocode Postbuild 2007的破解版,加密.Net程序集挺好,而且它能把程序编译成x86的,选Suppress ILDASM and other external reflection tools或者Compile managed application to native x86 executable image就行,后者可以让程序脱离.Net Framework。只是,自己程序一旦转为本机代码下的,它运行前就会弹出个消息框说:“This application was created using an evalution version of Xenocode products.” 用其他的功能比如扰乱就没这个问题,但还是觉的编译成x86更安全些。可是这个消息框太讨厌……


  用IDA pro打开postbuild的主程序会发现他的程序里有一个段无法反汇编,我估计这个段是加密了的代码。我估计这些加密的代码就是自己写的程序集的代码。用Postbuild处理自己的.net程序也会产生这样一个段,结构和postbuild的主程序相似。

在这个段后面有另一个段,不管是自己的exe还是postbuild的主程序IDA都能反汇编出一部分代码,而且它们基本相同。这些代码我估计是在加载exe时执行的,它用来解密并启动加密了的原始.Net程序。
所以我想Postbuild应该原先也是.Net的,然后Xenocode Postbuild发布时,自己将自己处理了一遍,就成了现在这个样子。

弹出消息框很可能会直接调用MessageBox这个API函数 ,可以在最后找到:

然后那个消息框的调用就非常好找:

我本以为,这些代码会被复制到postbuild处理出的每一个编译成x86的程序中,所以,我就用UE把这几条指令对应的字节全改成0x90,即nop,
结果不起作用。。。
显然,这就证明了刚才:
 这些代码是postbuild将自己编译成x86而产生的,postbuild自己将自己处理过
 “这些代码我估计是在加载exe时执行的,它用来解密并启动加密了的原始.Net程序。”
所以postbuild处理程序时,以上这些代码是由那个被加密了的段中的程序产生的,这就不好说了。。。。

  不过,用postbuild处理过的程序,倒是可以用这种方法除去那个消息框。
修改有两种方法,要么都换成nop指令,要么把调用堆栈里的hWnd参数换成任意值,只要不是0,也不和别的程序的窗体的Handle相同即可(后者不是很好,但通常不会碰巧对应上一的窗体的Handle,一般Handle的值都较大,设成1应该差不多,这个只需改一个字节,实在不行把那条消息内容改了)

Feedback

#1楼    回复  引用  查看    

2008-10-30 12:07 by RawMan      

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-11-28 22:58 编辑过
Google站内搜索

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》



相关文章:

相关链接:

所属分类的其他文章:
NOIp
研究Xenocode