最常见的加壳软件有3个:ASPACK、UPX、PEcompact。毕竟它们是主流,据统计,
用它们加壳的软件约占市面所有软件的90%!其他不常用的加壳软件有ASPROTECT、
PETITE、NEOLITE、TELOCK等,因为使用较少,本文不作介绍。
软件最常见的编程语言是Delphi,VisualBasic(简称VB),VisualC++(简称VC)。了解些编
程的知识,会让破解更加轻车熟路。
好了,让我们来进行破解的第一步——侦测出软件的“壳”和软件所用的编程语言。具备这
种“慧眼”的软件主要有以下4个:fileinfo、language2000、Peid安全教育总结 、pe-scan。下面详细介绍
一下它们的使用方法,希望大家能够熟练掌握,并利用它们拨开壳的层层迷雾,揭开壳的神
秘面纱。
1.侦测“壳”的软件fileinfo(/),简称fi,侦壳能力极强。它有两种
使用方法,采用其中一种即可。届时,壳的信息为绿色字,显示在左上角。
第一种使用方法:把待侦测“壳”的软件(如)和位于同一目录下,执行Windows
开始菜单的“运行”,键入“fiaa”即可。
第二种:让待侦测壳的软件(如)和位于同一目录下,将xx的图标拖到fi的图标
上。
最常见的加壳软件有3个:ASPACK、UPX、PEcompact。毕竟它们是主流,据统计,用它
们加壳的软件约占市面所有软件的90%!其他不常用的加壳软件有ASPROTECT、PETITE、
NEOLITE、TELOCK等,因为使用较少,本文不作介绍。
软件最常见的编程语言是Delphi,VisualBasic(简称VB),VisualC++(简称VC)。了解些编
程的知识,会让破解更加轻车熟路。
好了,让我们来形容等待的成语 进行破解的第一步——侦测出软件的“壳”和软件所用的编程语言。具备这
种“慧眼”的软件主要有以下4个:fileinfo、language2000、Peid、pe-scan。下面详细介绍
一下它们的使用方法,希望大家能够熟练掌握,并利用它们拨开壳的层层迷雾,揭开壳的神
秘面纱。
1.侦测“壳”的软件fileinfo(/),简称fi,侦壳能力极强。它有两种
使用方法,采用其中一种即可。届时,壳的信息为绿色字,显示在左上角。
第一种使用方法:把待侦测“壳”的软件(如)和位于同一目录下,执行Windows
开始菜单的“运行”,键入“fiaa”即可。
第二种:让待侦测壳的软件(如)和位于同一目录下,将xx的图标拖到fi的图标
上。
结果,如图2所示,软件是用UPXv0.94软件加的“壳”,其中0.94为UPX
的版本号。2.同时侦测“壳”和编写语言的软件language2000(两个功能合为一体,太酷了)。
笔者特别推荐使用language2000中文版,它完全是傻瓜式软件,上手很容易,运行后选取
待侦测“壳”的软件即可,图3为运行界面。
由图3所示,软件是用VisualBasic6.0编写的,并由UPX软件加的“壳”。
3.侦壳新秀PEid中文版,具有华丽的图形界面。外壳整合(添加到鼠标右键)功能令使用
更加方便,支持拖放操作。配置时,务请将“扩展到鼠标右键”打上对号。
其使用方法是,鼠标点住,按鼠标右键,选"使用PEid扫描"即可;“壳”的信息就
显示在底部。
如图4所示,软件是用ASPack2.11加“壳”,2.11为ASPack的版本号
4.侦壳新霸主pe-scan增添了自动去“壳”功能,开拓了侦“壳”软件新的发展方向,从而
奠定了其新霸主地位。如图5,运行后把左下角的shell打上对号就整合到了右键菜单。
如图5所示,软件是用telock0.60加“壳”,0.60为telock软件的版
本号。
用工具软件为软件脱“壳”
根据前面的内容侦测了一个软件的“壳”后,接下来我们就需要把它的“壳”脱去了,以便
还原软件的本来面目。注意:若侦测出它根本没加“壳”,可省掉这步。不过,现在没加“壳”
的软件已经很少了。
根据“壳”的流行程度,常用的脱“壳”软件主要有3个:AspackDie、UPX、unpecompact,
分别针对前面提到的3个加壳软件。下面介绍它们的使用方法:
Die能脱ASPack的“壳”,是傻瓜式软件,使用方法类似language2000,运行
后选取待脱壳的软件即可轻松完成。
脱UPX“壳”,UPX自身具备加壳、脱壳功能。其方法为:让待脱“壳”的软件(如)
和位于同一目录下,执行Windows开始菜单的“运行”,键入“”
即可。
mpact脱的是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.破解时常用的汇编指令如下,汇编较弱者可先强行背住,以后就可慢慢理解了。
cmpa,b//比较a与b
mova,b//把b的值送给a,使a=b
ret//返回主程序
nop//无作用,英文"nooperation"的简写,意思是"donothing"(机器码90)(解
释:ultraedit打开编辑exe文件时看到90,等同于汇编语句nop)
call//调用子程序,子程序以ret结尾
je或jz//若相等则跳(机器码74或0F84)
jne或jnz//若不相等则跳(机器码75或0F85)
jmp//无条件跳(机器码EB)
jb//若小于则跳
ja//若大于则跳
jg//若大于则跳
jge//六年级作文变形记 若大于等于则跳
jl//若小于则跳
jle//若小于等于则跳
popxx//xx出栈
pushxx//xx压栈
更为详细的指令请查阅汇编书籍。
4.破解常见修改,参看表1。
种不同情况的不同修改方法
为了破解软件的注册和功能限制,归根结底其方法就是在两种不同情况下对程序所进行的修
改,具体总结如下。
1)修改为jmp(其示意图见图6)
je(jne,jz,jnz)=>jmp相应的机器码为EB(意思是出错信息向上找到的第一个跳转),
jmp的作蜜蜂英文 用是绝对跳,无条件跳,从而跳过下面的出错信息。例如:
xxxxxxxxxxxx出错信息,如注册码不对,sorry,未注册版不成功,“FunctionNotAvaible
inDemo”,“CommandNotAvaible”或“Can’tsaveinShareware/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-2022:09:24阅读144评论0字号:大中小
脚本命令适用的环境比较多。脚本文件中的注释以为双斜杠开头。脚本
支持的最长255字符的参数。有疑点的地方是十六进制,文本字符串(甚
至10进制数值)都可以作为参数,你可以使用引号强制转换数字参数
为文本参数。如果文本或者变量名中存在空格,则引号是必须的,在引
号中的所有字符都被被识别成一个参数而存在。
当在winhex中使用数学表达式的时候,可以引用数学表达式,但是必
须用括号括起来。在数学表达式中不能有空格。同样可以在数学表达式
中应用数字变量。
支持的操作有,加法(+),减法(-),乘法(*),整除(/),模除
(%),逻辑运算符AND(&),OR(|),以及XOR(^)。
以下是有效的数学表达式:(5*2+1),(MyVar1/(MyVar2+4)),or
(-MyVar)。
以下是目前支持的脚本命令的详细描述以及使用实例。
Create"D:"1000
创建一个1000字节的新文件,如果已经存在同名文件,则将其覆盖。
Open"D:"
Open"D:*.txt"
打开指定格式的文件,如果通配符为“?”则winhex会让用户选择要打开
的文件。
OpenC:
OpenD:
打开指定的逻辑驱动器。如果通配符为“:?”则winhex会让用户选择要打
开的逻辑驱动器或者磁盘。
Open80h
Open81h
Open9Eh
打开指定的物理介质。软盘的为00h,硬盘与u盘为80h,光盘为9Eh。
可以增加第二个参数来设定文件或者介质的编辑模式(“in-place”或者
“read-only”)
CreateBackup
为活动文件的当前状态创建WHX备份。
CreateBackupExtrue"F:"
备份当前活动磁盘中从0扇区到100000扇区的数据。备份文件将自动
分割成650M大小。并且选择了压缩选项。输出文件的路径以及名称作
为最后的参数写入。
如果备份文件不需要分割,则第三个参数的数值该为0即可。如果不启
动压缩功能则将“true”改为“fal”。如果需要自动分配文件名以及文件路
径则最后的参数表示为“""”即可。
Goto0x128
GotoMyVariable
将光标的位置移动到偏移量0x128位置(16进制表示)。同样也可以
用数字变量(最长8字节)来定义光标移动的位置。Move-100
将当前光标的位置向后移动100字节(16进制)。
Write"Test"
Write0x0D0A
WriteMyVariable
在光标当前位置(以覆盖模式)写入ASCII字符“Test”或者两个字节的
16进制数“0D0A”。这里同样可以写入数字变量中的值。同时将光标移
动到被覆盖部分的后面。当到达文件的结尾时,将在文件尾部添加空字
节以完成操作。下一个写命令将不会在文件尾巴Write2和“Write”的功
能类似,当时当到达文件结尾的时候,不会在文件添加空字节。
SoitisnotsafetoassumethatWrite2alwaysmovesthecurrent
positionforwardbythenumberofbytes
"Test"
功能与“Write”类似,但是在“inrt”模式只能应用于文件。
ReadMyVariable10
从当前位置读入10个字节的数据到“MyVariable”变量中。如果变无尽空虚歌词 量不
存在,它将会创建一个。winhex同时可以支持48个不同的变量。
另一个创建变量的命令是“Assign”。
ReadLnMyVariable
从当前位置读入一整行的数据到“MyVariable”变量中直到遇到换行符。
如果变量已经存在了,则变量的大小将会被从新调整。
Clo
不保存的关闭当前活动窗口。
CloAll
不保存的关闭所有窗口。
Save
保存当前活动窗口中打开的文件或磁盘的修改。
SaveAs"C:"
将当前活动窗口打开的文件另存为指定目录下的文件。如果通配符为
“?”,则winhex会让用户自己选择保存的路径以及文件名。
SaveAll
保存所有窗口中修改。
Terminate
中断脚本的执行。
Exit
中断脚本的执行并且关闭winhex。
ExitIfNoFilesOpen
如果在winhex中没有打开的文件将终止脚本文件的执行。
Block100200
Block"MyVariable1""MyVariable2"
在当前活动窗口中定义一个偏移量从100到200的选块(10进制)。
下一行命令表示定义从变量"MyVariable1"到"MyVariable2"的选块
(最长8字节)
Block10x100
在偏移量0x100处定义一个字节的选块。同样可以使用变量。Block2
0x200
定义一个从开头到偏移量0x200部分的选块。同样可以使用变量。
Copy
将当前选块复制进剪切板中。如果没有定义选块,其功能和编辑菜单中
的复制命令相同。
Cut
将当前选块中的文件剪切到剪切板中。
Remove
将当前选块中的数据从文件中移除。
CopyIntoNewFile"D:"
CopyIntoNewFile"D:File+MyVariable+.dat"
将当前选块中的数据复制进指定的新文件,而不复制进剪切板。如果没
有定义选块,其功能和编辑菜单中的复制命令相同。同样可以复制磁盘
扇区中的数据作为一个新文件。新建的文件不会自动在winhex的编辑
窗口中打开。可以在“+”之间加入变量,变量名将被解释为不大于2^24
(16M)的整数。通常在循环应用以及文件恢复中比较有用。
Paste
将剪切板中的数据粘贴入文件中,并且不改变光标当前位置。
WriteClipboard
将剪切板中的数据写入文件或磁盘扇的当前位置中,不改变光标当前位
置,并且覆盖从当前光标所在位置以后的数据。
ConvertParam1Param2
将当前活动文件中的数据从一种格式转换成另一种格式。有效的参数是
ANSI,IBM,EBCDIC,Binary,HexASCII,IntelHex,MotorolaS,Ba64,
UUCode,LowerCa,以及UpperCa,与转换菜单中的转换菜单命
令功能相同。
AESEncrypt"MyPassword"
使用AES加密当前活动文件或者磁盘,或其选块,使用指定的密钥(最
高32位)。
AESDecrypt"MyPassword"
解密当前活动文件或磁盘。
Find"John"[MatchCaMatchWordDownUpBlockOnlySaveAllPos
UnicodeWildcards]
Find0x1234[DownUpBlockOnlySaveAllPosWildcards]
分别搜索当前活动窗口中名为“john”的字符串或16进制值数0x1234,
并且在第一个搜索到的地方停下来。其他的参数是可选的。默认的
winhex搜索整个文件或磁盘。其他的可选参数功能和通常的winhex搜
索选冬虫夏草怎么鉴别 项相同。
ReplaceAll"Jon""Don"[MatchCaMatchWordDownUpBlockOnly
UnicodeWildcards]
ReplaceAll0x0A0x0D0A[DownUpBlockOnlyWildcards]
在当前活动窗口中使用其他的值替换所有存在上述字符串或16进制数
值的地方。在“in-place”模式下只能应用与磁盘。
IfFound
如果发现了值则执行下面的命令。
IfEqualMyVariable"HelloWorld"
IfEqual0x12345678MyVariable
IfEqualMyVariable1000
IfEqualMyVariableMyOtherVariable
IfEqualMyVariable(10*MyOtherVariable)
比较两个整数值(其中每个值可以是常量,整数变量或者数学表达式)
或者两个变量,ASCII字符串,或16进制数值(2进制模式)。比较
两个对象的2进制数值长度,如果不相同的话则返回结果为fal。只
有返回值为true时,下面的命令才会被执行。if条件不可以镶套使用。
IfGreaterMyVariable"HelloWorld"
IfGreater0x12345678MyVariable
IfGreaterMyVariable1000
IfGreaterMyVariableMyOtherVariable
IfGreaterMyVariable(10*MyOtherVariable)
和IfEqual拥有相同的参数。第一个参数大于第二个参数,返回值为true,
则下面的命令才能被执行。if条件不可以镶套使用。
El
应用在IfFound或IfEqual之后。如果没有任何对象被搜索到或者比较
的目标不相同,则执行el后面的代码。
EndIf
结束if条件命令执行(在IfFound或IfEqual之后)。
{...
ExitLoop
...}
退出循环。其后会有一个方括号来定义其循环次数,可以是变量也可以
是关键字“unlimited”(无限循环)。winhex脚本中循环只能使用ExitLo日本动漫排名 op
命令来退出。循环不可以镶套使用。
举例:
{Write"Loop"}[10]将输出“Loop”字符串10次。
LabelContinueHere
创建一个标签并命名为“ContinueHere”JumpToContinueHere
脚本跳转到标签处继续执行.
NextObj
循环在所有窗口中进行切换“活动”窗口。如果有三个窗口被打开,并且
窗口#3状态为活动窗口,则“NextObj”命令将会让窗口#1变为活动窗口。
ForAllObjDo
在ForAllObjDo与EndDo之间的脚本代码将在所有打开的文件或者磁
盘中执行。CopyFileC::
将C:文件中的内容复制到D:中。MoveFileC:
D:
将C:文件转移到D盘中并命名为D:。DeleteFileC:
将C:文件删除。
InitFreeSpace
InitSlackSpace
使用当前初始化设置清理当前逻辑驱动器中的所有自由空间或松散空
间,InitSlackSpace将驱动器的模式临时转换为“in-place”模式,以保存
未保存的修改。InitMFTRecords
使用当前初始化设置在当前NTFS格式的逻辑驱动器中清理未使用的
MFTFILE记录。对于其他的文件系统无效。修改立即就会写入硬盘中。
AssignMyVariable12345
AssignMyVariable0x0D0A
AssignMyVariable"IlikeWinHex"
AssignMyVariableMyOtherVariable
将整数,二进制数值,ASCII文本,或其他变量内容保存到“MyVariable”
变量中。如果这个变量不存在,将会被自动创建。其他的创建变量的方
法:Read,GetUrInput,InttoStr。同时可以允许有48个变量存在。
ReleaMyVariable
删除一个已存在的变量,因为winhex脚本中只支持48个变量存在,所
以用过的不再使用变量我们可以将其删除以释放变量空间。
GetUrInputMyVariable"Pleaenteryourname:"
在脚本运行期间,保存用户指定的ASCII文本或二进制数据(0x...)到
变量“MyVariable”中。第二个参数给除了用户提示。如果变量不存在,
它将重新创建一个。其他创建变量的方式:Assign,Read。GetUrInputI
MyIntegerVariable"Pleaenteryourage:"
与GetUrInput功能相同,但是只允许整数型变量。
IncMyVariable
将变量解释为整数(不大于8位)并且每运行一次变量自动加1。在循
环中有用。
DecMyVariable
将变量解释为整数(不大于8位)并且每运行一次变量自动减1。在循
环中有用。
IntToStrMyStrMyInt
IntTo公元前27年 StrMyStr12345
将第一个变量中的ASCII文本转换成整数并保存到第二个变量中。
StrToIntMyIntMyStr
将第一个变量中的整数转换成ASCII文本并保存到第二个变量中。
GetClusterAllocMyStr
在逻辑卷中,找回哪个文件被储存在当前簇中的文本描述,然后将描述
保存到指定的变量中。
GetClusterAllocExIntVar
在逻辑卷中,找回一个整数值指示簇是否被分配,1或者非0,表示该
簇已被分配。并且将描述保存在指定变量中。
GetClusterSizeIntVar
返回逻辑卷中簇的大小,并将数值保存到指定的变量中。
InterpretImageAsDisk
将磁盘镜像或证据文件作为原始物理磁盘或分区一样对待。需要
specialist或forensic许可。
CalcHashHashTypeMyVariable
CalcHashExHashTypeMyVariable
与工具菜单中的hash命令功能相同并且将变量储存在指定变量中(如
果变量不存在,则会自动创建)。HashType参数必须为以下类型中的
一种:CS8,CS16,CS32,CS64,CRC16,CRC32,MD5,SHA-1,
SHA-256,PSCHF。
CalcHashEx命令将在windows窗口中显示hash值。
MessageBox"Caution"
显示信息对话框,并且提供ok和cancel两个按钮。按下cancel按脚
本本。
ExecuteScript"ScriptName"
在脚本的当前运行处运行另一个脚本。调用其他外部脚本可以镶套使
用。当被调用的脚本执行完成以后,脚本继续执行下面的命令。这个特
征可以帮助用户清楚的了解脚本的结构。
TurboOn
TurboOff
管理道模式开关。
Debug
用户可以利用该命令确定脚本中的每一条命令都是否有效。
ULogFile
错误信息被写入当前文件夹下的日志文件“”。这些信息不会
显示在信息对话框中。非常有用,特别在运行的脚本主机无法远程连接
的时候。
CurrentPos
GetSize
unlimited
以上三个是winhex脚本中的关键字,可以被使用在应用数字参数的地
方。在脚本执行过程中,CurrentPos表示当前活动文件或者磁盘窗口
中光标的偏移地址,GetSize表示了它的大小。unlimited实际上表示的
是整数2,147,483,647。
本文发布于:2023-03-18 16:03:39,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1679126620148124.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:aspack.doc
本文 PDF 下载地址:aspack.pdf
留言与评论(共有 0 条评论) |