fi的使用.doc_第1页
fi的使用.doc_第2页
fi的使用.doc_第3页
fi的使用.doc_第4页
fi的使用.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

最常见的加壳软件有3个:ASPACK 、UPX、PEcompact。毕竟它们是主流,据统计,用它们加壳的软件约占市面所有软件的90%!其他不常用的加壳软件有ASPROTECT、PETITE 、NEOLITE、TELOCK等,因为使用较少,本文不作介绍。软件最常见的编程语言是Delphi,Visual Basic(简称VB),Visual C+(简称VC)。了解些编程的知识,会让破解更加轻车熟路。好了,让我们来进行破解的第一步侦测出软件的“壳”和软件所用的编程语言。具备这种“慧眼”的软件主要有以下4个:fileinfo、language2000、Peid、pe-scan。下面详细介绍一下它们的使用方法,希望大家能够熟练掌握,并利用它们拨开壳的层层迷雾,揭开壳的神秘面纱。1.侦测“壳”的软件fileinfo(/fi25.zip),简称fi,侦壳能力极强。它有两种使用方法,采用其中一种即可。届时,壳的信息为绿色字,显示在左上角。第一种使用方法:把待侦测“壳”的软件(如xx.exe)和fi.exe位于同一目录下,执行Windows开始菜单的“运行”,键入“fi aa”即可。第二种:让待侦测壳的软件(如xx.exe)和fi.exe位于同一目录下,将xx的图标拖到fi的图标上。最常见的加壳软件有3个:ASPACK 、UPX、PEcompact。毕竟它们是主流,据统计,用它们加壳的软件约占市面所有软件的90%!其他不常用的加壳软件有ASPROTECT、PETITE 、NEOLITE、TELOCK等,因为使用较少,本文不作介绍。软件最常见的编程语言是Delphi,Visual Basic(简称VB),Visual C+(简称VC)。了解些编程的知识,会让破解更加轻车熟路。好了,让我们来进行破解的第一步侦测出软件的“壳”和软件所用的编程语言。具备这种“慧眼”的软件主要有以下4个:fileinfo、language2000、Peid、pe-scan。下面详细介绍一下它们的使用方法,希望大家能够熟练掌握,并利用它们拨开壳的层层迷雾,揭开壳的神秘面纱。1.侦测“壳”的软件fileinfo(/fi25.zip),简称fi,侦壳能力极强。它有两种使用方法,采用其中一种即可。届时,壳的信息为绿色字,显示在左上角。第一种使用方法:把待侦测“壳”的软件(如xx.exe)和fi.exe位于同一目录下,执行Windows开始菜单的“运行”,键入“fi aa”即可。第二种:让待侦测壳的软件(如xx.exe)和fi.exe位于同一目录下,将xx的图标拖到fi的图标上。结果,如图2所示,软件crackme7.exe是用UPX v0.94软件加的“壳”,其中0.94为UPX的版本号。2.同时侦测“壳”和编写语言的软件language2000(两个功能合为一体,太酷了)。笔者特别推荐使用language2000中文版,它完全是傻瓜式软件,上手很容易,运行后选取待侦测“壳”的软件即可,图3为运行界面。由图3所示,软件cr-xxzs.exe是用Visual Basic6.0编写的,并由UPX软件加的“壳”。3.侦壳新秀PEid中文版,具有华丽的图形界面。外壳整合(添加到鼠标右键)功能令使用更加方便,支持拖放操作。配置时,务请将“扩展到鼠标右键”打上对号。其使用方法是,鼠标点住XX.exe,按鼠标右键,选使用PEid扫描即可;“壳”的信息就显示在底部。如图4所示,软件W32Dasm.exe是用ASPack 2.11加“壳”,2.11为ASPack的版本号4.侦壳新霸主pe-scan增添了自动去“壳”功能,开拓了侦“壳”软件新的发展方向,从而奠定了其新霸主地位。如图5,运行后把左下角的shell打上对号就整合到了右键菜单。如图5所示,软件SmallLocker.exe是用telock 0.60加“壳”,0.60为telock软件的版本号。用工具软件为软件脱“壳”根据前面的内容侦测了一个软件的“壳”后,接下来我们就需要把它的“壳”脱去了,以便还原软件的本来面目。注意:若侦测出它根本没加“壳”,可省掉这步。不过,现在没加“壳”的软件已经很少了。根据“壳”的流行程度,常用的脱“壳”软件主要有3个:AspackDie、UPX、unpecompact,分别针对前面提到的3个加壳软件。下面介绍它们的使用方法:1. AspackDie能脱ASPack的“壳”,是傻瓜式软件, 使用方法类似language2000,运行后选取待脱壳的软件即可轻松完成。2.UPX脱UPX“壳”,UPX自身具备加壳、脱壳功能。其方法为:让待脱“壳”的软件(如xx.exe)和upx.exe位于同一目录下,执行Windows开始菜单的“运行”,键入“upx -d xx.exe”即可。3.unpecompact 脱的是Pecompact的“壳”。傻瓜式软件,使用方法类似AspackDie,运行后选取待脱壳的软件即可。破解基础知识和16进制编辑器1.机器码,又称机械码。当你用16进制编辑器打开、编辑EXE等可执行文件时,你会看到许许多多的由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F组成的数码,这些数码就是机器码。修改程序时必须通过修改机器码来修改EXE等可执行文件。2. 16进制编辑器。16进制编辑器是编辑、修改EXE等可执行文件的软件。常用的有UltraEdit、WinHex等。由于这两款软件非常有名,网上有很多介绍它们使用的文章,限于篇幅,不再赘述。3. 破解时常用的汇编指令如下,汇编较弱者可先强行背住,以后就可慢慢理解了。cmp a,b /比较a与bmov a,b /把b的值送给a,使abret /返回主程序nop /无作用,英文no operation的简写,意思是do nothing(机器码90) (解释:ultraedit打开编辑exe文件时看到90,等同于汇编语句nop)call /调用子程序,子程序以ret结尾je 或jz /若相等则跳(机器码74 或0F84)jne或jnz /若不相等则跳(机器码75或0F85)jmp /无条件跳(机器码EB)jb /若小于则跳ja /若大于则跳jg /若大于则跳jge /若大于等于则跳jl /若小于则跳jle /若小于等于则跳pop xx /xx出栈push xx /xx压栈更为详细的指令请查阅汇编书籍。4.破解常见修改,参看表1。种不同情况的不同修改方法为了破解软件的注册和功能限制,归根结底其方法就是在两种不同情况下对程序所进行的修改,具体总结如下。1)修改为jmp(其示意图见图6)je(jne,jz,jnz) =jmp相应的机器码为EB (意思是出错信息向上找到的第一个跳转),jmp的作用是绝对跳,无条件跳,从而跳过下面的出错信息。例如:xxxxxxxxxxxx 出错信息,如注册码不对,sorry,未注册版不成功,“Function Not Avaible in Demo”,“Command Not Avaible” 或 “Cant save in Shareware/Demo”等,我们希望把它跳过,不让它出现。xxxxxxxxxxxx 正确路线所在,直接跳转到这里。(图6)(2)修改为nop(其示意图见图7)je(jne,jz,jnz) =nop相应的机器码90 (正确信息向上找到的第一个跳转),nop的作用是抹掉这个跳转,使这个跳转无效,失去作用,从而使程序顺利来到紧跟其后的正确信息处。例如:xxxxxxxxxxxx 正确信息,如注册成功,谢谢您的支持等,我们希望它不被跳过,让它出现,所以程序一定要顺利来到这里,不能跳转。xxxxxxxxxxxx 出错信息,我们希望不要跳到这里,不让它出现!(图7)针对上面两点,笔者总结了个爆破无敌口诀 背会此口诀,你将天下无敌,以后慢慢琢磨,仔细体会,收益多多,千万不要错过哦!一条(跳)就死,九筒(90)就胡 (对应上面的(2)修改为nop)一条(跳)就胡,一饼(EB)伺候 (对应上面的(1)修改为jmp)妻死(74)便妻无(75)爸死(84)便爸无(85)winhex脚本命令教程-中文版_好好学习_百度空间计算机2010-02-20 22:09:24阅读144评论0字号:大中小脚本命令适用的环境比较多。脚本文件中的注释以为双斜杠开头。脚本支持的最长255字符的参数。有疑点的地方是十六进制,文本字符串(甚至10进制数值)都可以作为参数,你可以使用引号强制转换数字参数为文本参数。如果文本或者变量名中存在空格,则引号是必须的,在引号中的所有字符都被被识别成一个参数而存在。当在winhex中使用数学表达式的时候,可以引用数学表达式,但是必须用括号括起来。在数学表达式中不能有空格。同样可以在数学表达式中应用数字变量。支持的操作有,加法(+),减法(-),乘法(*),整除(/),模除(%),逻辑运算符AND(&),OR(|),以及XOR()。以下是有效的数学表达式:(5*2+1), (MyVar1/(MyVar2+4), or (-MyVar)。以下是目前支持的脚本命令的详细描述以及使用实例。Create D:My File.txt 1000创建一个1000字节的新文件,如果已经存在同名文件,则将其覆盖。Open D:My File.txtOpen D:*.txt打开指定格式的文件,如果通配符为“?”则winhex会让用户选择要打开的文件。Open C:Open D:打开指定的逻辑驱动器。如果通配符为“:?”则winhex会让用户选择要打开的逻辑驱动器或者磁盘。Open 80hOpen 81hOpen 9Eh打开指定的物理介质。软盘的为00h,硬盘与u盘为80h,光盘为9Eh。可以增加第二个参数来设定文件或者介质的编辑模式(“in-place”或者“read-only”)CreateBackup为活动文件的当前状态创建WHX备份。CreateBackupEx 0 100000 650 true F:My backup.whx备份当前活动磁盘中从0扇区到100000扇区的数据。备份文件将自动分割成650M大小。并且选择了压缩选项。输出文件的路径以及名称作为最后的参数写入。如果备份文件不需要分割,则第三个参数的数值该为0即可。如果不启动压缩功能则将“true”改为“false”。如果需要自动分配文件名以及文件路径则最后的参数表示为“”即可。Goto 0x128Goto MyVariable将光标的位置移动到偏移量0x128位置(16进制表示)。同样也可以用数字变量(最长8字节)来定义光标移动的位置。Move -100将当前光标的位置向后移动100字节(16进制)。Write TestWrite 0x0D0AWrite MyVariable在光标当前位置(以覆盖模式)写入ASCII字符“Test”或者两个字节的16进制数“0D0A”。这里同样可以写入数字变量中的值。同时将光标移动到被覆盖部分的后面。当到达文件的结尾时,将在文件尾部添加空字节以完成操作。下一个写命令将不会在文件尾巴Write2和“Write”的功能类似,当时当到达文件结尾的时候,不会在文件添加空字节。So it is not safe to assume that Write2 always moves the current position forward by the number of byteswritten.Insert Test功能与“Write”类似,但是在“insert”模式只能应用于文件。Read MyVariable 10从当前位置读入10个字节的数据到“MyVariable”变量中。如果变量不存在,它将会创建一个。winhex同时可以支持48个不同的变量。另一个创建变量的命令是“Assign”。ReadLn MyVariable从当前位置读入一整行的数据到“MyVariable”变量中直到遇到换行符。如果变量已经存在了,则变量的大小将会被从新调整。Close不保存的关闭当前活动窗口。CloseAll不保存的关闭所有窗口。Save保存当前活动窗口中打开的文件或磁盘的修改。SaveAs C:New Name.txt将当前活动窗口打开的文件另存为指定目录下的文件。如果通配符为“?”,则winhex会让用户自己选择保存的路径以及文件名。SaveAll保存所有窗口中修改。Terminate中断脚本的执行。Exit中断脚本的执行并且关闭winhex。ExitIfNoFilesOpen如果在winhex中没有打开的文件将终止脚本文件的执行。Block 100 200Block My Variable 1 My Variable 2在当前活动窗口中定义一个偏移量从100到200的选块(10进制)。下一行命令表示定义从变量My Variable 1到My Variable 2的选块(最长8字节)Block1 0x100在偏移量0x100处定义一个字节的选块。同样可以使用变量。Block2 0x200定义一个从开头到偏移量0x200部分的选块。同样可以使用变量。Copy将当前选块复制进剪切板中。如果没有定义选块,其功能和编辑菜单中的复制命令相同。Cut将当前选块中的文件剪切到剪切板中。Remove将当前选块中的数据从文件中移除。CopyIntoNewFile D:New File.datCopyIntoNewFile D:File +MyVariable+.dat将当前选块中的数据复制进指定的新文件,而不复制进剪切板。如果没有定义选块,其功能和编辑菜单中的复制命令相同。同样可以复制磁盘扇区中的数据作为一个新文件。新建的文件不会自动在winhex的编辑窗口中打开。可以在“+”之间加入变量,变量名将被解释为不大于224(16M)的整数。通常在循环应用以及文件恢复中比较有用。Paste将剪切板中的数据粘贴入文件中,并且不改变光标当前位置。WriteClipboard将剪切板中的数据写入文件或磁盘扇的当前位置中,不改变光标当前位置,并且覆盖从当前光标所在位置以后的数据。Convert Param1 Param2将当前活动文件中的数据从一种格式转换成另一种格式。有效的参数是ANSI,IBM,EBCDIC,Binary,HexASCII,IntelHex,MotorolaS, Base64, UUCode, LowerCase, 以及UpperCase,与转换菜单中的转换菜单命令功能相同。AESEncrypt My Password使用AES加密当前活动文件或者磁盘,或其选块,使用指定的密钥(最高32位)。AESDecrypt My Password解密当前活动文件或磁盘。Find John MatchCase MatchWord Down Up BlockOnly SaveAllPos Unicode WildcardsFind 0x1234 Down Up BlockOnly SaveAllPos Wildcards分别搜索当前活动窗口中名为“john”的字符串或16进制值数0x1234,并且在第一个搜索到的地方停下来。其他的参数是可选的。默认的winhex搜索整个文件或磁盘。其他的可选参数功能和通常的winhex搜索选项相同。ReplaceAll Jon Don MatchCase MatchWord Down Up BlockOnly Unicode WildcardsReplaceAll 0x0A 0x0D0A Down Up BlockOnly Wildcards在当前活动窗口中使用其他的值替换所有存在上述字符串或16进制数值的地方。在“in-place”模式下只能应用与磁盘。IfFound如果发现了值则执行下面的命令。IfEqual MyVariable Hello WorldIfEqual 0x12345678 MyVariableIfEqual MyVariable 1000IfEqual MyVariable MyOtherVariableIfEqual MyVariable (10*MyOtherVariable)比较两个整数值(其中每个值可以是常量,整数变量或者数学表达式)或者两个变量,ASCII字符串,或16进制数值(2进制模式)。比较两个对象的2进制数值长度,如果不相同的话则返回结果为false。只有返回值为true时,下面的命令才会被执行。if条件不可以镶套使用。IfGreater MyVariable Hello WorldIfGreater 0x12345678 MyVariableIfGreater MyVariable 1000IfGreater MyVariable MyOtherVariableIfGreater MyVariable (10*MyOtherVariable)和IfEqual拥有相同的参数。第一个参数大于第二个参数,返回值为true,则下面的命令才能被执行。if条件不可以镶套使用。Else应用在IfFound或IfEqual之后。如果没有任何对象被搜索到或者比较的目标不相同,则执行else后面的代码。EndIf结束if条件命令执行(在IfFound或IfEqual之后)。.ExitLoop.退出循环。其后会有一个方括号来定义其循环次数,可以是变量也可以是关键字“unlimited”(无限循环)。winhex脚本中循环只能使用ExitLoop命令来退出。循环不可以镶套使用。举例: Write Loop 10 将输出“Loop”字符串10次。Label ContinueHere创建一个标签并命名为“ContinueHere”JumpTo ContinueHere脚本跳转到标签处继续执行.NextObj循环在所有窗口中进行切换“活动”窗口。如果有三个窗口被打开,并且窗口#3状态为活动窗口,则“NextObj”命令将会让窗口#1变为活动窗口。ForAllObjDo在ForAllObjDo与EndDo之间的脚本代码将在所有打开的文件或者磁盘中执行。CopyFile C:A.dat D:B.dat将C:A.dat文件中的内容复制到D:B.dat中。MoveFile C:A.dat D:B.dat将C:A.dat文件转移到D盘中并命名为D:B.dat。DeleteFile C:A.dat将C:A.dat文件删除。InitFreeSpaceInitSlackSpace使用当前初始化设置清理当前逻辑驱动器中的所有自由空间或松散空间,InitSlackSpace将驱动器的模式临时转换为“in-place”模式,以保存未保存的修改。InitMFTRecords使用当前初始化设置在当前NTFS格式的逻辑驱动器中清理未使用的MFT FILE记录。对于其他的文件系统无效。修改立即就会写入硬盘中。Assign MyVariable 12345Assign MyVariable 0x0D0AAssign MyVariable I like WinHexAssign MyVariable MyOtherVariable将整数,二进制数值,ASCII文本,或其他变量内容保存到“MyVariable”变量中。如果这个变量不存在,将会被自动创建。其他的创建变量的方法:Read,GetUserInput,InttoStr。同时可以允许有48个变量存在。Release MyVariable删除一个已存在的变量,因为winhex脚本中只支持48个变量存在,所以用过的不再使用变量我们可以将其删除以释放变量空间。GetUserInput MyVariable Please enter your name:在脚本运行期间,保存用户指定的ASCII文本或二进制数据(0x.)到变量“MyVariable”中。第二个参数给除了用户提示。如果变量不存在,它将重新创建一个。其他创建变量的方式:Assign,Read。GetUserInputI MyIntegerVariable Please enter your age:与GetUserInput功能相同,但是只允许整数型变量。Inc MyVariable将变量解释为整数(不大于8位)并且每运行一次变量自动加1。在循环中有用。Dec MyVariable将变量解释为整数(不大于8位)并且每运行一次变量自动减1。在循环中有用。IntToStr MyStr MyIntIntToStr MyStr 12345将第一个变量中的ASCII文本转换成整数并保存到第二个变量中。StrToInt MyInt MyStr将第一个变量中的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论