脱壳,帮帮我,谢谢谢谢

作者&投稿:载思 (若有异议请与网页底部的电邮联系)
什么叫脱壳~

简介
在一些计算机软件里有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。就像计算机病毒和自然界的病毒一样,其实都是命名上的方法罢了。 从功能上抽象,软件的壳和自然界中的壳相差无几。无非是保护、隐蔽壳内的东西。而从技术的角度出发,壳是一段执行于原始程序前的代码。原始程序的代码在加壳的过程中可能被压缩、加密……。当加壳后的文件执行时,壳-这段代码先于原始程序运行,他把压缩、加密后的代码还原成原始程序代码,然后再把执行权交还给原始代码。 软件的壳分为加密壳、压缩壳、伪装壳、多层壳等类,目的都是为了隐藏程序真正的OEP(入口点,防止被破解)。关于“壳”以及相关软件的发展历史请参阅吴先生的《一切从“壳”开始》。
编辑本段壳的概念
作者编好软件后,编译成exe可执行文件。 1.有一些版权信息需要保护起来,不想让别人随便改动,如作者的姓名,即为了保护软件不被破解,通常都是采用加壳来进行保护。 2.需要把程序搞的小一点,从而方便使用。于是,需要用到一些软件,它们能将exe可执行文件压缩, 3.在黑客界给木马等软件加壳脱壳以躲避杀毒软件。实现上述功能,这些软件称为加壳软件。
编辑本段脱壳软件
软件加壳是作者写完软件后,为了保护自己的代码或维护软件产权等利益所常用到的手段。目前有很多加壳工具,既然有矛,自然就有盾,只要我们收集全常用脱壳工具,那就不怕他加壳了。软件脱壳有手动脱和自动脱壳之分,下面我们先介绍自动脱壳,因为手动脱壳需要运用汇编语言,要跟踪断点等,不适合初学者,但我们在后边将稍作介绍。 加壳一般属于软件加密,现在越来越多的软件经过压缩处理,给汉化带来许多不便,软件汉化爱好者也不得不学习掌握这种技能。现在脱壳一般分手动和自动两种,手动就是用TRW2000、TR、SOFTICE等调试工具对付,对脱壳者有一定水平要求,涉及到很多汇编语言和软件调试方面的知识。而自动就是用专门的脱壳工具来脱,最常用某种压缩软件都有他人写的反压缩工具对应,有些压缩工具自身能解压,如UPX;有些不提供这功能,如:ASPACK,就需要UNASPACK对付,好处是简单,缺点是版本更新了就没用了。另外脱壳就是用专门的脱壳工具来对付,最流行的是PROCDUMP v1.62 ,可对付目前各种压缩软件的压缩档。在这里介绍的是一些通用的方法和工具,希望对大家有帮助。我们知道文件的加密方式,就可以使用不同的工具、不同的方法进行脱壳。下面是我们常常会碰到的加壳方式及简单的脱壳措施,供大家参考: 脱壳的基本原则就是单步跟踪,只能往前,不能往后。脱壳的一般流程是:查壳->寻找OEP->Dump->修复 找OEP的一般思路如下: 先看壳是加密壳还是压缩壳,压缩壳相对来说容易些,一般是没有异常,找到对应的popad后就能到入口,跳到入口的方式一般为:jmp OEP、push OEP ret、call OEP,当然也有其它的,如 je OEP等等,一般都是段之间的大跳转,OD的反汇编窗口里都是同一个段的内容,所以更好区别是否是段间跳转。我们知道文件被一些压缩加壳软件加密,下一步我们就要分析加密软件的名称、版本。因为不同软件甚至不同版本加的壳,脱壳处理的方法都不相同。

望能帮到朋友你!

蝉为什么要脱壳?

一、避开加密,得到完整IAT
OD忽略除INT3外的所有异常(注意同时忽略以下所有异常前面不要选),过两次异常后在CODE段下内存断点,到这里:

代码:--------------------------------------------------------------------------------004B09F0 55 PUSH EBP
004B09F1 8BEC MOV EBP,ESP
004B09F3 83C4 F0 ADD ESP,-10
004B09F6 B8 40074B00 MOV EAX,ssc_serv.004B0740
004B09FB E8 7C5CF5FF CALL ssc_serv.0040667C
004B0A00 A1 70744B00 MOV EAX,DWORD PTR DS:[4B7470]
004B0A05 8B00 MOV EAX,DWORD PTR DS:[EAX]
004B0A07 E8 D43FFBFF CALL ssc_serv.004649E0
004B0A0C A1 70744B00 MOV EAX,DWORD PTR DS:[4B7470]
004B0A11 8B00 MOV EAX,DWORD PTR DS:[EAX]
004B0A13 BA 800A4B00 MOV EDX,ssc_serv.004B0A80 ; ASCII "SSC Service Utility"
004B0A18 E8 BB3BFBFF CALL ssc_serv.004645D8
004B0A1D 8B0D C0754B00 MOV ECX,DWORD PTR DS:[4B75C0] ; ssc_serv.004BC344
004B0A23 A1 70744B00 MOV EAX,DWORD PTR DS:[4B7470]
004B0A28 8B00 MOV EAX,DWORD PTR DS:[EAX]

--------------------------------------------------------------------------------

搜索一下FF 25
找到这里
0040121C - FF25 00D24B00 JMP DWORD PTR DS:[4BD200] ; kernel32.CloseHandle

数据窗口到4BD200看一下:

代码:--------------------------------------------------------------------------------
004BD154 7C96AE65 ntdll.RtlDeleteCriticalSection
004BD158 7C95F2FC ntdll.RtlLeaveCriticalSection
004BD15C 7C95F337 ntdll.RtlEnterCriticalSection
004BD160 7C8284E0 kernel32.InitializeCriticalSection
004BD164 7C828CFC kernel32.VirtualFree
004BD168 7C82BEC9 kernel32.VirtualAlloc
004BD16C 7C82BC09 kernel32.LocalFree
004BD170 7C82BB92 kernel32.LocalAlloc
004BD174 7C82BB6D kernel32.GetTickCount
004BD178 5358C7CE
004BD17C 7C82C07F kernel32.GetVersion
004BD180 44481099
004BD184 7C82B44F kernel32.InterlockedDecrement
004BD188 7C82B43B kernel32.InterlockedIncrement
004BD18C 7C818EA7 kernel32.VirtualQuery
004BD190 7C82DC10 kernel32.WideCharToMultiByte
004BD194 7C82BC7C kernel32.MultiByteToWideChar
004BD198 CDFA8D2A
004BD19C 7C817702 kernel32.lstrcpynA
004BD1A0 F92B6CBC
004BD1A4 21D669D5
004BD1A8 F915B282
--------------------------------------------------------------------------------

输入表被加密了,重新运行程序,不忽略非法访问内存异常,忽略其他异常后大约十四次后,搜索参考字符串,找到到达IAT处理的CALL。

代码:--------------------------------------------------------------------------------00E7EBF6 /EB 0A JMP SHORT 00E7EC02
00E7EBF8 |68 E8F4E700 PUSH 0E7F4E8 ; ASCII "85
00E7EBFD |E8 2A62FEFF CALL 00E64E2C
00E7EC02 \A1 1C37E800 MOV EAX,DWORD PTR DS:[E8371C]
00E7EC07 8B00 MOV EAX,DWORD PTR DS:[EAX]
00E7EC09 E8 0A8CFFFF CALL 00E77818 //这里进去!
00E7EC0E 84C0 TEST AL,AL
00E7EC10 75 0A JNZ SHORT 00E7EC1C
00E7EC12 68 E8F4E700 PUSH 0E7F4E8 ; ASCII "85
--------------------------------------------------------------------------------

进去后,找到IAT处理的CALL

代码:--------------------------------------------------------------------------------
00E77916 50 PUSH EAX
00E77917 56 PUSH ESI
00E77918 E8 9BFCFFFF CALL 00E775B8 〈〈〈〈————这里进去
--------------------------------------------------------------------------------

再进来后开始了比较了,开始PATCH吧

代码:--------------------------------------------------------------------------------
00E775B8 55 PUSH EBP
00E775B9 8BEC MOV EBP,ESP
00E775BB 81C4 F8FEFFFF ADD ESP,-108
00E775C1 53 PUSH EBX
00E775C2 56 PUSH ESI
00E775C3 57 PUSH EDI
00E775C4 8B55 14 MOV EDX,DWORD PTR SS:[EBP+14]
00E775C7 8B5D 08 MOV EBX,DWORD PTR SS:[EBP+8]
00E775CA 8DBD FAFEFFFF LEA EDI,DWORD PTR SS:[EBP-106]
00E775D0 8BC2 MOV EAX,EDX
00E775D2 48 DEC EAX
00E775D3 83E8 02 SUB EAX,2
00E775D6 0FB630 MOVZX ESI,BYTE PTR DS:[EAX]
00E775D9 8B45 10 MOV EAX,DWORD PTR SS:[EBP+10]
00E775DC 83E8 02 SUB EAX,2
00E775DF 0FB600 MOVZX EAX,BYTE PTR DS:[EAX]
00E775E2 3B43 2C CMP EAX,DWORD PTR DS:[EBX+2C]
00E775E5 76 06 JBE SHORT 00E775ED
00E775E7 8943 2C MOV DWORD PTR DS:[EBX+2C],EAX
00E775EA EB 01 JMP SHORT 00E775ED
00E775EC 6933 C08A433B IMUL ESI,DWORD PTR DS:[EBX],3B438AC0
00E775F2 3BF0 CMP ESI,EAX 〈〈〈〈〈〈〈————这里比较四种情况
00E775F4 75 5E JNZ SHORT 00E77654 //这里开始PATCH
00E775F6 EB 01 JMP SHORT 00E775F9
PATCH:
00E775F4 - E9 078A2500 JMP 010D0000 我用内存管理插件申请到的是 10D0000处
--------------------------------------------------------------------------------

我跟踪后发现ESI值有三种情况,BA、88、91,其中BA,91两种情况不加密,88需要改成91才能不加密。

继续PATCH:

代码:--------------------------------------------------------------------------------
010D0000 - 0F84 F375DAFF JE 00E775F9
010D0006 81FE 91000000 CMP ESI,91
010D000C - 0F84 4276DAFF JE 00E77654
010D0012 BE 91000000 MOV ESI,91
010D0017 - E9 3876DAFF JMP 00E77654
--------------------------------------------------------------------------------

下面开始运行吧,跑飞了也没关系,反正我们已经拿到正确的IAT表了。

二、修复CALL XXXXXXXX。

到OEP后开始修复吧,搜索一下89,45,F0,B8,00,07,00,00 到达这里:

代码:--------------------------------------------------------------------------------
00E77188 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
00E7718B B8 00070000 MOV EAX,700
00E77190 E8 B7B3FDFF CALL 00E5254C //就这里改吧

PATCH:
00E77190 - E9 6B8E2200 JMP 010A0043
--------------------------------------------------------------------------------

到10A0000处写上代码

代码:--------------------------------------------------------------------------------
010A0000 0000 ADD BYTE PTR DS:[EAX],AL
010A0002 0000 ADD BYTE PTR DS:[EAX],AL
010A0004 0000 ADD BYTE PTR DS:[EAX],AL
010A0006 0000 ADD BYTE PTR DS:[EAX],AL
010A0008 0000 ADD BYTE PTR DS:[EAX],AL
010A000A BA 00104000 MOV EDX,401000 \
010A000F 803A E8 CMP BYTE PTR DS:[EDX],0E8 |
010A0012 75 14 JNZ SHORT 010A0028 |
010A0014 8B42 01 MOV EAX,DWORD PTR DS:[EDX+1] |
010A0017 03C2 ADD EAX,EDX |
010A0019 05 05000000 ADD EAX,5 |
010A001E 3D 00000601 CMP EAX,1060000 |
010A0023 75 03 JNZ SHORT 010A0028 |
010A0025 EB 0C JMP SHORT 010A0033 |
010A0027 90 NOP |
010A0028 42 INC EDX |
010A0029 81FA 00104B00 CMP EDX,4B1000 |
010A002F ^ 72 DE JB SHORT 010A000F |
010A0031 - EB FE JMP SHORT 010A0031 |
010A0033 8915 00010A01 MOV DWORD PTR DS:[10A0100],EDX |
010A0039 60 PUSHAD |
010A003A FFE2 JMP EDX /

//这段代码是从401000开始扫描代码段,查找CALL XXXXXX.是则跳到原CALL处执行.
010A003C 90 NOP
010A003D 90 NOP
010A003E 90 NOP
010A003F 90 NOP
010A0040 90 NOP
010A0041 90 NOP
010A0042 90 NOP
010A0043 60 PUSHAD //这是从原CALL处返回点,此时EDX值即为指针.
010A0044 B8 54D14B00 MOV EAX,4BD154
010A0049 90 NOP
010A004A 3910 CMP DWORD PTR DS:[EAX],EDX
010A004C 75 23 JNZ SHORT 010A0071
010A004E 8B0D 00010A01 MOV ECX,DWORD PTR DS:[10A0100]
010A0054 C701 FF250000 MOV DWORD PTR DS:[ECX],25FF
010A005A 8941 02 MOV DWORD PTR DS:[ECX+2],EAX
010A005D 61 POPAD
010A005E 90 NOP
010A005F 8B15 00010A01 MOV EDX,DWORD PTR DS:[10A0100]
010A0065 90 NOP
010A0066 90 NOP
010A0067 90 NOP
010A0068 ^ EB BE JMP SHORT 010A0028
010A006A 90 NOP
010A006B 90 NOP
010A006C 90 NOP
010A006D 90 NOP
010A006E 90 NOP
010A006F 90 NOP
010A0070 90 NOP
010A0071 83C0 04 ADD EAX,4
010A0074 3D 00D94B00 CMP EAX,4BD900
010A0079 ^ 7E CF JLE SHORT 010A004A
010A007B ^ EB E0 JMP SHORT 010A005D
010A007D 90 NOP
//这段是修复CALL XXXXX为JMP DWORD PTR DS:[XXXXX]
--------------------------------------------------------------------------------

代码大部分是抄的,里面的NOP是为了留空的,便于以后别的程序用。
在010A000A新建EIP,F9运行一下,OK。

三、
下面就是LODEPE开始DUMP,IMR里填上OEP: 000B09F0 IATRVA: 000BD150 IATSize: 00000730修复一下。
测试一下,正常了。


脱壳,帮帮我,谢谢谢谢
一、避开加密,得到完整IAT OD忽略除INT3外的所有异常(注意同时忽略以下所有异常前面不要选),过两次异常后在CODE段下内存断点,到这里:代码:---004B09F0 55 PUSH EBP 004B09F1 8BEC MOV EBP,ESP 004B09F3 83C4 F0 ADD ESP,-10 004B09F6 B8 40074B00 MOV EAX,ssc...

...我有点担心,希望知道的朋友可以帮帮我诶,谢谢 !
1.你家龟龟长大了,他的壳是会慢慢偏黄的。雌龟甲壳稍带黄色,纵棱明显。所以你家龟龟是个小女孩子。2.是得了黄斑病,你只要看看除了他壳是黄的,四肢也发黄,全身发黄的话。那就是黄斑病。那你就要到花鸟市场里买黄粉来给她治疗。不过,我听起来你家龟龟是长大了为多数,毕竟生病的龟龟是不...

谁帮帮我,我急需安全宣言的句子,谢谢谢你们。
安全第一预防为主 人人讲安全 安全为人人 人人讲安全,事事为安全;时时想安全,处处要安全 安全人人抓,幸福千万家 安全生产 人人有责 安全生产 重在预防 生产必须安全 安全促进生产 落实安全规章制度 强化安全防范措施 安全生产责任重于泰山 安全——我们永恒的旋律 企业负责,行业管理,国家监察,群众...

帮帮我看看我的龟是烂壳还是换壳谢谢
腐甲那么厉害,可怜的草龟这得受多大罪啊。用牙刷刷干净,然后用小刀把烂掉的甲片清理掉出点血没事,然后用碘伏消毒,然后没条件的用眼药膏涂上,有条件的可以买点百多邦敷上面。干养每天泡水的时候在水里喂食,大概半小时吧,然后拿出来擦干碘伏消毒上药,每天重复直至痊愈。这腐甲太厉害可能需要两三个...

谁能帮帮我?请帮帮我!
妈妈:因为我们的身体没有骨骼的支撑,只能爬,又爬不快。所以要这个壳的保护!小蜗牛:毛虫姊姊没有骨头,也爬不快,为什么她却不用背这个又硬又重的壳呢?妈妈:因为毛虫姊姊能变成蝴蝶,天空会保护她啊。小蜗牛:可是蚯蚓弟弟也没骨头爬不快,也不会变成蝴蝶他什么不背这个又硬又重的壳呢?妈妈...

请各位好心的朋友帮帮我。谢谢!!!
你已经是一个母亲,你应该明白这些。你的相亲,不仅是为你自己,也为了你的孩子,你的父母。你需要的 是一个有责任感的男人。希望你从棋局中走出来!但凡在外面打工,年龄大,又是单身,家还不是本地的,你不感觉很奇怪吗?但凡正常的男士都会结婚了,即使不结婚也想安个家啊!但他的家在哪里...

3dsmax中修改器列表里面“壳”的命令的英文是什么?
修改器中的SHELL 就是壳 。主要是用来做双面或者说厚度的时候用的。

...有破壳的蛋,希望有人能帮帮我,让它们都安全地过这个冬天,谢谢...
对于壁虎,可以采取以下措施来帮助它们安全过冬:1. 提供一个适合壁虎生活的环境。壁虎喜欢躲在角落和缝隙中,所以可以在窗户周围放置一些木板、纸箱等遮蔽物,为它们提供足够的隐藏空间。2. 适当提高室内温度。壁虎是冷血动物,体温会随着环境温度的变化而变化。可以通过在窗户周围放置加热器、灯泡等来提高...

我每天都会做梦.而且梦中的梦.谁能帮帮我啊??谢谢谢谢^^^
(1)平常而自然的心态。出现失眠不必过分担心,越是紧张,越是强行入睡,结果适得其反。有些人对连续多天出现失眠更是紧张不安,认为这样下去大脑得不到休息,不是短寿,也会生病。这类担心所致的过分焦虑,对睡眠本身及其健康的危害更大。(2)寻求并消除失眠的原因。造成失眠的因素颇多,前已提及,只要...

...差速器壳体得到的扭矩是多少,请大家帮帮我,谢谢
差速器一个输入端,两个输出端,无论任意一端锁死,另一端施加扭矩,这部分扭矩都会从剩下的第三端流出,所以差速器壳体并不承受扭矩。如果两端锁死,这10牛米则会作用在壳体上无法释放。你可以想象一个管道上用的“三通”结构,堵住一个孔,是无法堵住流出的水的。而堵住两个,压力就会施加在三通上...

当雄县19173361131: 我家乌龟脱壳了,不知是怎么回事.请对此有点了解的人帮帮我,谢谢了. -
穆治复方: 那是因为他长大了,壳不会长所以就像蛇蜕皮一样,我家的也是这样,不用担心啦.

当雄县19173361131: 快来看看我家龟龟是长大脱壳还是腐甲呀 好怕 谢谢谢谢 -
穆治复方: 脱壳

当雄县19173361131: 乌龟脱壳,快来拯救我的小龟龟,谢谢! -
穆治复方: 这是非常严重的腐甲病,如果你会打针就能救治它,如果不会最好送到宠物店或兽医店打青枚素才能医治好,否则无能没力.

当雄县19173361131: 乌龟脱壳 为啥脱掉后表面不光滑 不像原来的壳那么光滑 看着像是烂了 这是为什么 谢谢各位帮忙 -
穆治复方: 蜕壳是这样的,应该不是腐甲,它恢复食欲证明健康问题不大,刚蜕壳是没有原来的光滑干净,但以后会变好,不用理它,建议喂些有营养的东西,例如蚯蚓啊,肉啊,小鱼啊,蔬菜啊,我不知道你养的是什么龟,所以不知道是吃荤还是吃素的, 但是肉喂了有营养,但喂太多长得太快龟龟会变丑的,你自己也要把握一下,要营养均衡~

当雄县19173361131: 龙虾一般要脱壳几次啊拜托了各位 谢谢 -
穆治复方: 7次!

当雄县19173361131: 寻找一个会脱壳的高手,帮小弟解决一个问题!谢谢~!
穆治复方: 实现函数Y表达式,已知变量X和函数Y存放于DS:[20H]和DS:[21H]中.(20分) Y= |1 (X>0)

当雄县19173361131: 脸上受伤了,不想留疤,所以想芦荟胶,但不知道是直接在伤口涂还是脱壳后涂.希望好心人帮帮我 -
穆治复方: 建议你先清洗伤口再涂用,芦荟胶具有消炎杀菌的作用,平时要保持伤口的干洁,不要吃刺激辛辣的食物,尤其是海鲜和蛋黄要忌吃.

当雄县19173361131: 脱壳,帮帮我,谢谢谢谢 -
穆治复方: 一、避开加密,得到完整IAT OD忽略除INT3外的所有异常(注意同时忽略以下所有异常前面不要选),过两次异常后在CODE段下内存断点,到这里:代码:--------------------------------------------------------------------------------004B09F0 55 PUSH EBP004...

当雄县19173361131: 我的巴西彩龟壳烂了大约1/4,正在脱落,怎么治?请知道的帮帮我.谢谢! -
穆治复方: 龟壳上有霉菌了 乌龟不能一直呆在水里的,最好在中间给它弄一个可以爬上去的物体,放在有阳光的地方,但不要全暴露在阳光下,留一块阴凉部分.这样乌龟就可以自己选择晒壳杀菌.

当雄县19173361131: 青蟹要蜕壳十三次才交配吗谢谢了,大神帮忙啊 -
穆治复方: 青蟹要蜕壳十三次才交配!(青蟹一生共蜕十三次壳,最后一次蜕壳属于生殖蜕壳,当雌蟹完成最后一次蜕壳后一个小时左右,开始交配)

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网