删除Win7镜像中ei.cfg以达到选择操作系统的目的(偏执的完美主义版)

这篇文章讲的并不是有关删除ei.cfg这个文件就能选择安装的操作系统这一知识——delete键在哪里这种事情按说是不用教的。

通常情况下,我使用U盘安装系统,也就是把sources目录拷贝到U盘中,至于ei.cfg文件,直接按delete键就ok了。

但是在某些情况下必须用光盘——给Mac装系统的时候。去年某飞临走时需要把他Mac上的win7换成家庭高级版(出国装个盗版的旗舰版win7太高调)。那么需要在光盘镜像里删掉这个文件,这就稍微有点麻烦——我们需要用ultraiso之类的镜像编辑软件把这个文件删除,然后保存一个新镜像刻盘。嗯,广大群众都是这么做的。

但是作为一个处女座程序员。。。[……]

Read more

GhostCHD网络封包引擎用户层过LaTale台服nProtect

这篇文章其实不能给外挂初学者带来什么帮助,因为我的目的不是调试NP保护下的游戏来找call什么的——事实上,在国服待的几年我已经把这游戏研究透了,不夸张地讲给我一年的全日制时间我能自己逆向写一份这游戏。

GhostCHD引擎只有一个功能——分析游戏的通信协议、然后自己发包。辅助软件坚决不读写游戏内存,即便是当年发布的GhostCHD辅助实际上也是一个小型的独立游戏客户端,而不依赖游戏本身。说白了就是脱机挂。脱机版本的GhostCHD我没有发布过,不过当年接代练生活技能就用的是脱机的,一天能同时接五六个单子,最后受不了的是宽带带宽的说。

这使得我的思路受NP的限制不大。众所周知NP主要防的是[……]

Read more

吐槽一下HDD Regenerator的防破解技术

前几天因为以为几次蓝屏是硬盘的问题而装上了以前用过的HDD Regenerator 2011破解版,然后这软件给我推送了更新的版本,就上网更新了下。

由于现在用的破解版是Patch形式而不是KeyGen,所以新版自然没有破解。出于好奇,就想自己破破看。

我的目标很简单,HDDREG不是有写到U盘上的DOS版本么,我只需要找到注册版的这个DOS程序就够了。

事实证明,我手贱了。。。这是我接触逆向这么多年来碰到的最厉害的软件保护。

==================华丽丽的分割线==================

用winhex看了下安装目录下个各个文件,发现DOS版本是放在DSCK[……]

Read more

解决MeGUI有时出现的StackHash崩溃问题

无聊想压一份Lord of The Rings,结果写了AVS结果在MeGUI中载入会导致崩溃,故障模块显示为StackHash_XXXX这样的字样,但是Windows中并没有这样一个模块。

Google得到的信息并不多,有这一篇文章引起了我的注意:

解决WIN7出现stackhash APPCRASH问题(故障模块名称: StackHash_af76)

虽然不确定是不是如文章所说的DEP问题,但还是按照文章的做法试着添到Windows的白名单中,结果提示此程序不支持关闭DEP保护类似这样的字样,无法添加进Windows的例外。

立即联想到PE文件头中有一个IMAGE_DLL_CHAR[……]

Read more

打造世界最小LZMA解压DLL(第二弹)

一年前我曾写过一篇《手写PE文件,打造史上最小LZMA解压DLL》,最近因为涉及毕业设计,重新开始研究PE,同时也需要提供LZMA压缩功能。

对原来的程序观察后发现,UPX使用的LZMA代码并不是最优化的编译,原因是局部变量全部使用ESP寻址,而Intel x86对寄存器寻址有个ESP例外,需要多占用一字节的指令。于是重新翻出LZMA SDK,使用VC6编译出2409字节的代码(原来是2694字节)。

另外一个问题就是原来开头写的sub esp, 3e80是不对的。Windows分页机制规定,栈分配是逐页进行的,当当前栈位于页顶端时访问上面的页会引发栈空间分配,但跨页访问即认为访问越界。显[……]

Read more

【原创】手写PE文件,打造史上最小LZMA解压DLL

因程序需求,需要在VB中调用LZMA解压数据,经过N天研究出此成果~

什么是LZMA:LZMA应该是目前世界上数一数二的压缩算法——压缩时相同的时间得到压缩比最高,解压时速度极快且几乎不占内存。如果你对LZMA算法并无耳闻,那么7z总听说过吧。。没错,LZMA即7z作者发明的,7z使用的算法。什么?7z也没听说过?这样吧,你在网上下的软件,比如旺旺、暴风影音、人人桌面,它们的安装程序都是清一色的NSIS,打包的压缩算法是LZMA。。

用到的工具:

文件、内存编辑器:winhex
汇编器、调试器:ollydbg
upx shell

参考的资料:

看雪论坛《加密与解密》[……]

Read more

VB实现COM接口针对返回S_FALSE时的COM HOOK

这几天在写HtmlUI的VB6版本,Browser端原来折腾过,并且代码都在,还算好说,Server端用Asynchronous Pluggable Protocols,遍地求代码求不到,最后只得自己研究E文的MSDN,主要是要实现IInternetProtocol接口。

用VB写过COM的同学应该都知道,实现接口时VB是没法直接返回HRESULT的,通常的做法是什么都不做就代表S_OK,用Err.Raise E_XXXX返回错误。

在实现IInternetProtocol时,和往常一样,开始是一大堆的S_OK和一大堆的E_NOTIMPL,执行时发现IInternetProtoco[……]

Read more

放弃破解Rayman2的海盗头。。

整整三天的时间,最后闹个束手无策。。为三天假期表示沉痛哀悼。。

本来破解补丁已经写好了,通过Hook贴图的代码过滤掉海盗头和相关文字,正高兴着呢,结果上去玩两分钟就哭了。。Ubi太坏了,这招绝不是简单的贴个影响游戏的图就完了,游戏元素也会受到影响,本该潜水的鱼缸里没了水,悬崖峭壁的尽头少了紫色抓环。。

至此算是束手无策了,因为整个过程,从判定到检验到耍花招,所有的代码都是游戏地图编译脚本实现的,也就是说我们面对的是一堆无法理解的字节码,和一个不知道原理的脚本虚拟机。众所周知分析一个虚拟机程序意味着什么(VMP,给你做广告呢,别忘了给广告费~~)。更具体地说,Rayman2中脚本系统[……]

Read more