UPX0.89脱壳+自校验解除 upx 0.89.6脱壳机

【作者】shy88488
【工具】loadPE, Ollydbg,PEID,Import_REC 1.6
【平台】WINXP
【软件名称】桌面提醒精灵5.02(在多特上找到的)
【加壳方式】UPX 0.89.6 - 1.02 / 1.05 - 1.24 ->Markus & Laszlo
【声明】学习之用并无商业企图!
-----------------------------------
【内容】
一.脱壳

-------------PEID查壳------------
UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus& Laszlo
OD载入直接单步向下 不要让他会跳!到达
0086B038 /7407 je shortzmtxjl.0086B041
0086B03A|8903 mov dwordptr ds:[ebx],eax
0086B03C |83C304 addebx,4
0086B03F^|EBD8 jmp shortzmtxjl.0086B019;这个地方回跳了
0086B041 FF9660FB4600 call dword ptrds:[esi+46FB60] ;但是在这边F4不能断下来会飞掉(原因我也不知)
0086B047 8BAE54FB4600 mov ebp,dword ptrds:[esi+46FB54]
0086B04D 8DBE00F0FFFF lea edi,dword ptrds:[esi-1000] ;在这个地方F4断下
0086B053 BB00100000 mov ebx,1000


UPX0.89脱壳+自校验解除 upx 0.89.6脱壳机
继续向下单步走!!
0086B075 58 popeax
0086B076 61 popad
0086B077 8D442480 lea eax,dwordptr ss:[esp-80]
0086B07B 6A00 push 0
0086B07D 39C4 cmpesp,eax
0086B07F^ 75FA jnz shortzmtxjl.0086B07B
0086B081 83EC80 subesp,-80
0086B084- E93F55CFFF jmpzmtxjl.005605C8;到达这边在单步直接到达OEP

---------------jmp zmtxjl.005605C8 到达----------
005605C8 55 pushebp;跳到这里OEP
005605C9 8BEC movebp,esp
005605CB 6AFF push-1
005605CD 6820B37E00 push zmtxjl.007EB320
005605D2 68BC295600 push zmtxjl.005629BC
005605D7 64:A100000000 mov eax,dword ptrfs:[0]
005605DD 50 pusheax
005605DE 64:8925 00000000 movdword ptr fs:[0],esp


loadPE脱壳!

import_REC 修复!没有无效指针!!!
点击程序! 程序一闪而过!自动退出了!!!说明程序存在自校验!!

接下来是解除自校验!

================================================
二.自校验解除
OD载入修复文件!在命令行直接下段bpx ExitProcess!!!(记住大小写区分)
Shief+F9运行!
-------------------------------------------
004FB575 FF15F0425800 call dword ptrds:[<&kernel32.ExitP>;kernel32.ExitProcess;断在这里!查看堆栈信息!
004FB57B 5D popebp
004FB57C C3 retn
-----------堆栈信息--------------------
0012FC80004FB571dumped_.004FB571
0012FC8400000000ExitCode= 0
0012FC88/0012FCF4
0012FC8C|00432454返回到dumped_.00432454 来自 dumped_.004CFC9D;说明这个退出CALL由004CFC9D调过来的。并且004CFC9D可能是由00432454上面的某一个CALL到达的!
0012FC90|00000000

---------crtl+g来到00432454-----------------
00432429 53 pushebx
0043242A E850D80900 call dumped_.004CFC7F
0043242F 83C404 addesp,4
00432432 837D AC00 cmp dword ptr ss:[ebp-54],0
00432436 0F8407000000 jedumped_.00432443; 3
0043243C B801000000 mov eax,1
00432441 EB02 jmp shortdumped_.00432445 ; 2
00432443 33C0 xoreax,eax
00432445 85C0 testeax,eax
00432447 0F840A000000 jedumped_.00432457; 跳过calldumped_.004CFC9D将他改成JNE保存!!!
0043244D 6A00 push 0
0043244F E849D80900 calldumped_.004CFC9D;来到这边向上翻有三个跳
00432454 83C404 addesp,4

修改:

00432447 0F840A000000 jedumped_.00432457;将JE改成JNE保存!!!
运行新文件 依旧自动退出 ! MB还有自校验··

-------------载入新文件crtl+g来到00432454 ------

00432447 /750E jnz shortdumped_.00432457 ; 修改过的在此处下断 重新载入运行,在这边断下
00432449 |90 nop
0043244A |90 nop
0043244B |90 nop
0043244C |90 nop
0043244D |6A00 push 0
0043244F |E849D80900 call dumped_.004CFC9D
00432454 |83C404 addesp,4 ;这里到 向上翻
00432457 E90C000000 jmp dumped_.00432468
0043245C E900000000 jmp dumped_.00432461
---------------再下bpxExitProcess断点Shief+F9运行-------------------

004FB560 55 pushebp
004FB561 8BEC movebp,esp
004FB563 8B4508 moveax,dword ptr ss:[ebp+8]
004FB566 50 pusheax
004FB567 B9381D8200 mov ecx,dumped_.00821D38
004FB56C E80F85FFFF call dumped_.004F3A80
004FB571 8B4D08 movecx,dword ptr ss:[ebp+8]
004FB574 51 pushecx
004FB575 FF15F0425800 call dword ptrds:[<&kernel32.ExitP>;kernel32.ExitProcess;来到这边查看堆栈
004FB57B 5D popebp
004FB57C C3 retn
-----------堆栈
0012FC88004FB571dumped_.004FB571
0012FC8C00000000ExitCode= 0
0012FC90/0012FCF4
0012FC94|00432C99返回到dumped_.00432C99 来自dumped_.004CFC9D;到00432C99处看看
0012FC98|00000000
0012FC9C|0012FCB4
0012FCA0|00000001

----------------来到00432C99处----------
00432C88 33C0 xoreax,eax
00432C8A 85C0 testeax,eax
00432C8C 0F840A000000 jedumped_.00432C9C;跳过下面的CALL
00432C92 6A00 push 0
00432C94 E804D00900 call dumped_.004CFC9D;CALL退出函数
00432C99 83C404 addesp,4
00432C9C 8B5DFC movebx,dword ptr ss:[ebp-4]
00432C9F 85DB testebx,ebx

--------- 修改
00432C8C 0F840A000000 jedumped_.00432C9C;将JE改成JNE,保存··

-------------运行程序----------
可以运行了@!!··呵呵··过程应该蛮详细的吧!

又重新看了一遍我自己写的这篇脱文!觉得这是到目前我写过的最好的文章之一!

虽然脱壳思路清晰,但是其实我对加壳原理什么的还真是不懂!现在也是一点不懂。不过这应该算是一个启蒙吧!让我觉得电脑这东西,万变不离其宗,乖乖学C++去!

  

爱华网本文地址 » http://www.aihuau.com/a/25101010/36953.html

更多阅读

互感器校验仪 全功能互感器校验仪

互感器校验仪——简介 互感器校验仪能在1%额定工作电流下测量电流互感器的误差。在检测过程中仪器能方便地随时进行自校,以保证仪器的精度。关键元器件使用进口组件,质量稳定可靠,广泛用于计量、供电等部门和互感器生产厂家,是开展互感

如何验证MD5校验值 md5值校验工具v3.26

如何验证MD5校验值——简介有时候大家在网上下载的系统镜像iso文件或者某些邮件带有MD5加密算法的文件,为了文件的安全性,也就是为了保证文件没有被别人篡改过,文件发布者(对于系统镜像来说尤其重要)会在文件发布的同时附上MD5校验码、哈

如何进行MD5校验 md5校验工具

如何进行MD5校验——简介    大家有没有注意到下载一些软件,它的信息里标注有MD5码? MD5在软件发布时经常使用,是为了保证文件的正确性,防止一些人盗用程序,加木马或者篡改版权,设计的一套验证系统。每个文件都可以用MD5验证程序算出

关于蒸汽管道安全阀的校验问题 进口蒸汽安全阀

最新《锅炉安全技术监察规程》第十六条在用蒸汽锅炉的安全阀每年至少应校验一次。检验的项目为整定压力、回座压力和密封性等。安全阀的校验一般应在蒸汽锅炉运行状态下进行。如现场校验困难或对安全阀进行修理后,可在安全阀校验台

声明:《UPX0.89脱壳+自校验解除 upx 0.89.6脱壳机》为网友冷艳女王分享!如侵犯到您的合法权益请联系我们删除