脱壳基础知识入门
脱壳基本知识
脱壳基本知识在一些计算机软件里有一段专门负责保护软件不被非法修改或反编译的程序。
它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。
以下是由店铺整理关于脱壳知识的内容,希望大家喜欢!壳的概念从技术的角度出发,壳是一段执行于原始程序前的代码。
原始程序的代码在加壳[1] 的过程中可能被压缩、加密……。
当加壳后的文件执行时,壳-这段代码先于原始程序运行,他把压缩、加密后的代码还原成原始程序代码,然后再把执行权交还给原始代码。
软件的壳分为加密壳、压缩壳、伪装壳、多层壳等类,目的都是为了隐藏程序真正的OEP(入口点,防止被破解)。
作者编好软件后,编译成exe可执行文件。
1.有一些版权信息需要保护起来,不想让别人随便改动,如作者的姓名,即为了保护软件不被破解,通常都是采用加壳来进行保护。
2.需要把程序搞的小一点,从而方便使用。
于是,需要用到一些软件,它们能将exe可执行文件压缩,3.在黑客界给木马等软件加壳脱壳以躲避杀毒软件。
实现上述功能,这些软件称为加壳软件。
脱壳软件加壳一般属于软件加密,越来越多的软件经过压缩处理,给汉化带来许多不便,软件汉化爱好者也不得不学习掌握这种技能。
脱壳一般分手动和自动两种,手动就是用TRW2000、TR、SOFTICE等调试工具对付,对脱壳者有一定水平要求,涉及到很多汇编语言和软件调试方面的知识。
而自动就是用专门的脱壳工具来脱,最常用某种压缩软件都有他人写的反压缩工具对应,有些压缩工具自身能解压,如UPX;有些不提供这功能,如:ASPACK,就需要UNASPACK对付,好处是简单,缺点是版本更新了就没用了。
另外脱壳就是用专门的脱壳工具来对付,最流行的是PROCDUMP v1.62 ,可对付各种压缩软件的压缩档。
在这里介绍的是一些通用的方法和工具,希望对大家有帮助。
我们知道文件的加密方式,就可以使用不同的工具、不同的方法进行脱壳。
下面是我们常常会碰到的加壳方式及简单的脱壳措施,供大家参考:脱壳的基本原则就是单步跟踪,只能往前,不能往后。
脱壳基础知识入门之Dump内存映像
外壳程序解压还原后就会跳到OEP处执行,此时内存映像文件是己解压的程序。
这时就可抓取内存映像文件了(该过程称为Dump)。
当然不一定非要在程序原入口点抓取,只要能保证内存映像文件是己还原的就行了。
继续上一个实例notepad.upx.exe,到OEP后就可以Dump取内存映像文件:
004010CC55push ebp
004010CD8BEC mov ebp,esp
004010CF83EC44sub esp,44
运行LordPE.EXE,点击Options,默认选项如下:
默认选上“Fulldump:pasteheaderfromdisk”,PE头的信息直接从磁盘文件获得。
设置好后,在LordPE的进程窗口选择notepad.upx.exe,点击右键,执行“dumpfull”菜单命令。
如图:
将内存抓取的文件另存为dumped.exe,此时程序还不能运行,接下来就是重建输入表。
第16课 手动脱壳的常规方法
第16课手动脱壳的常规方法手动脱壳主要分为三大步骤(你可以将其想像为程咬金的三板斧):①寻找入口点(OEP)、②转储(Dump)程序、③修复输入表(Import Table)。
对于复杂的加密壳,还需要在①②之间再加上一个步骤:寻找魔力跳(Magic Jump)。
直接跟踪法直接跟踪法的基本原则为:1.时刻把自己想像成中国象棋中的“兵”或“卒子”,只准前进,不准后退。
一旦往回跳,则在程序的下一行按F4,继续向下走(解释:F4——运行到指定行)。
2.一般情况下,一路按F8走。
一旦追踪的过程中,目标程序运行起来,宣告脱壳失败。
则需要重新来过,通常的术语被称为“程序跑飞”。
3.注意识别变形call(其实质是一种变形的jmp)。
不能直接F8带过,会跑飞。
这种情况下应该按F7。
判断的方法是它所call的地址和它自身所在的当前行地址极其接近,感觉离得不远,像近房亲戚、孪生兄弟或姐妹。
4.遇到在循环中跑来跑去时,要想办法跳出循环圈。
时刻留意其中一些跳的比较远的跳转,可以ctrl+G,直接到那个位置;或者按F2设断,F9或点按钮,断下后再F2取消断点。
〔例1〕目标程序:UnPackMe_EZIP1.0.exe。
壳为ezip1.0。
程序载入后,来到这里。
F8,来到这里F8走,直到这里,看到类似下图的跳转,由于是向下跳,注意看红线和V形向下小箭头,任由它跳即可。
来到下图的跳转时,当心,已经来到46861A,却要跳回到46855F。
注意看红线和^形向上小箭头,不让它跳,在下一行(即46861F)用鼠标点住,按F4。
继续F8向下走,直到468688这行:程序在46××××,却要跳到4271B0(42××××),如此大的跨段大跳跃,就是跳到入口点(传说中的OEP)的典型标志,看EAX的值也可知道=4271B0。
所以OEP=4271B0F8走一下,来到入口点。
Armadillo脱壳知识和方法大全
般情况下,这个跳转比较大的话,就改为jmp,而跳转比较小的话,就改nop)。[注:下此断点的目的是找到Magic Jump,修改Magic Jump目的
是避开的IAT的加密。]
2、找OEP
下断点bp GetCurrentThreadId/bp CreateThread,shift+f9运行,中断后,取消断点,Alt+F9返回,单步执行,看到一个call edi之类的。F7
进入,即到oep。OD不要关!打开import--选择进程--OEP输入va--自动搜索IAT--获取输入表--显示无效函数--CUT!
(二) 双线程的标准壳
总体步骤:1、要双变单;2、处理IAT,修改Magic Jump;3、寻找OEP;4、修复
1、双变单,方法有三。
方法一:PATCH代码法
004010109D popfd
0040101161 popad
00401012- E9 8F9FA777jmp KERNEL32.OpenMutexA
点右键选择重建eip,f9运行,断下后,取消断点, ctrl+g到00401000,恢复修改。
方法二:下断点BP OpenMutexA,SHIFT+F9运行,断下后,ALT+F9返回,返回后,将返回代码下面的第一个跳转改为相反跳转,再次SHIFT+F9
,断下后,ALT+F9返回,再次将返回代码下面的第一个跳转改为相反跳转。然后再一次SHIFT+F9,取消断点,至此,同样,双进程转单进程完毕!
此法相对简单,另外适用于00401000空数据不能修改的程序。
(2)修改Magic Jump 。
下断BP GetModuleHandleA+5,运行,一般是在堆栈窗口出现ASCII "kernel32.dll"和ASCII "VirtualFree后,再运行一次,就是返回时机,中
壳加壳脱壳介绍壳的一些基本常识
壳加壳脱壳介绍壳的一些基本常识壳(Shell)是计算机操作系统的一种用户接口,它提供了用户与操作系统内核之间的交互方式。
它是用户与操作系统之间的纽带,使用户能够通过命令、脚本等方式与操作系统进行交互。
加壳(Packaging)指的是给软件程序添加额外的代码,以便增加安全性、保护程序免受非法分析和篡改。
加壳技术可以对软件进行加密,防止逆向工程和盗版,同时还可以实现防病毒和反调试的功能。
脱壳(Unpacking)是指将被加壳的软件程序恢复为原始的可执行文件。
通常情况下,脱壳是为了分析软件的结构和行为,或者绕过加壳的保护机制进行非法操作。
下面是一些基本的壳常识:1. 壳的种类:常见的壳包括命令行壳和图形用户界面壳。
命令行壳(例如Bash、PowerShell等)提供了一个命令行界面,用户可以通过输入命令来与操作系统进行交互。
图形用户界面壳(例如Windows的资源管理器、macOS的Finder等)提供了可视化的界面,用户可以通过鼠标点击和拖放来进行操作。
2.壳的功能:壳作为用户接口,提供了很多功能,例如操作文件和文件夹、运行程序、管理系统设置等。
它还可以提供脚本语言的支持,使用户可以通过编写脚本来自动化任务和定制操作。
3.壳的配置和定制:壳通常可以进行配置和定制,用户可以根据自己的需求设置壳的外观和行为。
例如,可以更改壳的主题、布局和颜色,添加自定义菜单和工具栏,设置快捷键等。
4. 壳脚本:壳脚本是一种用于定制壳行为的脚本语言。
例如,在Bash中,用户可以编写Shell脚本来自动执行一系列命令和操作。
壳脚本可以用于自动化任务、批处理、系统管理等方面。
5.加壳的原因和目的:加壳可以增加软件的安全性,保护知识产权和商业机密。
它可以防止软件被逆向工程,避免黑客和破解者篡改程序逻辑或者盗版软件。
加壳还可以实现软件的防病毒功能,使病毒难以对软件进行分析和感染。
6.加壳的原理和技术:加壳通常通过改变软件的结构和代码来实现。
脱壳教程_精品文档
脱壳教程标题:脱壳教程引言:脱壳是指将软件或应用程序的包装层(也称为保护壳或加密层)移除,以便对其进行更深入的分析、修改或逆向工程。
脱壳过程可以帮助软件开发人员或安全研究人员理解程序的内部运行机制,发现其中的漏洞或者进行优化改进。
本文将介绍脱壳过程的基本原理和几种常见的脱壳工具以及其使用方法。
一、脱壳的基本原理脱壳的基本原理是通过破解或绕过软件的保护机制来移除保护壳。
保护机制通常包括各种检测和防御技术,如代码混淆、加壳、逆向工程等。
常见的保护壳有UPX、ASProtect、Enigma等。
脱壳的过程涉及对程序进行调试、分析和修改。
二、脱壳工具介绍及使用方法1. OllyDbgOllyDbg是一款著名的逆向工程和调试工具,也是脱壳过程中经常使用的工具之一。
它具有强大的调试和反汇编功能,可以帮助分析程序的执行流程、内存变化等。
使用OllyDbg进行脱壳时,首先需要加载待脱壳的程序,然后设置断点,跟踪程序执行,找到关键的保护机制的位置,最终移除保护壳。
2. IDA ProIDA Pro是一款功能强大的反汇编和逆向工程工具。
它可以将程序转换为易读的汇编代码,并提供强大的导航和分析功能。
脱壳时可以使用IDA Pro来分析和修改程序的内存和代码。
它可以帮助找到程序的入口点、解密过程等,从而移除保护壳。
3. x64dbgx64dbg是一款开源的调试器工具,适用于32位和64位的Windows系统。
它具有用户友好的界面和丰富的调试功能,并支持脱壳过程中的动态调试和反调试技术。
使用x64dbg进行脱壳时,可以跟踪程序的执行流程、查看内存变化,找到关键代码并进行修改。
三、脱壳过程示例以某款加壳的软件为例,介绍基本的脱壳过程。
1. 加载待脱壳的程序到脱壳工具中,并设置断点。
2. 运行程序,在断点处停下来,观察程序的状态和执行流程。
3. 跟踪程序的执行,查找关键的保护机制位置,例如解密函数、保护壳的入口等。
4. 分析并修改程序的内存和代码,移除保护壳。
手动脱壳基础知识-电脑资料
手动脱壳基础知识-电脑资料单步跟踪法:1.OD载入,不分析代码,。
2.近CALL—F7,远CALL—F8,实现向下的跳转。
3.有回跳处,下一句代码处—F4 (右键—代码断点运行到所选)4.大的跳转(大跨段,JMP***或JE***或RETN),很快就会到OEP内存镜像法:1.OD载入软件2.点选项—调试选项—忽略全部—CTRL+F2重载3.ALT+N打开内存镜像,找程序第一个.rsrc—F2下断—SHIFT+F9运行到断点,再打开找到程序第一个.rsrc上面的.code处(就是00401000处),F2下断—SHIFT+F9或无异常按F9,到OEP 模拟跟踪法:无暗桩情况下使用1.F9试运行,跑起来就无SEH暗桩之类的,否则就有.2.ALT+N打开内存镜像,找到包含“=sfx,imports reloco tions”字符3.地址=*** 命令行输入:tceip<***,回车.ESP定律法:1.F8,观察OD右上角寄存器中ESP有没有实现(红色)2.命令行下 DD ******(当前代码ESP值),回车3.DD就选中下端地址,断点—硬件访问—DWORD断点,F9运行,到跳转处按F8 到DEP最后一次异常法:1.OD打开—点选项—调试选项—去掉所有异常—CTRL+F2重载.2.SHIFT+F9.只到程序运行,记下次数M3.CTRL+F2重载—按SHIFT+F9(次数为M-1次)4.按CTRL+G—输入OE右下角的SE句柄前的地址.5.F2下断—SHIFT+F9到断点处.6.去断按F8,到OEP.一步到位OEP法:只适合少数壳,如UPX,ASPACK1.CTRL+F—输入:POPAD.回车查找—F2下断—F9运行到此处.2.来到大跳转处,点F8到OEP.SFX法:1.设置OD,忽略所有异常.2.切换到SFX选项卡,选择“字节模式跟踪实际入口”,确定.3.重载—“否”压缩代码,到OEP.。
脱壳基础知识入门
脱壳基础知识入门现在加解密发展己形成2个分支了,一个就是传统的算法,另一个就是加密壳。
越来越多的软件采用了密码学相关算法,现在要做出一个软件注册机己不象前几年那么容易,这就要求解密者必须要有一定的数学功底和密码学知识,而这些在短时间内是不容易掌握的。
除了密码学的应用,越来越多的软件加壳了,因此要求解密者必须掌握一些脱壳技术,这就使得壳成了解密必须迈过的一个门槛。
壳发展到今天,强度越来越高了,将许多人挡在门外,使得大家望壳兴叹。
另外,论坛现在两极分化比较严重,高手讨论的脱壳技术新手看不懂,很多人想学脱壳,但看到壳这么难,只好放弃了,造成新手与高手间一个断档,为了鼓励更多新人加入脱壳的行列,很有必要将壳有关知识总结一下。
主页提供的教学确实有点过时了,己到非更新不可了。
相对于密码学算法,脱壳并不难,只要肯花时间,短期内还是比较容易取得成绩的。
第一课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操作系统的一种系统机制,与特定的程序设计语言无关。
新手必须知道的脱壳及修复工具
新手必须知道的脱壳及修复工具很多软件都加了壳,除了易语言软件很少加壳。
对于我们这些新手也叫菜鸟级的,既然想学破解,脱壳是第一步,我也在学习啦,第一步就是个人电脑里面必须装的必备脱壳及修复工具,现在发一个工具介绍,我想对新手应该有用,大家可以复制工具名字,去网上下载:脱壳工具以及脱壳一般流程查壳(PEID、FI、PE-SCAN)--->寻找OEP(OD)--->脱壳/Dump(LordPE、PeDumper、OD自带的脱壳插件、PETools)--->修复(Import REConstructor)【工具介绍】1、查壳PEID--功能强大的侦壳工具,自带脱壳插件(但是,效果不怎么样)工作原理:核心是userdb.txt(大家看看就完全明白了)[通过壳的入口特征码进行辨认]使用方法:可以拖放、也可以把PEID添加到右键菜单里面去FI--功能强大的侦壳工具,DOS界面。
使用方法:可以拖放、可以使用DOS命令行2、寻找OEPollydbg的四个区域左上角是cpu窗口,分别是地址,机器码,汇编代码,注释;注释添加方便,而且还能即时显示函数的调用结果,返回值.右上角是寄存器窗口,但不仅仅反映寄存器的状况,还有好多东东;双击即可改变Eflag的值,对于寄存器,指令执行后发生改变的寄存器会用红色突出显示.cpu窗口下面还有一个小窗口,显示当前操作改变的寄存器状态.左下角是内存窗口.可以ascii或者unicode两种方式显示内存信息.右下角的是当前堆栈情况,还有注释啊.几个经常使用的快捷键F2:在需要的地方下断点(INT3型断点)F3:选择打开程序F4:运行到所选择的那一行F7:单步进入F8:单步跟踪F9:执行程序(运行程序)其中要特别讲一下3个F9的区别和作用:根据Ollydbg.hlp的中文翻译Shift+F9 - 与F9相同,但是如果被调试程序发生异常而中止,调试器会首先尝试执行被调试程序指定的异常处理(请参考忽略Kernel32中的内存非法访问)。
脱壳入门
脱壳教程第1-4篇(转载)脱壳教程1:认识脱壳一切从“壳”开始首先大家应该先明白“壳”的概念。
在自然界中,大家对壳这东西应该都不会陌生了,植物用它来保护种子,动物用它来保护身体等等。
同样,在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。
它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。
就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。
由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。
就像计算机病毒和自然界的病毒一样,其实都是命名上的方法罢了。
最早提出“壳”这个概念的,据我所知,应该是当年推出脱壳软件RCOPY 3 的作者熊焰先生。
在几年前的DOS 时代,“壳”一般都是指磁盘加密软件的段加密程序,可能是那时侯的加密软件还刚起步不久吧,所以大多数的加密软件(加壳软件)所生成的“成品”在“壳”和需要加密的程序之间总有一条比较明显的“分界线”。
有经验的人可以在跟踪软件的运行以后找出这条分界线来,至于这样有什么用这个问题,就不用我多说了。
但毕竟在当时,甚至现在这样的人也不是很多,所以当RCOPY3 这个可以很容易就找出“分界线”,并可以方便的去掉“壳”的软件推出以后,立即就受到了很多人的注意。
老实说,这个我当年在《电脑》杂志看到广告,在广州电脑城看到标着999元的软件,在当时来说,的确是有很多全新的构思,单内存生成EXE 可执行文件这项,就应该是世界首创了。
但它的思路在程序的表现上我认为还有很多可以改进的地方(虽然后来出现了可以加强其功力的RO97),这个想法也在后来和作者的面谈中得到了证实。
在这以后,同类型的软件想雨后春笋一般冒出来,记得住名字的就有:UNKEY、MSCOPY、UNALL .... 等等,但很多的软件都把磁盘解密当成了主攻方向,忽略了其它方面,当然这也为以后的“密界克星”“解密机器”等软件打下了基础,这另外的分支就不多祥谈了,相信机龄大一点的朋友都应该看过当时的广告了。
脱壳法解不等式
脱壳法解不等式1. 引言不等式是数学中的一个重要概念,它描述了数之间的大小关系。
解不等式是数学分析中的一项基本技能,对于解决实际问题和推导数学结论都具有重要意义。
脱壳法是一种解不等式的常用方法,它通过逐步去除不等式中的绝对值符号,将不等式转化为一个或多个简单的不等式,从而得到解集。
本文将详细介绍脱壳法解不等式的基本思想和具体步骤,并通过一些例题来加深理解和应用。
同时,还将探讨脱壳法解不等式的一些常见技巧和注意事项,帮助读者更好地掌握这一解题方法。
2. 脱壳法解不等式的基本思想脱壳法解不等式的基本思想是通过去除绝对值符号,将不等式转化为一个或多个简单的不等式,从而得到解集。
具体来说,脱壳法包括以下几个步骤:步骤一:确定绝对值的取值范围首先,我们需要明确绝对值的取值范围。
对于一般的绝对值不等式,我们有以下两种情况:•当绝对值中的表达式大于等于0时,绝对值的取值范围为全体实数,即|x|≥0;•当绝对值中的表达式小于0时,绝对值的取值范围为空集,即|x|<0。
步骤二:去除绝对值符号根据绝对值的取值范围,我们可以得到以下两个等价关系:•当绝对值中的表达式大于等于0时,绝对值等价于其本身,即|x|≥0等价于x≥0;•当绝对值中的表达式小于0时,绝对值等价于其相反数的绝对值,即|x|< 0等价于−x<0。
根据这两个等价关系,我们可以通过去除绝对值符号,将原不等式转化为一个或多个简单的不等式。
步骤三:求解简单不等式在脱壳法中,我们需要求解转化后的简单不等式。
对于一般的一元一次不等式,我们可以采用以下方法进行求解:•当不等式中含有不等号“<”时,我们可以通过移项和合并同类项的方法将不等式化简为x<a的形式,其中a为常数。
解集为x<a中所有满足条件的实数。
•当不等式中含有不等号“>”时,我们可以通过移项和合并同类项的方法将不等式化简为x>a的形式,其中a为常数。
解集为x>a中所有满足条件的实数。
简单脱壳教程笔记(7)---手脱PECompact2.X壳
简单脱壳教程笔记(7)---⼿脱PECompact2.X壳本笔记是针对ximo早期发的脱壳基础视频教程。
整理的笔记。
本笔记⽤到的⼯具下载地址:简单介绍:FSG壳是⼀款压缩壳。
我们这⾥使⽤9种⽅式来进⾏脱壳⼯具:ExeinfoPE或PEid、OD、LordPE、ImportREConstructor脱壳⽂件:05.⼿脱PECompact2.X壳.rar1 单步我们发现有两处call会跑飞。
那么我们须要在跑飞处进⼊,然后在跟就可以。
第⼀个跑飞的call,我们此时不应该单步⽽是进⼊第⼆个跑飞的call,我们此时不应该单步⽽是进⼊OEP2 ESP定律单步到在此处。
并在数据窗体中尾随,下断点,单步跟踪就可以。
可參考前⾯的笔记内容。
3 使⽤BP VirtualFree断点⾸先下 bp VirtualFree断点然后 SHIFT+F9执⾏,接着按F2取消断点接着ALT+F9运⾏到⽤户代码ctrl+f 进⾏查找 push 8000(特征码)F2设置断点, shift+f9执⾏到这,然后取消断点接着单步跟就可以。
就会到达OEP4 相同设置BP VirtualFree⾸先设置断点然后。
两次SHIFT+F9。
然后,取消断点。
Alt+F9 并运⾏到⽤户代码然后单步⾛。
就会到达OEP5.1、载⼊程序后,会发现⾸⾏有个地址0040A86D > B8 74DE4500 mov eax,qqspirit.0045DE742、在该地址处下断点 bp 0045de743、然后shift+f9执⾏,并取消断点4、我们在该处的retn 下⼀⾏设置断点,然后shift+f9执⾏,并取消断点045DE74 B8 F9CB45F0 mov eax,F045CBF90045DE79 8D88 9E120010 lea ecx,dword ptr ds:[eax+1000129E] 0045DE7F 8941 01 mov dword ptr ds:[ecx+1],eax0045DE82 8B5424 04 mov edx,dword ptr ss:[esp+4]0045DE86 8B52 0C mov edx,dword ptr ds:[edx+C]0045DE89 C602 E9 mov byte ptr ds:[edx],0E90045DE8C 83C2 05 add edx,50045DE8F 2BCA sub ecx,edx0045DE91 894A FC mov dword ptr ds:[edx-4],ecx0045DE94 33C0 xor eax,eax0045DE96 C3 retn0045DE97 B8 78563412 mov eax,12345678 //下断点5、接着单步跟就可以。
第四章--脱壳与脱皮机械与设备
•① 碰撞 • 米粒与碾辊碰撞:提高米粒运动速度,增加能量,产生擦离 和碾削作用;
• 米粒与米粒碰撞、米粒与筛壁碰撞和米粒与其它构件碰撞, 产生擦离作用,使皮层和胚乳进一步剥离。
•② 碾白压力
• 与米粒的碰撞运动、碾白室内的阻力、压力门的阻力和螺旋 推进器的推力等因素相关。
•③ 翻滚 (翻转+滚动)
•
破坏,除下的皮壳整齐,便于选除,适用于韧性皮
•
壳。
•气爆法:利用果壳内形成的压力差使果壳爆裂而脱除,这种
•
方法不便于连续式生产,可操作性差,且易造成果
仁
•
破碎,可用于预破壳工序。
• 任何剥壳机往往是一种剥壳方法为主而几种剥壳方法为
辅的综合作用结果。
第一节 脱壳机械与设备
脱去稻谷颖壳、对大豆脱皮或花生脱红衣等的机械。
2、化学去皮(碱液去皮)
将果蔬在一定温度的碱液中腐蚀处理适当的时间,取出后, 立即用清水冲洗或搓擦,洗去碱液并可将外皮脱去。
适宜桃、李等去皮或橘瓣脱襄衣。
碾米机
碾米的目的主要是碾除糙米皮层。碾 米机主要用于剥除糙米的皮层(由果皮、种 皮、外胚乳和糊粉层组成)。碾米机还用于 碾除高粱、玉米和小麦的皮层。
16
离心式脱壳机
工作过程:葵花籽由料斗通过料门 进入转盘,由于旋转着的打板的冲 击作用使葵花籽产生压缩变形而引 起外壳破裂。破裂及尚未破裂的葵 花籽以高速撞击挡板使之进一步破 裂,以达到充分剥壳目的。同时, 由于葵花籽在打板作用下以水平方 向均匀地抛向挡板而下落,避免了 籽粒的重复撞击现象。
• 影响离心式脱壳机脱壳效果的 工作原理?
弯刀
转轴
旋皮机
② 机械磨削去皮:利用覆有磨料的工作面磨除表面皮层。 速度高、易于实现机械化,所得碎皮细小,易于清理,但去
第四节手动脱壳-电脑资料
第四节手动脱壳-电脑资料1、基本知识手动脱壳就是不借助自动脱壳工具,而是用动态调试工具SOFTICE或TRW2000来脱壳,。
这课谈谈一些入门方面的知识,如要了解更深的脱壳知识,请参考《脱壳高级篇》这课。
工具*调试器:SoftICE 、TRW2000*内存抓取工具:Procdump等;*十六进制工具:Hiew、UltraEdit、Hex Workshop等;*PE编辑工具: Procdump、PEditor等;名词概念★PE文件:Microsoft设计了一种新的文件格式Portable Executable File Format(即PE格式),该格式应用于所有基于Win32的系统:Windows NT、Windows 2000、Win32s及Windows 95/98。
★基址(ImageBase ):是指装入到内存中的EXE或DLL程序的开始地址,它是Win32中的一个重要概念。
在Windows NT中,缺省的值是10000h;对于DLLs,缺省值为400000h。
在Windows 95中,10000h不能用来装入32位的执行文件,因为该地址处于所有进程共享的线性地址区域,因此Microsoft将Win32可执行文件的缺省基地址改变为400000h。
★RVA:相对虚拟地址(Relative Virual Address),是某个项相对于文件映象地址的偏移。
例如:装载程序将一个PE文件装入到虚拟地址空间中,从10000h开始的内存中,如果PE中某个表在映像中的起始地址是10464h那么该表的RVA就是464h。
虚拟地址(RVA)=偏移地址+基址(ImageBase )★Entry Point:入口点,就是程序在完成了对原程序的还原后,开始跳转到刚还原的程序执行,此时的地址就是入口点的值。
步骤★确定壳的种类一般拿到软件后,可用工具FileInfo、gtw、TYP32等侦测文件类型的工具来看看是何种壳,然后再采取措施。
菜鸟脱壳之脱壳的基础知识:如何寻找OEP
菜鸟脱壳之脱壳的基础知识:如何寻找OEP本文摘要这节我们来讲讲如何寻找一个程序的OEP,即Original Entry Point。
一些PE加壳程序在被加密的程序上面加了一个区段(有的壳也会合并区段),当外壳代码执行完毕以后,会跳到程序的本身的代码来执行,所以我们可以依靠跨区段的转移指令来寻找程序的入口点。
这节我们来讲讲如何寻找一个程序的OEP,即Original Entry Point。
一些PE加壳程序在被加密的程序上面加了一个区段(有的壳也会合并区段),当外壳代码执行完毕以后,会跳到程序的本身的代码来执行,所以我们可以依靠跨区段的转移指令来寻找程序的入口点。
我们来看看加壳之前的Delphi7.0的程序,用LordPE来打开Delphi7.0程序,我们看到程序的入口点是004C498:看区段,没有任何的新加的区块:我们来看看加了壳的程序的入口点,加过壳的入口点为000629D0:区段变为三个了,很明显,壳将原程序的区段给合并了:加了壳后,首先,各个区段都要被系统映射到内存中,因为现在的入口点是000629D0,是指向外壳部分的,外壳拿到了控制权以后,通过LoadLibrary、GetProcaddresss、GetModuleHandle等函数来获得自身所需要的API的地址,来解密各个区段的信息,填充好IAT后,就要跳到程序的OEP了(Entry Point),此例是004C498,我们用Ollydbg载入,设置好各个选项(我是把暂停点停在了WinMain处了)。
Ollydbg暂停以后,加壳程序停在了004629D0处:004629D0 > 60 pushad //保存现场(pushad 相当于push 所有的寄存器)004629D1 BE 00F04300 mov esi, 0043F000 //把代码段放到esi寄存器004629D6 8DBE 0020FCFF lea edi, dword ptr [esi+FFFC2000] //得到基址004629DC C787 9CC00400 7>mov dword ptr [edi+4C09C], 46CD167B//将第一个函数的地址放到[edi+ 4C09C]004629E6 57 push edi //将基址压栈004629E7 83CD FF or ebp, FFFFFFFF //将0012FFC0与FFFFFFFF或004629EA EB 0E jmp short 004629FA004629EC 90 nop004629ED 90 nop004629EE 90 nop004629EF 90 nop004629F0 8A06 mov al, byte ptr [esi] //取出0043F004的一个字节004629F2 46 inc esi //指向下一个字节004629F3 8807 mov byte ptr [edi], al //从00401000开始,开始还原代码004629F5 47 inc edi //指向下一个地址004629F6 01DB add ebx, ebx //ebx + ebx,当ebx不等于零的时候跳转,下面的adc 如果为,就取出下一个地址,并放到ebx中004629F8 75 07 jnz short 00462A01004629FA 8B1E mov ebx, dword ptr [esi] //将0043F000放到ebx中004629FC 83EE FC sub esi, -4 //0043F000加4004629FF 11DB adc ebx, ebx //进位加法器00462A01 ^ 72 ED jb short 004629F0 // 向上跳转,ebx做为是否回跳的标志,循环处理代码00462A03 B8 01000000 mov eax, 1 // eax = 100462A08 01DB add ebx, ebx // ebx依然作为循环的标志00462A0A 75 07 jnz short 00462A1300462A0C 8B1E mov ebx, dword ptr [esi] //esi指向的地址放到ebx里面00462A0E 83EE FC sub esi, -4 //esi + 4 00462A11 11DB adc ebx, ebx//进位加法00462A13 11C0 adc eax, eax //进位加法00462A15 01DB add ebx, ebx //ebx + ebx 00462A17 73 0B jnb short 00462A2400462A19 75 28 jnz short 00462A43 //跳到下面00462A1B 8B1E mov ebx, dword ptr [esi] 00462A1D 83EE FC sub esi, -400462A20 11DB adc ebx, ebx00462A22 72 1F jb short 00462A4300462A24 48 dec eax00462A25 01DB add ebx, ebx00462A27 75 07 jnz short 00462A3000462A29 8B1E mov ebx, dword ptr [esi] 00462A2B 83EE FC sub esi, -400462A2E 11DB adc ebx, ebx00462A30 11C0 adc eax, eax00462A32 ^ EB D4 jmp short 00462A08 00462A34 01DB add ebx, ebx00462A36 75 07 jnz short 00462A3F00462A38 8B1E mov ebx, dword ptr [esi]00462A3A 83EE FC sub esi, -400462A3D 11DB adc ebx, ebx00462A3F 11C9 adc ecx, ecx00462A41 EB 52 jmp short 00462A95 00462A43 31C9 xor ecx, ecx // 清零ecx 00462A45 83E8 03 sub eax, 3 // eax - 3 00462A48 72 11 jb short 00462A5B 00462A4A C1E0 08 shl eax, 800462A4D 8A06 mov al, byte ptr [esi] 00462A4F 46 inc esi00462A50 83F0 FF xor eax, FFFFFFFF 00462A53 74 75 je short 00462ACA 00462A55 D1F8 sar eax, 100462A57 89C5 mov ebp, eax00462A59 EB 0B jmp short 00462A66 00462A5B 01DB add ebx, ebx00462A5D 75 07 jnz short 00462A66 00462A5F 8B1E mov ebx, dword ptr [esi] 00462A61 83EE FC sub esi, -400462A64 11DB adc ebx, ebx00462A66 ^ 72 CC jb short 00462A3400462A68 41 inc ecx00462A69 01DB add ebx, ebx00462A6B 75 07 jnz short 00462A74 00462A6D 8B1E mov ebx, dword ptr [esi] 00462A6F 83EE FC sub esi, -400462A72 11DB adc ebx, ebx00462A74 ^ 72 BE jb short 00462A34 00462A76 01DB add ebx, ebx00462A78 75 07 jnz short 00462A81 00462A7A 8B1E mov ebx, dword ptr [esi] 00462A7C 83EE FC sub esi, -400462A7F 11DB adc ebx, ebx00462A81 11C9 adc ecx, ecx00462A83 01DB add ebx, ebx00462A85 ^ 73 EF jnb short 00462A76 00462A87 75 09 jnz short 00462A92 00462A89 8B1E mov ebx, dword ptr [esi] 00462A8B 83EE FC sub esi, -400462A8E 11DB adc ebx, ebx00462A90 ^ 73 E4 jnb short 00462A76 00462A92 83C1 02 add ecx, 200462A95 81FD 00FBFFFF cmp ebp, -500 //迷惑指令00462A9B 83D1 02 adc ecx, 2// 进位加法00462A9E 8D142F lea edx, dword ptr [edi+ebp] // edi + ebp的地址装载到edx,即原来的代码段的地址00462AA1 83FD FC cmp ebp, -4 // 判断跳转标志,EBP小于等于-4就跳00462AA4 76 0E jbe short 00462AB400462AA6 8A02 mov al, byte ptr [edx] //取出代码段的一字节00462AA8 42 inc edx //指向下一个地址00462AA9 8807 mov byte ptr [edi], al //取出的代码放到edi里面00462AAB 47 inc edi //指向下一个代码00462AAC 49 dec ecx //计数器00462AAD ^ 75 F7 jnz short 00462AA6 //关于计数器(ecx)的跳转00462AAF ^ E9 42FFFFFF jmp 004629F6 //向上面跳,跳到add ebx,ebx00462AB4 8B02 mov eax, dword ptr [edx] // 处理输入表00462AB6 83C2 04 add edx, 4 // edx + 4,指向下一个地址00462AB9 8907 mov dword ptr [edi], eax //将代码放到edi00462ABB 83C7 04 add edi, 4// edi + 4,存放代码的地址00462ABE 83E9 04 sub ecx, 4//ecx - 400462AC1 ^ 77 F1 ja short 00462AB400462AC3 01CF add edi, ecx // edi + ecx,指向接收代码的地址的最后一个字节00462AC5 ^ E9 2CFFFFFF jmp 004629F6 //跳到add ebx,ebx00462ACA 5E pop esi00462ACB 89F7 mov edi, esi00462ACD B9 81260000 mov ecx, 268100462AD2 8A07 mov al, byte ptr [edi] //指向我们原来代码段的代码,取出到AL里面00462AD4 47 inc edi //指向下一个字节00462AD5 2C E8 sub al, 0E8 //处理CALL00462AD7 3C 01 cmp al, 1 //判断al是否大于100462AD9 ^ 77 F7 ja short 00462AD2 //循环,到下一个CALL的第一个字节为止00462ADB 803F 14 cmp byte ptr [edi], 1400462ADE ^ 75 F2 jnz short 00462AD200462AE0 8B07 mov eax, dword ptr [edi] //取出里面的地址,里面的地址是定位CALL 的绝对地址要用到的00462AE2 8A5F 04 mov bl, byte ptr [edi+4] //得到下条地址的开始字节放到AL里面,CALL绝对地址就是下条指令开始+刚才上面取出的那个数字00462AE5 66:C1E8 08 shr ax, 8 // ax右移8位00462AE9 C1C0 10 rol eax, 10 //eax算术左移8位00462AEC 86C4 xchg ah, al //交换内容00462AEE 29F8 sub eax, edi //eax - edi00462AF0 80EB E8 sub bl, 0E8 //再减去E800462AF3 01F0 add eax, esi //eax + esi,其中esi是代码段开始的地方00462AF5 8907 mov dword ptr [edi], eax //这里处理CALL的地址,算出CALL的偏移到EDI里面00462AF7 83C7 05 add edi, 5 //edi + 5,指向call的后面00462AFA 88D8 mov al, bl //bl的内容放到al中00462AFC ^ E2 D9 loopd short 00462AD7 //循环处理CALL,其中ecx作为计数器00462AFE 8DBE 00F00500 lea edi, dword ptr [esi+5F000] //代码段的起始地址+5F00000462B04 8B07 mov eax, dword ptr [edi] //现在EDI指向我们的代码的输入表00462B06 09C0 or eax, eax //eax 或eax ,判断eax是否为零00462B08 74 3C je short 00462B4600462B0A 8B5F 04 mov ebx, dword ptr [edi+4] //取得这个地址的数据放到ebx00462B0D 8D8430 AC2D0600 lea eax, dword ptr [eax+esi+62DAC] // 取得外壳段的KERNEL32.DLL的地址放eax00462B14 01F3 add ebx, esi //我们代码段的起始地址加上刚才取出的那个数据00462B16 50 push eax //kernel32.dll的地址00462B17 83C7 08 add edi, 8 //edi + 800462B1A FF96 4C2E0600 call dword ptr [esi+62E4C] //装载kernel32.dll00462B20 95 xchg eax, ebp //交换数据,即eax指向kernel32.dll的地址00462B21 8A07 mov al, byte ptr [edi] //取得现在的EDI的地址指向的数据放到AL 00462B23 47 inc edi //指向下一个函00462B24 08C0 or al, al //al 或al,判断al是否为零00462B26 ^ 74 DC je short 00462B0400462B28 89F9 mov ecx, edi //取出的函数的名字放到ecx里面00462B2A 57 push edi //函数名字压栈00462B2B 48 dec eax //eax - 100462B2C F2:AE repne scas byte ptr es:[edi]00462B2E 55 push ebp //kernel32.dll的基址00462B2F FF96 502E0600 call dword ptr [esi+62E50] //外壳的GetProcaddress00462B35 09C0 or eax, eax //eax或eax,得到函数的地址00462B37 74 07 je short 00462B4000462B39 8903 mov dword ptr [ebx], eax //处理输入表00462B3B 83C3 04 add ebx, 4 //ebx + 4,指向下一个输入表的地址00462B3E ^ EB E1 jmp short 00462B2100462B40 FF96 602E0600 call dword ptr [esi+62E60]00462B46 8BAE 542E0600 mov ebp, dword ptr [esi+62E54] //VirtualProtect的地址放到ebp00462B4C 8DBE 00F0FFFF lea edi, dword ptr [esi-1000] //指向PE头,即映像基址00462B52 BB 00100000 mov ebx, 1000 //把1000放到ebx,即ebx = 100000462B57 50 push eax00462B58 54 push esp00462B59 6A 04 push 400462B5B 53 push ebx00462B5C 57 push edi00462B5D FFD5 call ebp //改变属性00462B5F 8D87 1F020000 lea eax, dword ptr [edi+21F] //现在eax指向PE头中区段的偏移起始位置00462B65 8020 7F and byte ptr [eax], 7F //改写区段名字00462B68 8060 28 7F and byte ptr [eax+28], 7F //改写区块属性第一个区块的属性00462B6C 58 pop eax00462B6D 50 push eax00462B6E 54 push esp00462B6F 50 push eax00462B70 53 push ebx00462B71 57 push edi00462B72 FFD5 call ebp00462B74 58 pop eax00462B75 61 popad //恢复现场00462B76 8D4424 80 lea eax, dword ptr [esp-80]00462B7A 6A 00 push 000462B7C 39C4 cmp esp, eax00462B7E ^ 75 FA jnz short 00462B7A00462B80 83EC 80 sub esp, -8000462B83 ^ E9 109FFEFF jmp 0044CA98 //跨区段的转移,跳到OEP 00462B88 A0 2B4600B0 mov al, byte ptr [B000462B]00462B8D 2B46 00 sub eax, dword ptr [esi]00462B90 9C pushfdDelphi7.0的OEP:0044CA98 55 push ebp0044CA99 8BEC mov ebp, esp0044CA9B 83C4 F0 add esp, -100044CA9E B8 B8C84400 mov eax, 0044C8B80044CAA3 E8 2091FBFF call 00405BC80044CAA8 A1 B8DF4400 mov eax, dword ptr [44DFB8]0044CAAD 8B00 mov eax, dword ptr [eax]0044CAAF E8 9CE6FFFF call 0044B150这个方法很简单,就是从壳的开始一直跟踪,直到来到OEP,没有什么技巧!大家应该熟悉各个程序的OEP,并且熟练的掌握这种方法!。
脱壳法解不等式
脱壳法解不等式摘要:一、引言二、脱壳法的概念与原理1.脱壳法的定义2.脱壳法的基本原理三、脱壳法解不等式的步骤1.确定不等式的形式2.构造辅助函数3.求解辅助函数的零点4.根据零点与区间端点的关系判断原不等式的解集四、脱壳法解不等式的实例1.实例一2.实例二五、总结与展望正文:一、引言脱壳法,作为一种解决不等式问题的方法,广泛应用于数学领域。
本文旨在介绍脱壳法的相关知识,并通过实例演示脱壳法解不等式的具体步骤。
二、脱壳法的概念与原理1.脱壳法的定义脱壳法,又称分离变量法,是一种求解含有绝对值不等式的方法。
其基本思想是将绝对值不等式分解为两个或多个简单的不等式,从而降低问题的复杂度。
2.脱壳法的基本原理脱壳法的核心思想是利用函数的零点与不等式的关系,将原不等式转化为求解函数零点的问题。
具体来说,首先构造一个辅助函数,使其在原不等式的解集中有且仅有一个零点。
然后,根据辅助函数的零点与区间端点的关系,判断原不等式的解集。
三、脱壳法解不等式的步骤1.确定不等式的形式观察原不等式,判断其是否为含有绝对值的不等式。
若是,则进入下一步;否则,考虑其他方法求解。
2.构造辅助函数根据原不等式的形式,构造一个辅助函数。
辅助函数的形式应满足:在原不等式的解集中有且仅有一个零点。
3.求解辅助函数的零点利用数学方法求解辅助函数的零点,得到零点的位置。
4.根据零点与区间端点的关系判断原不等式的解集根据辅助函数的零点与区间端点的关系,判断原不等式的解集。
若零点在区间端点的左侧,则原不等式的解集为(-∞, 零点);若零点在区间端点的右侧,则原不等式的解集为(零点,+∞);若零点在区间内部,则原不等式的解集为(-∞, 零点)∪(零点,+∞)。
四、脱壳法解不等式的实例1.实例一考虑不等式|x - 2| > 3。
首先,构造辅助函数f(x) = |x - 2| - 3。
然后,求解f(x) = 0,得到x = 5 或x = -1。
壳的基本脱法
壳的基本脱法常见脱壳知识:1.PUSHAD(压栈)代表程序的入口点2.POPAD(出栈)代表程序的出口点,与PUSHAD相对应,一般找到这个,说明OEP可能就在附近3.OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP),只要我们找到程序真正的OEP,就可以立刻脱壳。
脱壳的几种方法:方法一:单步跟踪方法二:ESP定律脱壳方法三:内存跟踪方法四:跟踪出口法方法五:最后一次异常法========================================================================== =======================第二部分,需要注意的几处重点ESP脱壳时,对于有关键提示的(如:Pushw或Pushad),一般选择关键提示下面那行地址中的ESP。
懒方法脱壳,这种方法对压缩壳有效;对加密壳作用不大。
“懒方法脱壳“在已开始的设置时需要注意(简化的设置步骤,详细的在文章最下面):1、首先,要忽略所有异常//忽略所有异常——这个是必须的2、设置:”调试选项“→”SFX“→”字节模式跟踪实际入口(速度非常慢)“3、载入相关程序。
//当载入后的程序停止后,所停址的那个地址就是我们Dunp加壳文件的那个地址Hr命令:”hr“下的是字节断点。
用ESP脱壳时,多数都是用的这个。
===================================== ===================================== =======================第三部分,这篇文章的骨干部分!第一节手脱EZIP1.0的壳因为这个壳会修改PE头用OD脱壳后即使修复了也不能运行。
所以最简单的方法是采用LordPE这个工具脱壳。
具体步骤:首先,运行目标软件程序(不是用OD,而是想像平时使用一样,双击打开)→从LordPE列表中选中目标程序的进程→点”鼠标右键“选择”完整脱壳“。
掌握蜕壳规律,养殖南美白对虾获得成功不再难
掌握蜕壳规律,养殖南美白对虾获得成功不再难虾类的蜕壳对于虾类本身来说是极其重要的,其影响虾类的形态,生理和行为变化,为虾类完成变态发育和生长所需,但也是导致畸形,生病,死亡的重要原因。
所以对于对虾蜕壳过程需要做一些了解,并可以作出相应的处理方式,减少发病和死亡的几率。
一、蜕壳与生长虾通过蜕皮完成生长,在两次蜕皮之间动物基本维持体长不变,在线性尺度上基本没有增加,在体重上随物质积累而略有增长。
蜕皮后对虾的新甲壳柔软而有韧性,此时对虾通过大量吸水使甲壳扩展至最大尺度,随后矿物质及蛋白质爱沉淀使甲壳硬化,完成身体线性增长,然后以物质积累和组织生长替换出体内的水分,完成真正的生长。
因此生长速度有赖于蜕皮的次数和再次蜕皮时体长与体重的增加程度。
对虾的生长速度=蜕壳率×生长增重率。
蜕壳率与虾的生长阶段和水质环境因子有关。
二、蜕壳不遂的原因分析1、微量元素缺少造成脱壳困难,表现为下吃料活力都好,脱壳期有的头壳硬没脱、有的尾部壳硬没脱、有的壳弱、有肉段子,如缺钙:软,Mg薄,缺p碎。
2、底差水色不好,活力差细菌感染,纤毛虫等寄生虫寄生造成脱壳困难。
表现为虾体检测纤毛虫很多,空肠空胃。
3、吃不饱,长期饥饿影响脱壳,营养不足或饲料差不易吸收影响脱壳;表现为头大脚轻腮不肿,脱壳反而变小。
4、放养密度过大,密集挤迫,互相干扰会延长蜕壳时间或蜕不出壳而死亡;5、药物影响,乱用抗生素,滥用消毒药,影响蜕壳或产生不正常现象;三、蜕壳不遂观察方法一般有:1、大脱壳期(初一、十五前后)水体表面和料台看不到虾壳。
2、虾体外壳发黑(绿),不透明。
正常虾为玻璃色。
3、头胸甲很硬而尾部虾壳很软,前后不一致,即尾部已蜕壳,而头胸甲没有。
4、双层壳:即剥开外层虾壳可发现里面还有一层软壳。
5、虾体表面粘稠,不光滑,对虾生长速度很慢,可能是蜕壳不遂导致。
四、脱壳不遂的处理思路对虾发生脱壳不遂时,可以先外用补钙产品,连续使用2-3次,在入夜前可以使用颗粒氧等化学增氧剂,补充池塘底部溶氧的不足,有利于对虾的蜕壳。
蜕壳,是养虾的生死关!如何保证虾顺利蜕壳呢?技巧都在这
蜕壳,是养虾的生死关!如何保证虾顺利蜕壳呢?技巧都在这对虾作为一种甲壳类动物,在养殖过程中会经历十分重要的一个环节,那就是—蜕壳。
当虾的机体组织生长及营养物质累积到一点定程度的时候,必然要进行蜕壳,每蜕壳一次,虾体会明显增长。
这是虾的自然生长规律。
蜕壳期对于对虾来说有多重要,各位养殖朋友应该都知道,那做好蜕壳期的管理,更是十分关键。
这篇文章我们就来聊一聊蜕壳期的对虾要注意些什么。
一、对虾蜕壳的步骤虾蜕壳一般分为三个阶段:1、蜕壳前:虾正在准备蜕皮,可以观察到它的摄食行为减少、活力降低;2、蜕壳中:虾正在奋力将旧壳剔除,逐步完成新外壳的形成;3、蜕壳后:虾已经完成新外壳的形成,并逐渐硬壳,恢复摄食行为。
二、蜕壳时间1、当在28℃时,仔虾蜕壳间隔时间分别是30-40小时;2、当在28℃时,1-5g幼虾蜕壳间隔时间4-6天;3、当在28℃时,15克以上成虾的蜕壳间隔时间15天。
也就是说,虾越大,蜕一次壳需要完成积累营养的时间越长。
三、影响虾蜕壳的因素1、营养因素这是虾难以蜕壳的主要原因之一,营养不良的虾没有足够的物质来填满它的外壳,或者根本无法蜕壳,这对于养殖来说,都是十分不利的。
为了让虾活得好,虾必须吃足够的饲料,蛋白质含量在32-48%之间。
2、疾病在养虾的过程中,一些疾病,如真菌、藻类、寄生虫,也会导致虾蜕壳缓慢或者无法蜕壳。
3、养殖环境在蜕壳过程中,虾对氧气的需求是原来的两倍,所以当你看到有迹象表明虾准备蜕壳时,你需要多开启增氧机来补充溶解氧。
一般来说,在虾的脱壳过程中,溶解氧保持在5-6mg/L。
其次,虾塘中的盐度越高,池塘中的溶解矿物质含量就越高,反之亦然。
其次还有碱度、硬度等相关因素会影响到对虾的蜕壳。
四、保障对虾蜕壳顺利的措施1、一般来说,初一十五(月圆月缺),虾会集中蜕壳。
另外,我们也要定期采样,并对虾蜕壳情况与时间做好记录,这样,我们可以准确预测出虾蜕壳周期会在什么时候发生。
2、需要稳定水质,特别是盐度,以使其不会急剧变化,以防止虾受到冲击。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
脱壳基础知识入门现在加解密发展己形成2个分支了,一个就是传统的算法,另一个就是加密壳。
越来越多的软件采用了密码学相关算法,现在要做出一个软件注册机己不象前几年那么容易,这就要求解密者必须要有一定的数学功底和密码学知识,而这些在短时间内是不容易掌握的。
除了密码学的应用,越来越多的软件加壳了,因此要求解密者必须掌握一些脱壳技术,这就使得壳成了解密必须迈过的一个门槛。
壳发展到今天,强度越来越高了,将许多人挡在门外,使得大家望壳兴叹。
另外,论坛现在两极分化比较严重,高手讨论的脱壳技术新手看不懂,很多人想学脱壳,但看到壳这么难,只好放弃了,造成新手与高手间一个断档,为了鼓励更多新人加入脱壳的行列,很有必要将壳有关知识总结一下。
主页提供的教学确实有点过时了,己到非更新不可了。
相对于密码学算法,脱壳并不难,只要肯花时间,短期内还是比较容易取得成绩的。
第一课 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 humeSEH in ASM 研究(二)by humeStructured 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;/*098*/ DWORD SegDs;/*09C*/ DWORD Edi;/*0A0*/ DWORD Esi;/*0A4*/ DWORD Ebx;/*0A8*/ DWORD Edx;/*0AC*/ DWORD Ecx;/*0B0*/ DWORD Eax;/*0B4*/ DWORD Ebp;/*0B8*/ DWORD Eip;/*0BC*/ DWORD SegCs;/*0C0*/ DWORD EFlags;/*0C4*/ DWORD Esp;/*0C8*/ DWORD SegSs;/*0CC*/ BYTE ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];/*2CC*/ } CONTEXT;第三课认识壳1. 什么是壳?在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。
它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。
由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,就把这样的程序称为“壳”了。
推荐文档:一切从“壳”开始描述壳的示意图:2. 壳的加载过程这里谈的加壳工具不是WinZIP、WinRAR等数据压缩工具,而是谈压缩可执行文件EXE或DLL的工具。
加壳过的EXE 文件是可执行文件,它可以同正常的EXE文件一样执行。
用户执行的实际上是外壳程序,这个外壳程序负责把用户原来的程序在内存中解压缩,并把控制权交还给解开后的真正程序,这一切工作都是在内存中运行的,整个过程对用户是透明的。
壳和病毒在某些方面比较类似,都需要比原程序代码更早的获得控制权。
壳修改了原程序的执行文件的组织结构,从而能够比原程序的代码提前获得控制权,并且不会影响原程序的正常运行。
这里简单说说一般壳的装载过程。
(参考了Ljtt以前写过的一篇文章)1)获取壳自己所需要使用的API地址如果用PE编辑工具查看加壳后的文件,会发现未加壳的文件和加壳后的文件的输入表不一样,加壳后的输入表一般所引入的DLL和API函数很少,甚至只有Kernel32.dll以及GetProcAddress这个API函数。
壳实际上还需要其他的API函数来完成它的工作,为了隐藏这些API,它一般只在壳的代码中用显式链接方式动态加载这些API函数:3个脱壳相关的重要函数介绍2)解密原程序的各个区块(Section)的数据壳出于保护原程序代码和数据的目的,一般都会加密原程序文件的各个区块。
在程序执行时外壳将会对这些区块数据解密,以让程序能正常运行。
壳一般按区块加密的,那么在解密时也按区块解密,并且把解密的区块数据按照区块的定义放在合适的内存位置。
如果加壳时用到了压缩技术,那么在解密之前还有一道工序,当然是解压缩。
这也是一些壳的特色之一,比如说原来的程序文件未加壳时1~2M大小,加壳后反而只有几百K。
3)重定位文件执行时将被映像到指定内存地址中,这个初始内存地址称为基地址(ImageBase)。
当然这只是程序文件中声明的,程序运行时能够保证系统一定满足其要求吗?对于EXE的程序文件来说,Windows系统会尽量满足。
例如某EXE文件的基地址为0x400000,而运行时Windows系统提供给程序的基地址也同样是0x400000。
在这种情况下就不需要进行地址“重定位”了。
由于不需要对EXE文件进行“重定位”,所以加壳软件把原程序文件中用于保存重定位信息的区块干脆也删除了,这样使得加壳后的文件更加小巧。
有些工具提供“Wipe Reloc”的功能,其实就是这个作用。
不过对于DLL的动态链接库文件来说,Windows系统没有办法保证每一次DLL运行时提供相同的基地址。
这样“重定位”就很重要了,此时壳中也需要提供进行“重定位”的代码,否则原程序中的代码是无法正常运行起来的。
从这点来说,加壳的DLL比加壳的EXE更难修正。
4)HOOK-API程序文件中的输入表的作用是让Windows系统在程序运行时提供API的实际地址给程序使用。
在程序的第一行代码执行之前,Windows系统就完成了这个工作。
壳一般都修改了原程序文件的输入表,然后自己模仿Windows系统的工作来填充输入表中相关的数据。
在填充过程中,外壳就可填充HOOK-API的代码的地址,这样就可间接地获得程序的控制权。
5)跳转到程序原入口点(OEP)从这个时候起壳就把控制权交还给原程序了,一般的壳在这里会有明显的一个“分界线”。
但现在的猛壳己没这界限了,壳里有肉,肉里有壳。
3. 压缩引擎各类加壳软件,其压缩算法一般不是自己实现的,大多是调用其他的压缩引擎。
目前压缩引擎种类比较多,不同的压缩引擎有不同特点,如一些对图像压缩效果好,一些对数据压缩效果好。
而加壳软件选择压缩引擎有一个特点,在保证压缩比的条件下,压缩速度慢些关系不是太大,但解压速度一定要快,这样加了壳的EXE文件运行起来速度才不会受太大的影响。
例如下面几个压缩引擎就能满足这要求:1. aPLib压缩引擎 /,这个库对于低于64K的文件压缩效果较好,速度较快。
2. JCALG1压缩引擎,相对于aPlib,JCALG1对于大文件效果好些。
3. LZMA压缩引擎 /zh-cn/sdk.html,LZMA 是 7-Zip 程序中 7z 格式的默认压缩算法,压缩率很高。
第四课常见压缩壳与加密壳加壳软件按照其加壳目的和作用,可分为两类:一是压缩(Packers),二是保护(Protectors)。
压缩这类壳主要目的是减小程序体积,如ASPacK、UPX和PECompact等。
另一类是保护程序,用上了各种反跟踪技术保护程序不被调试、脱壳等,其加壳后的体积大小不是其考虑的主要因素,如ASProtect、Armadillo、EXECryptor等。
随着加壳技术的发展,这两类软件之间的界线越来越模糊,很多加壳软件除具有较强的压缩性能,同时也有了较强的保护性能。
1. ASPacK主页:/ASPack是款Win32可执行文件压缩软件,可压缩Windows 32位可执行文件(.exe)以及库文件(.dll、.ocx),文件压缩比率高达40%~70%。
2. UPX主页:/UPX是一个以命令行方式操作的可执行文件经典免费压缩程序,压缩算法自己实现,速度极快,压缩比极高。
(开源)3. PECompact主页:/PECompact同样也是一款能压缩可执行文件的工具(支持EXE、DLL、SCR、OCX等文件)。
相比同类软件,PECompact提供了多种压缩项目的选择,用户可以根据需要确定哪些内部资源需要压缩处理。
同时,该软件还提供了加解密的插件接口功能。
4. ASProtect主页:/ASProtect是一款非常强大的Windows 32位保护工具,这4、5年来,其一直在更新进步。
其开发者是俄国人Alexey Solodovnikov。
它拥有压缩、加密、反跟踪代码、反-反汇编代码、CRC校验和花指令等保护措施。
它使用Blowfish、Twofish、TEA等强劲的加密算法,还用RSA1024作为注册密钥生成器。
它还通过API钩子(API hooks,包括Import hooks (GPA hook)和Export hooks)与加壳的程序进行通信。
甚至用到了多态变形引擎(Polymorphic Engine)。
反Apihook代码(Anti-Apihook Code)和BPE32的多态变形引擎(BPE32的Polymorphic Engine)。
并且ASProtect为软件开发人员提供SDK,实现加密程序内外结合。