UPX脱壳总结

UPX脱壳总结我近期研究了一下UPX壳的脱壳方法,下面给出脱壳示例:UPX作为一款元老级PE加密壳,在以前的那个年代盛行,著名病毒【熊猫烧香】就是使用这款加密壳。现在我们一起来脱UPX壳来揭开它的神秘面纱。首先,PEiD载入含UPX壳的程序,结果如下:UPX0.89.6-1.02/1.05-1.24->Markus&Laszlo然后用OD载入,OEP如下:

大家好,又见面了,我是你们的朋友全栈君。

我近期研究了一下UPX壳的脱壳方法,下面给出脱壳示例:

UPX作为一款元老级PE加密壳,在以前的那个年代盛行,著名病毒【熊猫烧香】就是使用这款加密壳。
现在我们一起来脱UPX壳来揭开它的神秘面纱。
首先,PEiD载入含UPX壳的程序,结果如下:

UPX脱壳总结

UPX脱壳总结

UPX 0.89.6 – 1.02 / 1.05 – 1.24 -> Markus & Laszlo

然后用OD载入,OEP如下:

UPX脱壳总结

0040E8C0 >  60              PUSHAD
0040E8C1    BE 15B04000     MOV ESI,UPX.0040B015
0040E8C6    8DBE EB5FFFFF   LEA EDI,DWORD PTR DS:[ESI+FFFF5FEB]
0040E8CC    57              PUSH EDI
0040E8CD    83CD FF         OR EBP,FFFFFFFF
0040E8D0    EB 10           JMP SHORT UPX.0040E8E2
0040E8D2    90              NOP
0040E8D3    90              NOP
0040E8D4    90              NOP
0040E8D5    90              NOP
0040E8D6    90              NOP
0040E8D7    90              NOP

然后单步跟踪……直到大跳转:

UPX脱壳总结UPX脱壳总结

UPX脱壳总结

0040EA0F  – E9 B826FFFF     JMP UPX.004010CC
0040EA14    0000            ADD BYTE PTR DS:[EAX],AL
0040EA16    0000            ADD BYTE PTR DS:[EAX],AL
0040EA18    0000            ADD BYTE PTR DS:[EAX],AL
0040EA1A    0000            ADD BYTE PTR DS:[EAX],AL
0040EA1C    0000            ADD BYTE PTR DS:[EAX],AL
0040EA1E    0000            ADD BYTE PTR DS:[EAX],AL
0040EA20    0000            ADD BYTE PTR DS:[EAX],AL

跟踪到这里,发现后面均为填充位,于是跟进跳转:

004010CC    55              PUSH EBP
004010CD    8BEC            MOV EBP,ESP
004010CF    83EC 44         SUB ESP,44
004010D2    56              PUSH ESI
004010D3    FF15 E4634000   CALL DWORD PTR DS:[4063E4]               ; kernel32.GetCommandLineA
004010D9    8BF0            MOV ESI,EAX
004010DB    8A00            MOV AL,BYTE PTR DS:[EAX]
004010DD    3C 22           CMP AL,22
004010DF    75 1B           JNZ SHORT UPX.004010FC
004010E1    56              PUSH ESI
004010E2    FF15 F4644000   CALL DWORD PTR DS:[4064F4]               ; USER32.CharNextA
004010E8    8BF0            MOV ESI,EAX
004010EA    8A00            MOV AL,BYTE PTR DS:[EAX]

发现熟悉的Win32API了,程序入口就在这里了。

果断使用OllyDump,

UPX脱壳总结

EIP作为OEP,脱壳,

UPX脱壳总结

将新PE程序保存为aaa.exe,

UPX脱壳总结

然后运行aaa.exe,

UPX脱壳总结

结果与脱壳前一样,脱壳成功!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157945.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql删除表语句_navicat不小心把表删了

    mysql删除表语句_navicat不小心把表删了MySQL删除表#1、droptable表名:直接删除表,删除较干净彻底.删除表全部数据和表结构,立刻释放磁盘空间,不管是Innodb和MyISAM;删除学生表:droptablestudent;#2、truncatetable表名:truncatetable:是对表进行先删除,再创建(与原表一致)删除表全部数据,保留表结构,立刻释放磁盘空间,不管是Innodb和MyISAM;删除学生表:truncatetablestudent;#3、dele

    2025年8月5日
    1
  • ajax跨域解决方案domain_js解决跨域问题

    ajax跨域解决方案domain_js解决跨域问题简介JSON是一种轻量级的数据传输格式,被广泛应用于当前Web应用中。JSON格式数据的编码和解析基本在所有主流语言中都被实现,所以现在大部分前后端分离的架构都以JSON格式进行数据的传输。JavaScript的同源策略:只有协议+主机名+端口号(如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。比如www.aa.com下的…

    2022年8月24日
    6
  • Redis客户端中文乱码[通俗易懂]

    Redis客户端中文乱码[通俗易懂]Redis客户端中文乱码$redis-cliredis127.0.0.1:6379>set’name”中文’OKredis127.0.0.1:6379>get’name’"\xd6\xd0\xce\xc4"redis127.0.0.1:6379>客户端查看乱码,这个情况我们只要将修改客户端命令行就可以。redis-cli –raw$r…

    2022年5月7日
    231
  • &0xFF是怎么个意思[通俗易懂]

    &0xFF是怎么个意思[通俗易懂]今天看了下同事从网上拷贝的base64加密的代码,看到了这样如下的代码publicstaticStringencode(byte[]data){StringBuildersb=newStringBuilder();intlen=data.length;inti=0;intb1,b2,b3;while(i

    2022年6月15日
    40
  • Oracle中几个关于日期方面的SQL实例

    Oracle中几个关于日期方面的SQL实例

    2021年8月4日
    61
  • 使用R进行倾向得分匹配「建议收藏」

    pacman::p_load(knitr,wakefield,MatchIt,tableone,captioner)set.seed(1234)library(wakefield)df.patients<-r_data_frame(n=250,age(x=30:78,…

    2022年4月12日
    62

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号