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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java Map集合的详解「建议收藏」

    Java Map集合的详解「建议收藏」一,Map先说一下Map吧~如果程序中存储了几百万个学生,而且经常需要使用学号来搜索某个学生,那么这个需求有效的数据结构就是Map。Map是一种依照键(key)存储元素的容器,键(key)很像下标,在List中下标是整数。在Map中键(key)可以使任意类型的对象。Map中不能有重复的键(Key),每个键(key)都有一个对应的值(value)。一个键(key)和它对应的值构成ma

    2022年5月30日
    34
  • 使用Docker部署MySQL[通俗易懂]

    使用Docker部署MySQL[通俗易懂]在Docker下部署MySQL

    2025年6月25日
    6
  • 浅析Python中bytes和str区别

    本博转载自:Chown-Jane-Y的浅析Python3中的bytes和str类型Python3最重要的新特性之一是对字符串和二进制数据流做了明确的区分。文本总是Unicode,由str类型表示,

    2021年12月29日
    38
  • redisson集成springboot_spring整合redis详解

    redisson集成springboot_spring整合redis详解springboot集成redis非常简单1、引入maven依赖redis包<!–springboot整合redis–><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-redis&lt…

    2022年9月22日
    1
  • Git克隆远端代码到本地「建议收藏」

    1、在桌面上点击鼠标右键,找到clone选项,出现其中URL是你要访问的地址,directory为文件保存的路径。点击OK2、桌面上会生成一个文件夹3、在此文件夹中,点击鼠标右键,找到GitBashHere,进入到如下页面输入命令第一:gitconfig–globaluser.name“zjut_wzc”第二:gitconfig–globaluser.em…

    2022年4月7日
    162
  • pytest parametrize fixture_参数化方法

    pytest parametrize fixture_参数化方法前言当某个接口中的一个字段,里面规定的范围为1-5,你5个数字都要单独写一条测试用例,就太麻烦了,这个时候可以使用pytest.mark.parametrize装饰器可以实现测试用例参数化。官方示

    2022年7月30日
    6

发表回复

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

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