脱壳教程1

脱壳教程1
脱壳教程1

脱壳教程1:认识脱壳

一切从“壳”开始

首先大家应该先明白“壳”的概念。在自然界中,大家对壳这东西应该都不会陌生了,植物用它来保护种子,动物用它来保护身体等等。同样,在一些计算机软件里也有一段专门负责保护软件不被非法修改或反

编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。就像动植物的壳

一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。由于这段程序和自然界

的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。就像计算机病毒

和自然界的病毒一样,其实都是命名上的方法罢了。

最早提出“壳”这个概念的,据我所知,应该是当年推出脱壳软件 RCOPY 3 的作者熊焰先生。在几

年前的 DOS 时代,“壳”一般都是指磁盘加密软件的段加密程序,可能是那时侯的加密软件还刚起步不久吧,所以大多数的加密软件(加壳软件)所生成的“成品”在“壳”和需要加密的程序之间总有一条比较

明显的“分界线”。有经验的人可以在跟踪软件的运行以后找出这条分界线来,至于这样有什么用这个问题,就不用我多说了。但毕竟在当时,甚至现在这样的人也不是很多,所以当 RCOPY3 这个可以很容易就

找出“分界线”,并可以方便的去掉“壳”的软件推出以后,立即就受到了很多人的注意。老实说,这个

我当年在《电脑》杂志看到广告,在广州电脑城看到标着999元的软件,在当时来说,的确是有很多全新的构思,单内存生成 EXE 可执行文件这项,就应该是世界首创了。但它的思路在程序的表现上我认为还有很多可以改进的地方(虽然后来出现了可以加强其功力的 RO97),这个想法也在后来和作者的面谈中得到了证实。在这以后,同类型的软件想雨后春笋一般冒出来,记得住名字的就有: UNKEY、MSCOPY、UNALL .... 等等,但很多的软件都把磁盘解密当成了主攻方向,忽略了其它方面,当然这也为以后的“密界克星”“解密机器”等软件打下了基础,这另外的分支就不多祥谈了,相信机龄大一点的朋友都应该看过当时的广告了。

解密(脱壳)技术的进步促进、推动了当时的加密(加壳)技术的发展。LOCK95和 BITLOK 等所谓

的“壳中带籽”加密程序纷纷出笼,真是各出奇谋,把小小的软盘也折腾的够辛苦的了。正在国内的加壳

软件和脱壳软件较量得正火红的时候,国外的“壳”类软件早已经发展到像 LZEXE 之类的压缩壳了。这类软件说穿了其实就是一个标准的加壳软件,它把 EXE 文件压缩了以后,再在文件上加上一层在软件被执行的时候自动把文件解压缩的“壳”来达到压缩 EXE 文件的目的。接着,这类软件也越来越多, PKEXE、AINEXE、UCEXE 和后来被很多人认识的 WWPACK 都属于这类软件,但奇怪的是,当时我看不到一个国产的

同类软件。

过了一段时间,可能是国外淘汰了磁盘加密转向使用软件序列号的加密方法吧,保护 EXE 文件不被

动态跟踪和静态反编译就显得非常重要了。所以专门实现这样功能的加壳程序便诞生了。 MESS 、CRACKSTOP、HACKSTOP、TRAP、UPS 等等都是比较有名气的本类软件代表,当然,还有到现在还是数一数二的,由台湾

同胞所写的 FSE 。其实以我的观点来看,这样的软件才能算是正宗的加壳软件。

在以上这些加壳软件的不断升级较劲中,很多软件都把比较“极端”技术用了上去,因为在这个时候DOS 已经可以说是给众高手们玩弄在股掌之间了,什么保护模式、反 SICE 、逆指令等等。相对来说,在

那段时间里发表的很多国外脱壳程序,根本就不能对付这么多的加壳大军,什么 UPC、TEU 等等都纷纷成

为必防的对象,成绩比较理想的就只有 CUP386 了,反观国内,这段时间里也没了这方面的“矛盾斗争”。加壳软件门挥军直捣各处要岗重地,直到在我国遇到了 TR 这个铜墙铁壁以后,才纷纷败下阵来各谋对策,但这已经是一年多以后的事情了。我常想,如果 TR 能早两年“出生”的话,成就肯定比现在大得多,甚

至盖过 SICE 也有可能。TR 发表的时候 WIN95 的流行已经成为事实,DOS 还有多少的空间,大家心里都清楚。但话又说回来, TR 的确是个好软件,比起当年的 RCOPY3 有过之而无不及,同时也证明了我们中国的 CRACK 实力(虽然有点过时)。这个时候,前面提到过的 FSE 凭着强劲的实力也渐渐的浮出了水面,独领风骚。其时已经是 1997 年年底了,我也走完了学生“旅程”。工作后在CFIDO 的 CRACK 区认识了Ding-Boy ,不久 CRACK 区关了,我从此迷上了 INTERNET,并于98年6月建起了一个专门介绍“壳”的站台:https://www.360docs.net/doc/d717213758.html,;,放上了我所收集的所有“壳”类软件。在这段时间里,各种“壳”类软件也在不段的升级换代,但都没什么太大的进展,差不多就是 TR 和众加壳软件的版本数字之争而已。1998年8月,一个名为 UNSEC (揭秘)的脱壳软件发表了,它号称可以脱掉98年8月以前发表的所有壳。我测试之后,觉得并没传闻中的那么厉害,特别是兼容性更是令我不想再碰它。 Ding-Boy 给这个软件的作者提了很多建议,但寄去的 EMIAL 有如泥牛入海,可能是一怒之下吧,不久 Ding-Boy 的 BW (冲击波)就诞生了。这个使用内存一次定位生成 EXE 文件(后来放弃了)的脱壳软件,在我的站台公开后,得到了很多朋友们的肯定。要知道,从RCOPY 3 开始,绝大部分的脱壳软件都是要两次运行目标程序来确定 EXE 的重定位数据的。BW 的这一特点虽然有兼容性的问题,但也树立了自己的风格、特色。经过几个月的改善,BW 升级到了 2.0 版本,这个版本的推出可以说是 BW 的转折点,因为它已经是一个成熟、稳定脱壳软件了,它可以对付当时(现在)大多数的壳,包括当时最新的 FSE 0.6 等。更重要的是这个版本把选择壳的和软件“分界线”这个最令新手头疼的步骤简化到不能再简化的地步,使更多的朋友接受了它。另外,能加强 BW 功力的 CI 模式也是其它脱壳软件没有的东西。最近,BW 发表了最新的 2.5 BETA2 版本,增强了一些方面的功能,因它竟然可以脱掉号称最厉害的磁盘加密工具 LOCKKING 2.0 的加密壳,因而进一步奠定了它在“脱壳界”的地位。说到最新,就不能不提 GTR、LTR、EDUMP、ADUMP、UPS、UPX、APACK 这几个国外的好软件了,它们每个都有自己的特色,可以说都是当今各类“壳”中的最新代表了

由于WINDOWS 3.1 只是基于DOS 下的一个图形外壳,所以在这个平台下的“壳”类软件很少,见过的就只有像PACKWIN 等几个有限的压缩工具,终难成气候。

可能是MICROSOFT 保留了WIN95 的很多技术上的秘密吧,所以即便是WIN95 已经推出了 3 年多的时间,也没见过在其上面运行的“壳”类软件。直到98 年的中期,这样的软件才迟迟的出现,而这个时候WIN98 也发表了有一段日子了。应该是有DOS 下的经验吧,这类的软件不发表由自可,一发表就一大批地的冲了出来。先是加壳类的软件如:BJFNT、PELOCKNT 等,它们的出现,使暴露了 3 年多的WIN95 下的PE 格式EXE 文件得到了很好的保护。大家都应该知道现在很多WIN95 下的软件都是用注册码的方法来区分、确定合法与非法用户的吧,有了这类加壳软件,这种注册方法的安全性提高了不少,如果大家也有自己编的WIN95 程序,就一定要多留意一下本类软件了。接着出现的就是压缩软件了,因为WIN95 下运行的EXE 文件“体积”一般都比较大,所以它的实用价值比起DOS 下的压缩软件要大很多,这类的软件也很多,早些时候的VBOX、PEPACK、PETITE 和最近才发表的ASPACK、UPX 都是其中的佼佼者。在DOS 下很流行的压缩软件WWPACK 的作者也推出了对应WIN95 版本的WWPACK32,由于性能并不是十分的突出,所以用的人也不太多。由于压缩软件其实也是间接给软件加了壳,所以用它们来处理EXE 也是很多软件作者喜欢做的事情,最近新发表的很多软件里都可以看到这些加壳、加压缩软件的名字了。有加壳就一定会有脱壳的,在WIN95 下当然也不例外,但由于编这类软件比编加壳软件要难得多,所以到目前为止,我认为就只有PROCDUMP 这个软件能称为通用脱壳软件了,它可以对付现在大多数的加壳、压缩软件所加的壳,的确是一个难得的精品。其它的脱壳软件多是专门针对某某加壳软件而编,虽然针对性强、效果好,但收集麻烦,而且这样的脱壳软件也不多。前些时候TR 作者也顺应潮流发表了TR 的WIN95 版本:TRW ,由现在的版本来看可以对付的壳还不多,有待改进。

BW 的作者Ding-Boy 最新发表了一个WIN95 的EXE 加壳软件DBPE 。虽然它还不太成熟,但它可以为软件加上使用日期限制这个功能是其它加壳软件所没有的,或者以后的加壳软件真的会是像他说的那

样可以:加壳和压缩并重、并施;随意加使用日期;加上注册码;加软件狗(磁盘)保护;加硬件序列号判别;加... 。

附加一点内容

一.壳的概念

作者编好软件后,编译成exe可执行文件

1.有一些版权信息需要保护起来,不想让别人

随便改动,如作者的姓名等

2.需要把程序搞的小一点,从而方便使用

于是,需要用到一些软件,他们能将exe可执行文件压缩,

实现上述两个功能,这些软件称为加壳软件或压缩软件.

它不同于一般的winzip,winrar等压缩软件.

它是压缩exe可执行文件的,压缩后的文件可以直接运行.

二.加壳软件

最常见的加壳软件ASPACK ,UPX,PEcompact

不常用的加壳软件WWPACK32;PE-PACK ;PETITE ;NEOLITE

三.侦测壳和软件所用编写语言的软件

1.侦测壳的软件fileinfo.exe 简称fi.exe(侦测壳的能力极强)

使用方法:

第一种:待侦测壳的软件(如aa.exe)和fi.exe位于同一目录下,执行

windows起始菜单的运行,键入

fi aa

第二种:待侦测壳的软件(如aa.exe)和fi.exe位于同一目录下,将aa的图标拖到fi的图标上

2.侦测壳和软件所用编写语言的软件language.exe(两个功能

合为一体,很棒)推荐language2000中文版,我的主页可下载

傻瓜式软件,运行后选取待侦测壳的软件即可(open)

脱壳教程2:手动脱壳入门第一篇脱壳教程2:手动脱壳入门第一篇

【使用工具】Olly dbg1.10b,ImportREC1.6F

【破解平台】Win2000/XP

前言,作者写这篇文章只是举个例子,希望读者能够举一反三,看清思路.

本论坛中破解高手很多,不会手动脱壳者人数仍然不少。有人会说,我有Unaspack,Caspr,ProcDump等众多脱壳工具,不会手动脱壳用工具脱就可以了。但有部分壳如Asprotect1.23Rc4,本论坛高手仙剑(将自己加密壳伪装成C++),有漏洞,用Peid查壳,Ep区段写有Xj,用Od载入提示有壳,更有甚一些软件如大嘴日语加了四层壳,这些都是工具无法脱壳的。随着加密壳的不断出现,基本壳都不会,高版本的加密壳以后脱壳盲根本无从入手。所以,手动脱壳Crack必修。

手动脱壳的主要步骤是:寻找入口点,转储(dump)程序,修复引入函数表(Import T able)

现在的壳分压缩壳,和加密壳。压缩壳目的是使文件大小变小,便于在网上传播。并有一定的保护作用,你无法反汇编加壳程序。加密壳目的是用各种手段保护软件不被脱壳,跟踪,文件大小不是它的目的,有的甚至变大。

判断加密壳压缩壳和普通程序分别很容易,用Ollydbg载入程序。

没加壳软件无任何提示。

加密壳有些Od载入时会提示压缩,基本上F9运行后,OD提示程序异常。

普通加壳Od载入时一般都会发现,提示软件被加壳,是否继续分析。

还有些是脱壳没有脱干净,Od载入时也提示加壳。

更猛的壳用Od载入就异常,如Acprotect。

关于壳的知识不是一两篇文章就能说清,要经过大量的各种壳的脱壳经验,参考文章。

好,我们先从一个基本的Upx壳入手。

本地下载

首先必须的工具要准备好,

查壳工具

Peid0.91,Fileinfo,Language2000,File Scanner等。

查入口工具。

Peid0.91首推,冲击波(9X)系统专用,Asloader,自己的感觉,程序跨段跳跃点。

脱壳工具。

Olly dbg首选,LoadPe,PEditor,ProcDump等,够用了。

修复引入函数表(Import T able)工具。

Imprec,File Scanner,PEditor,LoadPe,ProcDump,Revirgin等,够用了。

以上的工具都有当然最好,至少得有。

Peid0.91,Fileinfo,PEditor,LoadPe,Imprec,Asloader。

工具准备好,开始小试验牛刀。

附件中壳为Fi测壳为Upx1.01,Peid这里测不出Upx的压缩版本。

手动脱壳建议大家用Olly dbg,工作平台Win2000,WinXp,Win9x不推荐。

手动脱壳时,用Olldbg载入程序,脱壳程序里面会有有好多循环。对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈。不要用Peid查入口,单步跟踪,提高手动找入口能力。

用OD载入程序后。

Od提示程序加壳,选不继续分析。

0046AC00 > 60 PUSHAD 停在这里,我们先记住UPX壳的加壳入口第一句是PUSHAD

出口暂时不清楚,为的是今后碰到多层壳有准备。

0046AC01 BE 00104400 MOV ESI,ex1.00441000

0046AC06 8DBE 0000FCFF LEA EDI,DWORD PTR DS:[ESI+FFFC0000]

0046AC0C C787 D0940500 D>MOV DWORD PTR DS:[EDI+594D0],10A125D8

0046AC16 57 PUSH EDI

0046AC17 83CD FF OR EBP,FFFFFFFF

0046AC1A EB 0E JMP SHORT ex1.0046AC2A 跳走

0046AC1C 90 NOP

0046AC1D 90 NOP

0046AC1E 90 NOP

0046AC1F 90 NOP

0046AC20 8A06 MOV AL,BYTE PTR DS:[ESI]

0046AC22 46 INC ESI

0046AC23 8807 MOV BYTE PTR DS:[EDI],AL

0046AC25 47 INC EDI

0046AC26 01DB ADD EBX,EBX

0046AC28 75 07 JNZ SHORT ex1.0046AC31

0046AC2A 8B1E MOV EBX,DWORD PTR DS:[ESI] 到这里。

0046AC2C 83EE FC SUB ESI,-4

0046AC2F 11DB ADC EBX,EBX

0046AC31 ^ 72 ED JB SHORT ex1.0046AC20 这里注意,往回跳。脱壳时记住只能让程序往前运行

0046AC33 B8 01000000 MOV EAX,1 在这里点一下,F4运行到这句继续。

0046AC38 01DB ADD EBX,EBX

0046AC3A 75 07 JNZ SHORT ex1.0046AC43 跳0046AC3C 8B1E MOV EBX,DWORD PTR DS:[ESI]

0046AC3E 83EE FC SUB ESI,-4

0046AC41 11DB ADC EBX,EBX

0046AC43 11C0 ADC EAX,EAX

0046AC45 01DB ADD EBX,EBX

0046AC47 ^ 73 EF JNB SHORT ex1.0046AC38 0046AC49 75 09 JNZ SHORT ex1.0046AC54 跳0046AC4B 8B1E MOV EBX,DWORD PTR DS:[ESI] 0046AC4D 83EE FC SUB ESI,-4

0046AC50 11DB ADC EBX,EBX

0046AC52 ^ 73 E4 JNB SHORT ex1.0046AC38 0046AC54 31C9 XOR ECX,ECX

0046AC56 83E8 03 SUB EAX,3

0046AC59 72 0D JB SHORT ex1.0046AC68 跳0046AC5B C1E0 08 SHL EAX,8

0046AC5E 8A06 MOV AL,BYTE PTR DS:[ESI] 0046AC60 46 INC ESI

0046AC61 83F0 FF XOR EAX,FFFFFFFF

0046AC64 74 74 JE SHORT ex1.0046ACDA 0046AC66 89C5 MOV EBP,EAX

0046AC68 01DB ADD EBX,EBX

0046AC6A 75 07 JNZ SHORT ex1.0046AC73 跳0046AC6C 8B1E MOV EBX,DWORD PTR DS:[ESI] 0046AC6E 83EE FC SUB ESI,-4

0046AC71 11DB ADC EBX,EBX

0046AC73 11C9 ADC ECX,ECX

0046AC75 01DB ADD EBX,EBX

0046AC77 75 07 JNZ SHORT ex1.0046AC80 跳0046AC79 8B1E MOV EBX,DWORD PTR DS:[ESI] 0046AC7B 83EE FC SUB ESI,-4

0046AC7E 11DB ADC EBX,EBX

0046AC80 11C9 ADC ECX,ECX

0046AC82 75 20 JNZ SHORT ex1.0046ACA4 跳0046AC84 41 INC ECX

0046AC85 01DB ADD EBX,EBX

0046AC87 75 07 JNZ SHORT ex1.0046AC90 0046AC89 8B1E MOV EBX,DWORD PTR DS:[ESI] 0046AC8B 83EE FC SUB ESI,-4

0046AC8E 11DB ADC EBX,EBX

0046AC90 11C9 ADC ECX,ECX

0046AC92 01DB ADD EBX,EBX

0046AC94 ^ 73 EF JNB SHORT ex1.0046AC85 0046AC96 75 09 JNZ SHORT ex1.0046ACA1 0046AC98 8B1E MOV EBX,DWORD PTR DS:[ESI] 0046AC9A 83EE FC SUB ESI,-4

0046AC9D 11DB ADC EBX,EBX

0046AC9F ^ 73 E4 JNB SHORT ex1.0046AC85 0046ACA1 83C1 02 ADD ECX,2

0046ACA4 81FD 00F3FFFF CMP EBP,-0D00

0046ACAA 83D1 01 ADC ECX,1

0046ACAD 8D142F LEA EDX,DWORD PTR DS:[EDI+EBP]

0046ACB0 83FD FC CMP EBP,-4

0046ACB3 76 0F JBE SHORT ex1.0046ACC4 这一句可以跳出这个循环。0046AC3C 8B1E MOV EBX,DWORD PTR DS:[ESI]

0046AC3E 83EE FC SUB ESI,-4

0046AC41 11DB ADC EBX,EBX

0046AC43 11C0 ADC EAX,EAX

0046AC45 01DB ADD EBX,EBX

0046AC47 ^ 73 EF JNB SHORT ex1.0046AC38

0046AC49 75 09 JNZ SHORT ex1.0046AC54 跳

0046AC4B 8B1E MOV EBX,DWORD PTR DS:[ESI]

0046AC4D 83EE FC SUB ESI,-4

0046AC50 11DB ADC EBX,EBX

0046AC52 ^ 73 E4 JNB SHORT ex1.0046AC38

0046AC54 31C9 XOR ECX,ECX

0046AC56 83E8 03 SUB EAX,3

0046AC59 72 0D JB SHORT ex1.0046AC68 跳

0046AC5B C1E0 08 SHL EAX,8

0046AC5E 8A06 MOV AL,BYTE PTR DS:[ESI]

0046AC60 46 INC ESI

0046AC61 83F0 FF XOR EAX,FFFFFFFF

0046AC64 74 74 JE SHORT ex1.0046ACDA

0046AC66 89C5 MOV EBP,EAX

0046AC68 01DB ADD EBX,EBX

0046AC6A 75 07 JNZ SHORT ex1.0046AC73 跳

0046AC6C 8B1E MOV EBX,DWORD PTR DS:[ESI]

0046AC6E 83EE FC SUB ESI,-4

0046AC71 11DB ADC EBX,EBX

0046AC73 11C9 ADC ECX,ECX

0046AC75 01DB ADD EBX,EBX

0046AC77 75 07 JNZ SHORT ex1.0046AC80 跳

0046AC79 8B1E MOV EBX,DWORD PTR DS:[ESI]

0046AC7B 83EE FC SUB ESI,-4

0046AC7E 11DB ADC EBX,EBX

0046AC80 11C9 ADC ECX,ECX

0046AC82 75 20 JNZ SHORT ex1.0046ACA4 跳

0046AC84 41 INC ECX

0046AC85 01DB ADD EBX,EBX

0046AC87 75 07 JNZ SHORT ex1.0046AC90

0046AC89 8B1E MOV EBX,DWORD PTR DS:[ESI]

0046AC8B 83EE FC SUB ESI,-4

0046AC8E 11DB ADC EBX,EBX

0046AC92 01DB ADD EBX,EBX

0046AC94 ^ 73 EF JNB SHORT ex1.0046AC85

0046AC96 75 09 JNZ SHORT ex1.0046ACA1

0046AC98 8B1E MOV EBX,DWORD PTR DS:[ESI]

0046AC9A 83EE FC SUB ESI,-4

0046AC9D 11DB ADC EBX,EBX

0046AC9F ^ 73 E4 JNB SHORT ex1.0046AC85

0046ACA1 83C1 02 ADD ECX,2

0046ACA4 81FD 00F3FFFF CMP EBP,-0D00

0046ACAA 83D1 01 ADC ECX,1

0046ACAD 8D142F LEA EDX,DWORD PTR DS:[EDI+EBP]

0046ACB0 83FD FC CMP EBP,-4

0046ACB3 76 0F JBE SHORT ex1.0046ACC4 这一句可以跳出这个循环。0046AC3C 8B1E MOV EBX,DWORD PTR DS:[ESI]

0046AC3E 83EE FC SUB ESI,-4

0046AC41 11DB ADC EBX,EBX

0046AC43 11C0 ADC EAX,EAX

0046AC45 01DB ADD EBX,EBX

0046AC47 ^ 73 EF JNB SHORT ex1.0046AC38

0046AC49 75 09 JNZ SHORT ex1.0046AC54 跳

0046AC4B 8B1E MOV EBX,DWORD PTR DS:[ESI]

0046AC4D 83EE FC SUB ESI,-4

0046AC50 11DB ADC EBX,EBX

0046AC52 ^ 73 E4 JNB SHORT ex1.0046AC38

0046AC54 31C9 XOR ECX,ECX

0046AC56 83E8 03 SUB EAX,3

0046AC59 72 0D JB SHORT ex1.0046AC68 跳

0046AC5B C1E0 08 SHL EAX,8

0046AC5E 8A06 MOV AL,BYTE PTR DS:[ESI]

0046AC60 46 INC ESI

0046AC61 83F0 FF XOR EAX,FFFFFFFF

0046AC64 74 74 JE SHORT ex1.0046ACDA

0046AC66 89C5 MOV EBP,EAX

0046AC68 01DB ADD EBX,EBX

0046AC6A 75 07 JNZ SHORT ex1.0046AC73 跳

0046AC6C 8B1E MOV EBX,DWORD PTR DS:[ESI]

0046AC6E 83EE FC SUB ESI,-4

0046AC71 11DB ADC EBX,EBX

0046AC73 11C9 ADC ECX,ECX

0046AC75 01DB ADD EBX,EBX

0046AC77 75 07 JNZ SHORT ex1.0046AC80 跳

0046AC79 8B1E MOV EBX,DWORD PTR DS:[ESI]

0046AC7B 83EE FC SUB ESI,-4

0046AC80 11C9 ADC ECX,ECX

0046AC82 75 20 JNZ SHORT ex1.0046ACA4 跳

0046AC84 41 INC ECX

0046AC85 01DB ADD EBX,EBX

0046AC87 75 07 JNZ SHORT ex1.0046AC90

0046AC89 8B1E MOV EBX,DWORD PTR DS:[ESI]

0046AC8B 83EE FC SUB ESI,-4

0046AC8E 11DB ADC EBX,EBX

0046AC90 11C9 ADC ECX,ECX

0046AC92 01DB ADD EBX,EBX

0046AC94 ^ 73 EF JNB SHORT ex1.0046AC85

0046AC96 75 09 JNZ SHORT ex1.0046ACA1

0046AC98 8B1E MOV EBX,DWORD PTR DS:[ESI]

0046AC9A 83EE FC SUB ESI,-4

0046AC9D 11DB ADC EBX,EBX

0046AC9F ^ 73 E4 JNB SHORT ex1.0046AC85

0046ACA1 83C1 02 ADD ECX,2

0046ACA4 81FD 00F3FFFF CMP EBP,-0D00

0046ACAA 83D1 01 ADC ECX,1

0046ACAD 8D142F LEA EDX,DWORD PTR DS:[EDI+EBP]

0046ACB0 83FD FC CMP EBP,-4

0046ACB3 76 0F JBE SHORT ex1.0046ACC4 这一句可以跳出这个循环。00457934 E8 8BBEFAFF CALL ex1.004037C4

00457939 8D40 00 LEA EAX,DWORD PTR DS:[EAX]

总结:

Upx壳直接Ctrl+F找Popad,向下一个jmp跳到入口,

命令行下断点bp GetProcAddress

F9运行,Ctrl+F9返回到程序,向下到Popad处的jmp跳到入口.

在入口处Dump程序.

UPX脱壳断点

bp LoadLibraryA

bp GetProcAddress

UPX加壳入口第一句是PUSHAD

出口关键字

POPAD

一般经过JMP跨段跳跃到入口处.

我们以后每手动脱一个壳就总结一次.

脱壳后发现程序不能运行,这时需要用Imprec修复引入函数表(Import T able)

在Oep处填000578F4,点IT自动搜索,然后点获输入信息,看到输入表全部有效,点修复抓取文件按钮,选择Dump的文件,修复它,正常运行,这里不用备份,Imprec自动帮你做了.见截图.

期待这是引你初学者入脱壳大门的第一步.

"手动脱壳入门第一篇"脱壳动画

脱壳教程3:手动脱壳入门第二篇

脱壳教程3:手动脱壳入门第二篇

【使用工具】Fi,Peid,Olly dbg

【脱壳平台】Win2K/XP

【软件名称】chap702

【软件简介】UPX V1.08加壳的一个Win98的记事本

【软件大小】15.9KB

【加壳方式】UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo

【保护方式】UPX普通壳

【脱壳声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:

脱壳内容

UPX脱壳第一篇总结内容如下:

UPX脱壳断点

bp LoadLibraryA 经过两个很关键的脱壳相关函数,很快到入口点,前面有Popad

bp GetProcAddress 这个优先下断点,可省略很多循环,我们在第一篇已看清UPX手动脱壳流程.

UPX加壳入口第一句是PUSHAD

出口关键字

POPAD

一般经过JMP跨段跳跃到入口处.

有了手动脱壳第一片的总结,脱UPX壳很容易.

好,我们看第二个Upx壳。

本地下载

首先必须的工具要准备好,

附件中壳为Fi测壳为Upx1.08,Peid这里测不出Upx的压缩版本。

手动脱壳建议大家用Olly dbg,工作平台Win2000,WinXp,Win9x不推荐。

用OD载入程序后。

Od提示程序加壳,选不继续分析。

0040E8C0 > 60 PUSHAD UPX壳的加壳入口第一句是PUSHAD

0040E8C1 BE 15B04000 MOV ESI,chap702.0040B015

0040E8C6 8DBE EB5FFFFF LEA EDI,DWORD PTR DS:[ESI+FFFF5FEB]

0040E8CC 57 PUSH EDI

0040E8CD 83CD FF OR EBP,FFFFFFFF

0040E8D0 EB 10 JMP SHORT chap702.0040E8E2

0040E8D2 90 NOP

0040E8D3 90 NOP

0040E8D4 90 NOP ...................................

我们这一次不单步跟踪,我们再命令行下断点

Bp GetProcAddress

入口前必经之函数.

见截图.

F9运行中断在

77E7564B > 55 PUSH EBP 断在这里,注意这里是系统领空; KERNEL32.77E60000 F2取消断点.Ctrl+F9返回. 77E7564C 8BEC MOV EBP,ESP

77E7564E 51 PUSH ECX

77E7564F 51 PUSH ECX

77E75650 53 PUSH EBX

77E75651 57 PUSH EDI

77E75652 8B7D 0C MOV EDI,DWORD PTR SS:[EBP+C]

77E75655 BB FFFF0000 MOV EBX,0FFFF

77E7565A 3BFB CMP EDI,EBX

77E756A8 C2 0800 RETN 8 到这里,F8

77E756AB - FF25 2013E677 JMP DWORD PTR DS:[<&NTDLL.LdrGetProcedur>;

ntdll.LdrGetProcedureAddress77E756B1 85FF TEST EDI,EDI

77E756B3 0F85 AD620000 JNZ KERNEL32.77E7B966

77E756B9 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

77E756BC 8B40 04 MOV EAX,DWORD PTR DS:[EAX+4]

77E756BF 0FB740 2E MOVZX EAX,WORD PTR DS:[EAX+2E]

77E756C3 EB 0A JMP SHORT KERNEL32.77E756CF

77E756C5 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

77E756C8 8B40 04 MOV EAX,DWORD PTR DS:[EAX+4]

77E756CB 0FB740 12 MOVZX EAX,WORD PTR DS:[EAX+12]

77E756CF 8D0C46 LEA ECX,DWORD PTR DS:[ESI+EAX*2]

0040E9FD 09C0 OR EAX,EAX 回到程序领空了. ; KERNEL32._lwrite

0040E9FF 74 07 JE SHORT chap702.0040EA08

0040EA01 8903 MOV DWORD PTR DS:[EBX],EAX

0040EA03 83C3 04 ADD EBX,4

0040EA06 ^ EB E1 JMP SHORT chap702.0040E9E9 这里想往回跳.

0040EA08 FF96 A8EC0000 CALL DWORD PTR DS:[ESI+ECA8] F4到这里.

0040EA0E 61 POPAD 关键字,入口就在附近.

0040EA0F - E9 B826FFFF JMP chap702.004010CC 跨段跳跃到入口.

004010CC 55 PUSH EBP 我们再这里用Od的Dump插件直接脱壳。

004010CD 8BEC MOV EBP,ESP

004010CF 83EC 44 SUB ESP,44

004010D2 56 PUSH ESI

004010D3 FF15 E4634000 CALL DWORD PTR DS:[4063E4] ; KERNEL32.GetCommandLineA 004010D9 8BF0 MOV ESI,EAX

004010DB 8A00 MOV AL,BYTE PTR DS:[EAX]

004010DD 3C 22 CMP AL,22

004010DF 75 1B JNZ SHORT chap702.004010FC

这个程序的输入表没有损坏,可以直接运行.

还有更快的方法.

UPX加壳入口第一句是PUSHAD

出口关键字

POPAD

一般经过JMP跨段跳跃到入口处.

用Od载入程序.

0040E8C0 > 60 PUSHAD UPX壳的加壳入口第一句是PUSHAD

0040E8C1 BE 15B04000 MOV ESI,chap702.0040B015

0040E8C6 8DBE EB5FFFFF LEA EDI,DWORD PTR DS:[ESI+FFFF5FEB]

0040E8CC 57 PUSH EDI

0040E8CD 83CD FF OR EBP,FFFFFFFF

0040E8D0 EB 10 JMP SHORT chap702.0040E8E2

0040E8D2 90 NOP

0040E8D3 90 NOP

0040E8D4 90 NOP

0040E8D5 90 NOP

0040E8D6 90 NOP ..............................................................

按Crtl+F向下找PoPad,

见截图.

0040EA0E 61 POPAD 关键字. F2下断点,F9运行到这里,清除断点.

0040EA0F - E9 B826FFFF JMP chap702.004010CC 入口点.

0040EA14 0000 ADD BYTE PTR DS:[EAX],AL

0040EA16 0000 ADD BYTE PTR DS:[EAX],AL

0040EA18 0000 ADD BYTE PTR DS:[EAX],AL

0040EA1A 0000 ADD BYTE PTR DS:[EAX],AL

0040EA1C 0000 ADD BYTE PTR DS:[EAX],AL ...................................................

004010CC 55 PUSH EBP 我们再这里用Od的Dump插件直接脱壳。

004010CD 8BEC MOV EBP,ESP

004010CF 83EC 44 SUB ESP,44

004010D2 56 PUSH ESI

004010D3 FF15 E4634000 CALL DWORD PTR DS:[4063E4] ; KERNEL32.GetCommandLineA

004010D9 8BF0 MOV ESI,EAX

004010DB 8A00 MOV AL,BYTE PTR DS:[EAX]

004010DD 3C 22 CMP AL,22

004010DF 75 1B JNZ SHORT chap702.004010FC

这个程序的输入表没有损坏,可以直接运行.第二种方法在软件加了几层壳时很有用,节省大量时间.前提是你必须找到脱壳规律.

"手动脱壳入门第二篇"脱壳动画!

脱壳教程4:手动脱壳入门第三篇

脱壳教程4:手动脱壳入门第三篇

【使用工具】Fi,Peid,Olly dbg

【脱壳平台】Win2K/XP

【软件名称】chap703.exe

【软件简介】Aspack 1.03加壳的一个Win98的记事本

【软件大小】21.2KB

【加壳方式】ASPack 1.08.03 -> Alexey Solodovnikov

【保护方式】Aspack 1.03

【脱壳声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:

脱壳内容

好,我们这次脱Aspack的壳看看它的特性。

本地下载

首先必须的工具要准备好,

附件中壳为Fi测壳为Aspack1.0803

手动脱壳建议大家用Olly dbg,工作平台Win2000,WinXp,Win9x不推荐。

手动脱壳时,用Olldbg载入程序,脱壳程序里面会有有好多循环。对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈。不要用Peid查入口,单步跟踪,提高手动找入口能力。

用OD载入程序后。

Od提示程序加壳,选不继续分析。

0040D000 > 60 PUSHAD 停在这里,我们先记住Aspack壳的加壳入口第一句是PUSHAD

和UPX几乎一样的,但第二句以后完全不同.

0040D001 E8 00000000 CALL chap703.0040D006 这里看清,直接Call下一句,F8走有些系统会跑飞,程序直接运行.我们一般遇到Call,很近的Call用F7走.较远的Call用F8步过,我们以后会体会更深.

0040D006 5D POP EBP Call这里.

0040D007 81ED 0A4A4400 SUB EBP,444A0A

0040D00D BB 044A4400 MOV EBX,444A04

0040D012 03DD ADD EBX,EBP

0040D014 2B9D B1504400 SUB EBX,DWORD PTR SS:[EBP+4450B1]

0040D01A 83BD AC504400 0>CMP DWORD PTR SS:[EBP+4450AC],0

0040D021 899D BB4E4400 MOV DWORD PTR SS:[EBP+444EBB],EBX

0040D027 0F85 17050000 JNZ chap703.0040D544

0040D02D 8D85 D1504400 LEA EAX,DWORD PTR SS:[EBP+4450D1]

0040D033 50 PUSH EAX

0040D034 FF95 94514400 CALL DWORD PTR SS:[EBP+445194]

到这里我们看到信息框中写有GetModuleHandleA

0040D034 FF95 94514400 CALL DWORD PTR SS:[EBP+445194] ; kernel32.GetModuleHandleA

0040D03A 8985 CD504400 MOV DWORD PTR SS:[EBP+4450CD],EAX

0040D040 8BF8 MOV EDI,EAX0040D042 8D9D DE504400 LEA EBX,DWORD PTR SS:[EBP+4450DE]

0040D048 53 PUSH EBX

0040D049 50 PUSH EAX

0040D04A FF95 90514400 CALL DWORD PTR SS:[EBP+445190]

到这里我们看到信息框中写有GetProcAddress

0040D04A FF95 90514400 CALL DWORD PTR SS:[EBP+445190] ; kernel32.GetProcAddress

0040D050 8985 B9504400 MOV DWORD PTR SS:[EBP+4450B9],EAX

0040D056 8D9D EB504400 LEA EBX,DWORD PTR SS:[EBP+4450EB]

0040D05C 53 PUSH EBX

0040D05D 57 PUSH EDI

0040D05E FF95 90514400 CALL DWORD PTR SS:[EBP+445190]

0040D064 8985 BD504400 MOV DWORD PTR SS:[EBP+4450BD],EAX

0040D06A 8B85 BB4E4400 MOV EAX,DWORD PTR SS:[EBP+444EBB]

0040D070 8985 AC504400 MOV DWORD PTR SS:[EBP+4450AC],EAX

0040D076 6A 04 PUSH 4

0040D078 68 00100000 PUSH 1000

0040D07D 68 9A040000 PUSH 49A

0040D082 6A 00 PUSH 0

0040D084 FF95 B9504400 CALL DWORD PTR SS:[EBP+4450B9]

到这里我们看到信息框中写有VirtualAlloc

0040D084 FF95 B9504400 CALL DWORD PTR SS:[EBP+4450B9] ; kernel32.VirtualAlloc

0040D08A 8985 B5504400 MOV DWORD PTR SS:[EBP+4450B5],EAX

0040D090 8D9D CF4A4400 LEA EBX,DWORD PTR SS:[EBP+444ACF] ...............................................................

0040D0B7 8B85 B5504400 MOV EAX,DWORD PTR SS:[EBP+4450B5]

0040D0BD 68 00800000 PUSH 8000

0040D0C2 6A 00 PUSH 0

0040D0C4 50 PUSH EAX

0040D0C5 FF95 BD504400 CALL DWORD PTR SS:[EBP+4450BD]

到这里我们看到信息框中写有VirtualFree

0040D0C5 FF95 BD504400 CALL DWORD PTR SS:[EBP+4450BD] ; kernel32.VirtualFree

0040D0CB 8D85 374C4400 LEA EAX,DWORD PTR SS:[EBP+444C37]

0040D0D1 50 PUSH EAX ; chap703.0040D233

0040D0D2 C3 RETN 返回

0040D233 8B9D DF4A4400 MOV EBX,DWORD PTR SS:[EBP+444ADF] 这里的跨段太小,也无Popad对应出口,肯定不是Oep

0040D239 0BDB OR EBX,EBX

0040D23B 74 0A JE SHORT chap703.0040D247 跳

0040D23D 8B03 MOV EAX,DWORD PTR DS:[EBX]

0040D23F 8785 E34A4400 XCHG DWORD PTR SS:[EBP+444AE3],EAX 0040D245 8903 MOV DWORD PTR DS:[EBX],EAX

0040D247 8DB5 F74A4400 LEA ESI,DWORD PTR SS:[EBP+444AF7] 0040D24D 833E 00 CMP DWORD PTR DS:[ESI],0

(完整版)常见几种脱壳方法

----------------<小A分>---------------- 一、概论 壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳(强壳)两种 "UPX" "ASPCAK" "TELOCK" "PELITE" "NSPACK(北斗)" ... "ARMADILLO" "ASPROTECT" "ACPROTECT" "EPE(王)" "SVKP" ... 顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。 当然加密壳的保护能力要强得多! -----------<小A分割线>------------- 二、工具的认识 OllyDBG ring3 shell层级别的动态编译工具、 PEid、 ImportREC、 LordPE、 softIce ring0级别调试工具 -------------<小A分割>------------------- 三、常见手动脱壳方法 预备知识 1.PUSHAD (入栈/压栈)代表程序的入口点, 2.POPAD (弹栈/出栈)代表程序的出口点,与PUSHAD想对应,一般找到这个OEP就在附近 3.OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP/FOEP),只要我们找到程序真正的OEP,就可以立刻脱壳。 ------------<小A分割线>-------------------- 方法一:单步跟踪法 1.用OD载入,点“不分析代码!” 2.单步向下跟踪F8,实现向下的跳。也就是说向上的跳不让其实现!(通过F4) 3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——>运行到所选) 4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现! 5.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP 6.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入 7.一般有很大的跳转(大跨段),比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN 的一般很快就会到程序的OEP。 近CALL F7 远CALL F8 Btw:在有些壳无法向下跟踪的时候,我们可以在附近找到没有实现的大跳转,右键-->“跟随”,然后F2下断,Shift+F9运行停在“跟随”的位置,再取消断点,

软件破解入门教程

先教大家一些基础知识,学习破解其实是要和程序打交道的,汇编是破解程序的必备知识,但有可能部分朋友都没有学习过汇编语言,所以我就在这里叫大家一些简单实用的破解语句吧! ---------------------------------------------------------------------------------------------------------------- 语句:cmp a,b //cmp是比较的意思!在这里假如a=1,b=2 那么就是a与b比较大小. mov a,b //mov是赋值语句,把b的值赋给a. je/jz //就是相等就到指定位置(也叫跳转). jne/jnz //不相等就到指定位置. jmp //无条件跳转. jl/jb //若小于就跳. ja/jg //若大于就跳. jge //若大于等于就跳. 这里以一款LRC傻瓜编辑器为例,讲解一下软件的初步破解过程。大家只要认真看我的操作一定会!假如还是不明白的话提出难点帮你解决,还不行的话直接找我!有时间给你补节课!呵呵! 目标:LRC傻瓜编辑器杀杀杀~~~~~~~~~ 简介:本软件可以让你听完一首MP3歌曲,便可编辑完成一首LRC歌词。并且本软件自身还带有MP3音乐播放和LRC歌词播放功能,没注册的软件只能使用15天。 工具/原料 我们破解或给软件脱壳最常用的软件就是OD全名叫Ollydbg,界面如图: 它是一个功能很强大的工具,左上角是cpu窗口,分别是地址,机器码,汇编代码,注释;注释添加方便,而且还能即时显示函数的调用结果,返回值. 右上角是寄存器窗口,但不仅仅反映寄存器的状况,还有好多东东;双击即可改变Eflag的值,对于寄存器,指令执行后发生改变的寄存器会用红色突出显示. cpu窗口下面还有一个小窗口,显示当前操作改变的寄存器状态. 左下角是内存窗口.可以ascii或者unicode两种方式显示内存信息. 右下角的是当前堆栈情况,还有注释啊. 步骤/方法 1. 我们要想破解一个软件就是修改它的代码,我们要想在这代码的海洋里找到我们破解关键的代码确实很棘 手,所以我们必须找到一定的线索,一便我们顺藤摸瓜的找到我们想要的东东,现在的关键问题就是什么

群联Phsion最详细的U盘量产教程

群联Phsion最新,最详细的U盘量产教程 注意:请耐心阅读! 【量产的好处】 1. 安全:处理后,U盘上的光盘所在区域完全不可写,分区、病毒无法破坏!(要是你处理U盘的过程中不慎将病毒引入,那也是超级顽固的!) 2. 兼容性好:由于各厂家主板在USB-HDD和USB-ZIP处理方式上的不同,常规方法制作的U盘启动盘,常常在这台电脑上可用,在另外一台电脑上又引导失败。而USB-CDROM模式不存在这个问题。 3. 彻底解决了常规U盘启动后硬盘盘符混乱的问题。 4. 和光盘相比,启动速度快。现在的电脑都支持USB 2.0模式启动,启动WINPE 到桌面不超过一分钟。 5. 可以满足某些人近似变态的DIY情结,当然……只能暂时缓解,不能根治,绝症! 6. 量产后,U盘只有在读取时才会亮灯,平时不亮。这算不上“好处”,但是我喜欢。 【量产的缺点】 1、不是所有U盘都可以,取决于U盘主控芯片厂家是否提供该功能的量产工具;相信以后会越来越多。 2、本文象征意义大于实际意义,主要是提供一种思路。 3、目前网上下载的启动光盘没有考虑到这种启动方式,启动后可能出现一些错误,虽然几率很小。 4、处理以后checkudisk就不能查看U盘信息(ID)了,而且很多启动盘制作软件不能识别U盘。 5、DOS下的USB驱动程序可能不支持处理后的U盘(但是你可以从U盘引导后使用),WIN PE没问题。

【工具下载】 1、ChipGenius v2.7 USB设备芯片型号检测工具: https://www.360docs.net/doc/d717213758.html,/viewthread.php?tid=55326 2、群联量产工具:https://www.360docs.net/doc/d717213758.html,/viewthread.php?tid=55483 3、量产专用ISO镜像:https://www.360docs.net/doc/d717213758.html,/viewthread.php?tid=55598 【量产图文教程】 一、用ChipGenius V2.7(目前最新版本)检测USB设备芯片型号:

新手入门学习——脱壳破解练习第一期

新手入门学习——脱壳破解练习第一期拿到一个软件,先看看是加的什么壳。用PEiD查得【Upack V0.37-V0.39 -> Dwing *】 接着拿出破解第一要物OD进行脱壳(注意选好点的版本,由于Upack壳做了变形,有些版本的OD打开时会出错,最好是用英文版的) OD载入…… 我使用简单一点的ESP定律。 00401018 > BE B0114000 MOV ESI,脱壳破解.004011B0 0040101D AD LODS DWORD PTR DS:[ESI] 0040101E 50 PUSH EAX 0040101F FF76 34 PUSH DWORD PTR DS:[ESI+34] 00401022 EB 7C JMP SHORT 脱壳破解.004010A0 F8前进到【0040101F】,在寄存器窗口ESP处点右键,在数据窗口跟随【0012FFC0】 如下图:

//数据窗口点右键,下硬件断点。shift+F9运行 0012FFC0 004011B8 脱壳破解.004011B8 0012FFC4 7C82F23B 返回到 kernel32.7C82F23B 0012FFC8 00000000 //来到OEP,通过观察可以发现,这是一个典型的VB入口。这里记得要删除硬件断点!004011B8 68 24184000 PUSH 脱壳破解.00401824 //OEP 004011BD E8 EEFFFFFF CALL 脱壳破解.004011B0 004011C2 0000 ADD BYTE PTR DS:[EAX],AL 004011C4 0000 ADD BYTE PTR DS:[EAX],AL 004011C6 0000 ADD BYTE PTR DS:[EAX],AL 004011C8 3000 XOR BYTE PTR DS:[EAX],AL 记录新入口地址【11B8】

加壳与脱壳应用及实现

加壳与脱壳的应用与实现

一、加壳 (2) 1.什么是壳 (2) 2.加壳原因 (2) 3.壳的加载过程 (3) 4.压缩引擎 (5) 5.常见的加壳工具 (6) a.常用压缩壳介绍 (6) b.加密保护壳介绍 (7) 二、脱壳 (10) 1.侦壳 (10) 2.脱壳 (13) a.查找程序的真正入口点(OEP) (13) b.抓取内存映像文件 (15) c.输入表重建 (15) 附:视频“加壳与脱壳(软件)”和“手动脱壳” (17)

加壳与脱壳 一、加壳 1.什么是壳 在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,就把这样的程序称为“壳”了。 图1.1 2.加壳原因 就把这样的程序称为“壳”了。 作者编好软件后,编译成exe可执行文件。 1)有一些版权信息需要保护起来,不想让别人随便改动,如作者

的姓名,即为了保护软件不被破解,通常都是采用加壳来进行保护。 2)需要把程序搞的小一点,从而方便使用。于是,需要用到一些软件,它们能将exe可执行文件压缩。 3)在黑客界给木马等软件加壳脱壳以躲避杀毒软件。实现上述功能,这些软件称为加壳软件。 3.壳的加载过程 1)获取壳自己所需要使用的API地址 如果用PE编辑工具查看加壳后的文件,会发现未加壳的文件和加壳后的文件的输入表不一样,加壳后的输入表一般所引入的DLL和API函数很少,甚至只有Kernel32.dll以及GetProcAddress这个API 函数。 壳实际上还需要其他的API函数来完成它的工作,为了隐藏这些API,它一般只在壳的代码中用显式链接方式动态加载这些API函数2)解密原程序的各个区块(Section)的数据 壳出于保护原程序代码和数据的目的,一般都会加密原程序文件的各个区块。在程序执行时外壳将会对这些区块数据解密,以让程序能正常运行。壳一般按区块加密的,那么在解密时也按区块解密,并且把解密的区块数据按照区块的定义放在合适的内存位置。 如果加壳时用到了压缩技术,那么在解密之前还有一道工序,当然是解压缩。这也是一些壳的特色之一,比如说原来的程序文件未加壳时1~2M大小,加壳后反而只有几百K。

U盘量产详细图文教程

U 盘量产详细图文教程(附工具下载)
文章导读:“U 盘量产”我想大家都有可能听说过,最近有很多网友在寻修问吧提出这个问题,笔 者最近也做了个量产的尝试,结果非常顺利地做好了量产,接下来我就把我做量产的经验分享给 大家。
“U 盘量产”我想大家都有可能听说过,最近有很多网友在寻修问吧提出这个问题,笔者最 近也做了个量产的尝试,结果非常顺利地做好了量产,接下来我就把我做量产的经验分享给大 家。 首先来了解一下量产软件的定义,量产软件英文 USB DISK PRODUCTION TOOL,简称是 PDT,意思是 U 盘生产工具。U 盘生产厂家不像我们玩家,一次就搞一两个 U 盘,他们生产都是 按批计算的,是用电脑连上 USB HUB,同时连上8-16个(甚至更多)U 盘,然后用 PDT 向众 多 U 盘写入相同数据,完成 U 盘生产的最后工序。所以 PDT 因此得名量产软件—即工厂大批 量生产 U 盘的专用软件。 实战: 需要用到的软件:ChipGenius,用于检测 U 盘芯片型号。 U 盘量产软件:基本上每一种芯片都有专门的量产工具软件,大家先用 ChipGenius 检测芯 片型号后作出选择。 ChipGenius v3.01下载地址:https://www.360docs.net/doc/d717213758.html,/software.aspx?id=1347 50种 U 盘量产工具大全 下载地址:https://www.360docs.net/doc/d717213758.html,/software.aspx?id=1369 首先启动 ChipGenius,然后把 U 盘插上,ChipGenius 就开始检测 U 盘芯片组。 可以得知芯片型号是联盛的 UT165。

VB加壳脱壳程序源码

VB加壳脱壳程序源码 1、窗体代码 Private Sub Check1_Click() Text2.SetFocus End Sub Private Sub Image2_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Image10.Visible = False End Sub Private Sub Image3_Click() If Text1.Text = "" Then MsgBox "Please Select A File First!", vbInformation Else List1.Visible = True List2.Visible = False Frame3.Visible = False List1.Text = " UPX 1.24 " Text2.SetFocus End If End Sub Private Sub Command2_Click() Dim path As String, back_path As String, file_t As String 'Dim's strings Text2.SetFocus CommonDialog1.ShowOpen Text1.Text = CommonDialog1.FileName path = Text1.Text back_path = "Backupfile.exe" If Check1.Value = 1 Then i = FreeFile Open path For Binary As #i file_t = Space(LOF(i)) Get #i, , file_t Close #i Open back_path For Binary As #i Put #i, , file_t Close #i MsgBox " A Backup of the file has been created in the same location as the original file", vbInformation End If End Sub Private Sub Image3_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Image8.Visible = True End Sub Private Sub Image3_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Image8.Visible = False

一个简单的.NET程序的脱壳以及破解

一个简单的.NET程序的脱壳以及破解 前几天有朋友问.NET程序的破解,又鉴于论坛里关于.NET脱壳和破解的文章也不多,于是抽空写一个。由于本人也很少接触.NET的程序,因此文章没什么技术含量,用到的技术也是在网上很早就公开的东西。有什么错误还请多多指教。 本文的目标文件是一个非常简单的CrackMe. 本CrackMe的任务有4个: 1.脱壳 2.去NAG 3.去灰色按钮 4.破解 OK,一个一个来完成任务吧。 一、脱壳 查壳发现为: 按照经验,此程序应该是用.NET Reactor加的壳 下面来脱壳吧 根据前人经验,此壳其实只是在简单的混淆,在运行的同时,在内存中会释放原程序的镜像根据这一特点,我们下断点:BP WriteProcessMemory,然后F9运行,中断下来 中断下来看堆栈

写入的地址为:17B1050 在数据窗口查看,然后拉到最顶端 可以发现,PE头在017B0000 于是可以dump此地址的镜像。 当然,此时dump下来的程序不行,因为还有好多内容没写入。于是,不断SHIFT+F9,直到程序运行。 这时候就可以dump了. 用LordPE,区域转存017B0000这个区段,保存为dumped.exe就OK了.

不过,此时dump后,程序是无法运行的。 我们还得再用CFF修正几个量 (1).选Nt Headers,再File Header,然后选Characteristics,再点旁边的Click here,在出现的对话框中,去掉“File is a DLL”就OK了。 (2)修正MetaData RV A和MetaData Size的值

怎样使用脱壳软件

第二节脱壳 一切从“壳”开始 吴朝相1999.2.23 (搜新网https://www.360docs.net/doc/d717213758.html,) 我写这篇东西的主要目的是让初到本站的新手们能对“壳”有个大概的认识,知道我每天说了些什么。限于本人的知识,如果有ERROR 之处,还请多原谅。如果你觉得还可以,也欢迎转贴,但请保留文章的完整性和作者的资料。当然如果你想把它发表,硬塞些稿费给俺花花,我也不会拒绝的。;) 作为一个以“壳”为主的站台,如果连访者连什么是“壳”都不清楚的话,那我也太失败了。很早以前就想写编完全关于“壳”的文章,但苦于时间和文字水平的关系,都没提笔。本着对站台负责的态度,现在经过一天的努力,“打”出这编尝试由壳的历史一直谈到最新发展的本章来。 首先我想大家应该先明白“壳”的概念。在自然界中,我想大家对壳这东西应该都不会陌生了,植物用它来保护种子,动物用它来保护身体等等。同样,在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。就像计算机病毒和自然界的病毒一样,其实都是命名上的方法罢了。 最早提出“壳”这个概念的,据我所知,应该是当年推出脱壳软件RCOPY 3 的作者熊焰先生。在几年前的DOS 时代,“壳”一般都是指磁盘加密软件的段加密程序,可能是那时侯的加密软件还刚起步不久吧,所以大多数的加密软件(加壳软件)所生成的“成品”在“壳”和需要加密的程序之间总有一条比较明显的“分界线”。有经验的人可以在跟踪软件的运行以后找出这条分界线来,至于这样有什么用这个问题,就不用我多说了。但毕竟在当时,甚至现在这样的人也不是很多,所以当RCOPY3 这个可以很容易就找出“分界线”,并可以方便的去掉“壳”的软件推出以后,立即就受到了很多人的注意。老实说,这个我当年在《电脑》杂志看到广告,在广州电脑城看到标着999元的软件,在当时来说,的确是有很多全新的构思,单内存生成EXE 可执行文件这项,就应该是世界首创了。但它的思路在程序的表现上我认为还有很多可以改进的地方(虽然后来出现了可以加强其功力的RO97),这个想法也在后来和作者的面谈中得到了证实。在这以后,同类型的软件想雨后春笋一般冒出来,记得住名字的就有:UNKEY、MSCOPY、UNALL .... 等等,但很多的软件都把磁盘解密当成了主攻方向,忽略了其它方面,当然这也为以后的“密界克星”“解密机器”等软件打下了基础,这另外的分支就不多祥谈了,相信机龄大一点的朋友都应该看过当时的广告了。 解密(脱壳)技术的进步促进、推动了当时的加密(加壳)技术的发展。LOCK95和BITLOK 等所谓的“壳中带籽”加密程序纷纷出笼,真是各出奇谋,把小小的软盘也折腾的够辛苦的了。正在国内的加壳软件和脱壳软件较量得正火红的时候,国外的“壳”类软件早已经发展到像LZEXE 之类的压缩壳了。这类软件说穿了其实就是一个标准的加壳软件,它把EXE 文件压缩了以后,再在文件上加上一层在软件被执行的时候自动把文件解压缩的“壳”来达到压缩EXE 文件的目的。接着,这类软件也越来越多,PKEXE、AINEXE、UCEXE 和后来被很多人认识的WWPACK 都属于这类软件,但奇怪的是,当时我看不到一个国产的同类软件。 过了一段时间,可能是国外淘汰了磁盘加密转向使用软件序列号的加密方法吧,保护EXE 文件不被动态跟踪和静态反编译就显得非常重要了。所以专门实现这样功能的加壳程序便诞生了。MESS 、

量产教程(U盘相关)

重要说明:在操作前一定要详细阅读本文,否则可能导致制作失败,同时U盘报废(吓唬你的,本文有解决办法,但是仍然具有危险性,你需要为自己的操作及后果负责) 好处: 1. 安全:处理后,U盘上的光盘所在区域完全不可写,分区、病毒无法破坏!(要是你处理U盘的过程中不慎将病毒引入,那也是超级顽固的!) 2. 兼容性好:由于各厂家主板在USB-HDD和USB-ZIP处理方式上的不同,常规方法制作的U盘启动盘,常常在这台电脑上可用,在另外一台电脑上又引导失败。而USB-CDROM模式不存在这个问题。当然,新鲜事物还需要验证和完善。 3. 彻底解决了常规U盘启动后硬盘盘符混乱的问题。 4. 和光盘相比,启动速度快。现在的电脑都支持USB 2.0模式启动,启动WINPE到桌面不超过一分钟。 5. 可以满足某些人近似变态的DIY情结,当然……只能暂时缓解,不能根治,绝症! 6. 量产后,U盘只有在读取时才会亮灯,平时不亮。这算不上“好处”,但是我喜欢。 缺点: 1. 不是所有U盘都可以,取决于U盘主控芯片厂家是否提供该功能的量产工具。相信以后会越来越多。Kingston U盘保有量不是很多,所以本文象征意义大于实际意义,主要是提供一种思路, 2. 目前网上下载的启动光盘没有考虑到这种启动方式,启动后可能出现一些错误,虽然几率很小。 3. 处理以后checkudisk就不能查看U盘信息(ID)了,而且很多启动盘制作软件不能识别U盘。 4. DOS下的USB驱动程序可能不支持处理后的U盘(但是你可以从U盘引导后使用),WIN PE没问题。 预备知识 我买的U盘是金士顿DTI 2G(绿色,Vid_13fe&Pid_1d00),以下方法只能保证在这种型号U盘上适用,其他型号的U盘需要下载专用软件。Kinston U盘使用的主控芯片相当混乱,主要有擎泰SK6201,SK6281,还有用Toshiba,群联Phison,假货就更乱了。我的U盘用的是群联的主控芯片。 量产工具:U盘生产出来以后,还需要使用U盘控制芯片厂家提供的批量生产工具,(简称量产工具。为什么不叫批产工具#!@%…#!~)刷入底层资料(固件Firmware),格式化,关闭坏的区块,才得到可以使用的U盘。所以量产工具是维修U盘的终极武器,只要不是硬件故障,用量产工具几乎可以100%修复。把U盘模拟成USB-CDROM,用常规方法是不可能做到的,因为要修改底层资料(固件),量产工具必不可少。实际上,如果量产工具不提供这项功能,我们就不可能做到。 如果你的U盘是其他型号,请下载专用量产工具。先用checkudisk查看U盘ID,类似于Vid_13fe&Pid_1d00,再到网址https://www.360docs.net/doc/d717213758.html,/usb.ids查找对应的主控芯片厂家、型号(假货可能不准),然后下载专用量产工具。如果该量产工具不支持USB-CDROM,你只能期待新版本。 除了量产工具,你还需要准备一个可启动的光盘ISO或BIN文件。大小不可超过U盘总容量(废话)。还有,量产成功后,你可以使用的有效容量是扣除光盘以

壳的介绍以及是常用脱壳方法

一、概论 壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳两种 UPX ASPCAK TELOCK PELITE NSPACK ... ARMADILLO ASPROTECT ACPROTECT EPE SVKP ... 顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。当然加密壳的保护能力要强得多! 二、常见脱壳方法 预备知识 1.PUSHAD (压栈)代表程序的入口点, 2.POPAD (出栈)代表程序的出口点,与PUSHAD想对应,一般找到这个OEP就在附近 3.OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP/FOEP),只要我们找到程序真正的OEP,就可以立刻脱壳。 方法一:单步跟踪法 1.用OD载入,点“不分析代码!” 2.单步向下跟踪F8,实现向下的跳。也就是说向上的跳不让其实现!(通过F4) 3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——>运行到所选) 4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现! 5.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP 6.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入 7.一般有很大的跳转(大跨段),比如jmp XXXXXX 或者JE XXXXXX 或者有RETN的一般很快就会到程序的OEP。 在有些壳无法向下跟踪的时候,我们可以在附近找到没有实现的大跳转,右键-->“跟随”,然后F2下断,Shift+F9运行停在“跟随”的位置,再取消断点,继续F8单步跟踪。一般情况下可以轻松到达OEP! 方法二:ESP定律法 ESP定理脱壳(ESP在OD的寄存器中,我们只要在命令行下ESP的硬件访问断点,就会一下来到程序的OEP了!) 1.开始就点F8,注意观察OD右上角的寄存器中ESP有没突现(变成红色)。(这只是一般情况下,更确切的说我们选择的ESP值是关键句之后的第一个ESP值) 2.在命令行下:dd XXXXXXXX(指在当前代码中的ESP地址,或者是hr XXXXXXXX),按回车! 3.选中下断的地址,断点--->硬件访--->WORD断点。 4.按一下F9运行程序,直接来到了跳转处,按下F8,到达程序OEP。 方法三:内存镜像法

软件脱壳破解精典实例教程

软件脱壳、破解精典实例教程 我要破解的软件:网络填表终结者破解需要的软件(点击下载): 侦壳language.exe 脱壳AspackDie.exe 反编译W32Dasm黄金中文版 16进制编辑器UltraEdit.rar 在破解之前先复习一下基础知识: 一.破解的等级 初级,修改程序,用ultraedit修改exe文件,称暴力破解,简称爆破 中级,追出软件的注册码 高级,写出注册机 二.用w32dasm破解的一般步骤: 1.看软件的说明书,软件注册与不注册在功能上有什么区别,如何注册 2.运行此软件,试着输入你的姓名和任意注册码去注册,有什麽错误提示信息,将错误提示信息记下来 3.侦测有无加壳(第一课).若加壳,脱壳(第二课) 4.pw32dasmgold反汇编 5.串式参考中找到错误提示信息或可能是正确的提示信息双击鼠标左键 6.pw32dasmgold主窗口中分析相应汇编,找出关键跳转和关键call 7.绿色光条停在关键跳转,在pw32dasmgold主窗口底部找到关键跳转的偏移地址(实际修改地址) 8.用ultraedit找到偏移地址(实际修改地址)修改机器码,保存 壳的概念:版权信息需要保护起来,不想让别人随便改动,exe可执行文件压缩,最常见的加壳软件ASPACK ,UPX,PEcompact 脱壳:拿到一个软件,侦测它的壳,然后我们要把它的壳脱去,还原它的本来面目.若它没有加壳,就省事不用脱壳了.脱壳软件unaspack,caspr,upx,unpecompact,procdump 实际修改地址(偏移地址)和行地址(虚拟地址)pw32dasmgold反汇编出来的代码由三列组成 第一列行地址(虚拟地址) 第二列机器码(最终修改时用ultraedit修改)

万能量产工具教程.

系统安装重装维护再也不麻烦。感觉简直是超爽。 有了PE直播平台以后在网吧,企事业单位,破机,盗取资料简直不敢想像。 默认密码见附件 量产必读 何为“量产”:顾名思义即大批量生产。因为现在的电脑USB接口较多,而各种U盘的参数均可以通过软件更改,加之一些共用的数据有时也要统一写入到U盘,于是各闪盘芯片厂家均自主开发了设置写入软件,能够利用电脑上的USB口对多个U盘进行写入操作,因此称为“量产”。这无疑给一些单位小批量生产特殊格式的U盘提供了方便,而广大的爱好者也用来定制自己的U盘,当然爱好者的“产量”是很低的。究其过程,有点象写主板Bios,称为“烧录”更适当一些,主板Bios写坏了不能开机,U盘写坏了不要紧,机子不会“死”,可以再写,因此大家都想“量产”一把。 笔者分析,U盘量产变得热门还有几个原因。一者就是操作系统软件并没有提供对U盘进行分区的功能,随着U盘容量的增加,分区也应该是理所当然的,我想未来的操作系统可能会加这个功能;二者就是硬件支持上了台阶,首先是新的主板对USB设备提供了Bios级的支持,使主板对U盘的识别更好,速度更快。再一个就是U盘越做越小巧,容量却越做越大,速度越做越快;三者就是U盘启动技术变得成熟,象Windows嵌入式技术(即WindowsPE),新的一些DOS维护工具,如Grub引导技术等。U 盘如此小巧、又能自启动机器,在电脑维护上具有无可比拟的优势,特别是WindowsPE技术,使得从U盘启动的系统可以进行日常的应用,这是一个多么大的变革,再仔细想一下这种影响有多大? 笔者要在这里作个大胆预测,以后笔记本本可能会慢慢消亡,不远的将来,台式机到处都有,每个人怀揣几个大容量U盘,插入-->开机-->按F11-->选从俺的U盘启动-->进俺自己的U盘PE系统?看电影玩游戏上网破解盗资料……真不敢想像,系统安全性可能要重新评估……听说现在有的人在网吧上网从来就不用花钱的了,他根本不从你的系统启动,你能够计费吗?(我建议老板用泥巴将USB接口塞了,这是终极解决方案!!)这里不妨再作一个预测,如果U盘速度能够更快、容量能够更大的话,台式电脑硬盘都会消失,谁会把自己的资料放到人人都能用U盘启动的电脑上?因此干脆不装了,让用户将所有东西都用U盘随身携带吧! 当然,前景是很诱人的,不过因为生产标准未统一,导致U盘内部格式不一,因此各个厂家的量产工具都不一样,就是同一个厂家不同型号的也不一样,所以此文在量产工具的具体设置上是无通用性的,希望读者注意。这也是操作系统中没有对U盘进行分区的功能的原因。 针对回帖某些人:不知道的不要乱说,量产是看主控芯片,不是说我有某牌子的量产工具就可以量产某牌子的U盘,不然说出去叫人笑话。 这个工具,现在包括了市面上U盘主控芯片的量产软件在90%以上,能不能量产就看你的造化了。

朱航宇-20112878-应用程序加壳与脱壳

应用程序加壳与脱壳 计算机与信息学院 信息安全专业11级1班 朱航宇 20112878 (1)实验目的 通过对灰鸽子自带的加壳程序,实现对改程序的加壳操作,并对加壳前后作出相应比较。从而了解什么是加壳,什么是脱壳,以及加壳的原理、作用。 (2) 实验内容 使用灰鸽子黑防专版生成加壳和未加壳程序;使用PEID测试加壳程序;使用UPXUnpack汉化版(利用OD脱壳)对已加壳的程序进行脱壳操作。 (3) 实验步骤 1. 加壳 1. 打开灰鸽子黑防专版。 2. 配置服务程序,生成不加壳程序。 点击工具栏上的“配置服务程序”按钮,自动上线设置中,ip设置为127.0.0.1;选择“高级选项”,选择 不加壳,设置保存路径保存路径当前文件夹,保存文件名称为 Server.exe ,然后点击 生成服务器。此时在系统桌面上将生成该程序。这个程 序即为没有加壳的灰鸽子程序。 3.配置服务程序,生成加壳程序。 在主界面点击配置服务程序,打开服务器配置对话框设置好IP地址为127.0.0.1,然后点击“高级选项”选择:使用UPX加壳,保存路径当前文件夹,保存文件名设置为Server_jiake.exe ,并点击生成服务器按钮。生成的程序如图1所示。

图1.灰鸽子生成加壳和不加壳的server 4.打开PEID程序;将这两个文件分别拖到PEiD程序界面。分别查看检测结果 ,以下两个图分别是未加壳和加了壳的检测结果,如图2,图3,可以看出,未加壳程序所检测出来的是文件开发工具,而加了壳的文件检测出来的是加壳信息。

图2.未加壳的检测 图3.加壳的检测

2. 脱壳 1、打开UPXUnpack汉化版程序,主界面如下;直接拖动 Server_jiake.exe文件到程序内,显示如图4所示,生成脱壳文件Server_tuoke。 图4.加壳server脱壳 2. 再次打开PEID程序,检测Server_tuoke.exe文件的加壳信息,如图5 所示。 可以看到它的信息和未加壳server是相同的。

脱壳基础知识入门

脱壳基础知识入门 现在加解密发展己形成2个分支了,一个就是传统的算法,另一个就是加密壳。越来越多的软件采用了密码学相关算法,现在要做出一个软件注册机己不象前几年那么容易,这就要求解密者必须要有一定的数学功底和密码学知识,而这些在短时间内是不容易掌握的。除了密码学的应用,越来越多的软件加壳了,因此要求解密者必须掌握一些脱壳技术,这就使得壳成了解密必须迈过的一个门槛。壳发展到今天,强度越来越高了,将许多人挡在门外,使得大家望壳兴叹。另外,论坛现在两极分化比较严重,高手讨论的脱壳技术新手看不懂,很多人想学脱壳,但看到壳这么难,只好放弃了,造成新手与高手间一个断档,为了鼓励更多新人加入脱壳的行列,很有必要将壳有关知识总结一下。https://www.360docs.net/doc/d717213758.html,主页提供的教学确实有点过时了,己到非更新不可了。相对于密码学算法,脱壳并不难,只要肯花时间,短期内还是比较容易取得成绩的。 第一课PE格式 要想学脱壳,第一步就得掌握PE格式,PE是Portable Executable File Format(可移植的执行体)简写,它是目前Windows平台上的主流可执行文件格式。 Microsoft Visual C++提供的WINNT.H里有PE数据结构的完整定义。 推荐文档: ah007翻译的“PE文件格式”1.9版 qduwg翻译的PE文件格式 Iczelion's的PE文件格式 PE结构各字段偏移参考 学习PE格式的方法是自己先准备一个十六进制工具,如HexWorkshop,WinHex,用这些工具打开一个EXE文件对照着学。强烈推荐你用Stud_PE v.2.2.0.5这款工具辅助学习PE格式。PE格式学习的重点是在输入表(Import Table)这块。Stud_PE工具界面: PE结构图: 第二课SEH技术 结构化异常处理(Structured Exception Handling,SEH)是Windows操作系统处理程序错误或异常的技术。SEH是Windows操作系统的一种系统机制,与特定的程序设计语言无关。 外壳程序里大量地使用了SEH,如果不了解SEH,将会使你跟踪十分困难。 SEH in ASM研究(一)by hume SEH in ASM研究(二)by hume Structured Exception Handling 加密与解密二版菜鸟学习笔记(2)-SEH结构化异常处理by ytcswb 由于Ollydbg对SEH处理异常灵活,因此脱壳用Ollydbg会大大提高效率。 附CONTEXT结构环境: 代码: typedef struct_CONTEXT{ /*000*/DWORD ContextFlags; /*004*/DWORD Dr0; /*008*/DWORD Dr1; /*00C*/DWORD Dr2; /*010*/DWORD Dr3; /*014*/DWORD Dr6; /*018*/DWORD Dr7; /*01C*/FLOATING_SAVE_AREA FloatSave; /*08C*/DWORD SegGs; /*090*/DWORD SegFs; /*094*/DWORD SegEs;

慧荣量产工具使用方法

DYNA-SM32X USB2.0 flash media controller Version:3.0

Introduce: The program is for SMI SM32X’s Mass Production. This tool can test up to 16 devices at once. Platform: There are two drivers for different platform: ●win98_factory_driver: ?Windows98 ●winXP_factory_driver: ?Windows 2000 ?Windows XP 环境设置: ●设置功能::(see the Fig. 1)

Fig. 1 Setting Function of SM32X Production Tool It will allow the user to change CID information. ?Password Entering:(see the Fig. 2) Fig. 2 Password entering for 「Setting」Function. The system default password is「320」. The wrong password led user to edit the「Begin Serial」and「End Serial」fields only. ?Loading the INI File:(see the Fig. 3) 1 2 Fig. 3 Loading the INI file for「Setting Function」. Loading an 「ini」file which saved in the past or the system default .The system default ini file is located in the same directory with application executable file. If no setting executed, the setting will be according to the「default.ini」file.

PE文件中脱壳技术的研究

第27卷第9期 计算机应用与软件 Vol 127No .92010年9月 Computer App licati ons and Soft w are Sep.2010 PE 文件中脱壳技术的研究 李 露 刘秋菊 徐汀荣 (苏州大学计算机科学与技术学院 江苏苏州215006) 收稿日期:2009-01-07。李露,硕士生,主研领域:网络安全,信息技术。 摘 要 对PE (Portable Executable )文件进行加壳是保护软件的有效手段,但恶意程序也会通过加壳来保护自己。作为一名病毒 分析师或软件安全分析员,只有先将其脱壳,才能进行彻底的分析。以W indows 记事本程序为实例,首先分析了PE 文件结构及其加壳原理,其次阐述了脱壳的一般步骤,然后从压缩壳和加密壳的角度,重点探讨了脱壳技术的原理和方法。最后对伪装壳和多重壳及程序自校验进行了探讨和分析。 关键词 PE 加壳 脱壳 伪装壳 多重壳 自校验 O N UNPACK I NG TECHNOLO GY FO R PE F I L ES L i Lu L iu Q iuju Xu Tingr ong (School of Co m puter Science and Technology,Soocho w U niversity,Suzhou 215006,J iangsu,China ) Abstract Packing Portable Executable (PE )files is an effective mean t o p r otect s oft w are,but mal w are can als o use packing t o p r otect the m selves .A s a virus analyst or a s oft w are security researcher,you must unpack the mal w are first,then can you analysis the m in detail .Taking the notepad p r ogra m in M icr os oftW indows as an in this paper we first analyzed the PE file structure and the p rinci p le of packing,and then expounded the general step s of unpacking .After that,in ter m s of the comp ressi on shell and encryp ti on shell,we f ocused on the p rinci p les and methods of unpacking technol ogy .Finally,we discussed and analyzed the ca mouflage shell,multi 2shell and self 2chec 2king . Keywords PE Packing Unpacking Ca mouflage shell Multi 2shell Self 2checking 0 引 言 PE 文件格式是W I N 32环境自带的跨平台可执行文件格 式,常见的EXE 、DLL 、OCX 、SYS 、COM 等文件均是PE 格式。使用该格式,在非I ntel 芯片的CP U 上,W indows 一样能识别和使用。 对PE 文件加壳,能较好地保护原程序。但病毒和木马也会利用加壳技术来保护自己,因为加壳后程序执行结果不变,但代码发生了变化,从而使杀毒软件无法查杀。作为一名病毒分析师或者软件安全研究员,如果不懂得脱壳技术,将很难对这些恶意程序进行分析。据瑞星公司截获的病毒样本统计,90%以上的病毒文件都经过加壳处理,可见掌握脱壳技术十分重要。现有文章大都进行加壳技术的探讨[1-3],本文则着重研究脱壳技术。 1 壳的介绍 壳是一段附加在原程序上的代码,它先于真正的程序运行并拿到控制权,在完成程序保护任务后(检测程序是否被修改,是否被跟踪等),再将控制权转交给真正的程序,其运行过程与病毒有些相似。在形式上又与W I N RAR 类的压缩软件类似,运行前都需要将原程序解压。但壳对程序的解压是在内存中进行,对用户来说完全透明,用户感觉不到壳的存在。 壳分为压缩壳和加密壳。压缩壳只是为了减少程序体积而 对资源进行压缩,便于传输,具有一定的保护作用。常见的压缩壳有UPX 、ASPCAK 、TE LOCK 、PE L I TE 、NSP ACK 等。加密壳是使用各种手段对程序资源进行保护,防止其被反汇编或跟踪,文件加壳后是否变小不是其主要目标。常见的加密壳有AR MA 2D I L LO 、ASPROTECT 、ACPROTECT 、EPE 、S VKP 等。目前一些壳已兼具有两种功能,即能压缩资源,又能加密资源。 2 PE 结构框架 PE 文件使用一个平面地址空间,所有代码和数据都被合并 成一个很大的结构。文件内容由属性相同的区块组成,各区块按页边界对齐,大小没有限制。每个区块都有不同的名字,用来表示区块的功能。图1是W indows98下记事本Notepad .exe 程序的PE 结构图。从图中可以看出PE 文件由几个连续的区块组成。先后由DOS 头部、PE 头部、区段表以及各个区段组成。其中.text 是代码段,.data 是已初始化的数据段,.idata 是输入表段,.rsrc 是资源段,.rel oc 是基址重定位表段 。 图1 W indows98记事本PE 结构图

相关文档
最新文档