upx脱壳日记[通俗易懂]

upx脱壳日记[通俗易懂]一、静态方法upx-d有时候可能会失败,需要切换使用正确的UPX版本。Windows下内置对各UPX版本的第三方图形化界面UPXShell工具,可以方便的切换版本,通过go按钮,可以切换upx加壳版本与脱壳版本二、动态方法(手脱)虽然UPX本身可以脱壳,但是UPX是基于加壳后可执行文件内存储的标识来查找并操作的,由于UPX是开源的,软件保护者可以随意修改这些标识,从而导致官方标准版本的UPX脱壳失败。因为UPX中可以改动的地方太多,所以人们在这种情况下一般采用动态脱壳x86的..

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

一、静态方法

upx -d

有时候可能会失败,需要切换使用正确的UPX版本。Windows下内置对各UPX版本的第三方图形化界面UPXShell工具,可以方便的切换版本,通过go按钮,可以切换upx加壳版本与脱壳版本

   upx脱壳日记[通俗易懂]upx脱壳日记[通俗易懂]

二、动态方法(手脱)

虽然UPX本身可以脱壳,但是UPX是基于加壳后可执行文件内存储的标识来查找并操作的,由于UPX是开源的,软件保护者可以随意修改这些标识,从而导致官方标准版本的UPX脱壳失败。因为UPX中可以改动的地方太多,所以人们在这种情况下一般采用动态脱壳

x86的汇编指令pushad可以轻松将所有寄存器一次性压入栈,UPX使用了这样的方式,被形象的称为“保护现场”,所以将这里的下一步执行后,在esp下硬件读取断点,再次调用就是esp返回的时候,我们直接就可以回到原来的程序执行流

执行过程:

先F8到pushad的下一步,然后在寄存器那边右键ESP,”HW break [ESP]”下硬件断点

upx脱壳日记[通俗易懂]

设置完成后,F9运行,再次中断到一个地址

upx脱壳日记[通俗易懂]

实际上这是一个将栈空间向上清零0x80长度的循环,并不是程序真实代码,后面有一个向前的大跳转,从0x430638跳到0x404ddc,这样就跳到原程序的位置

upx脱壳日记[通俗易懂]

单击这一按jmp指令,然后F4,使程序跳到此指令上执行,然后F8,此时看起来已经很正常了

upx脱壳日记[通俗易懂]

然后对程序dump。在OD中选择“插件”-“OllyDump”-“脱壳正在调试的进程”,然后单击获取EIP作为OEP,再单击脱壳,保存后可完成脱壳

upx脱壳日记[通俗易懂]

此时IDA中和程序执行都已正常

upx脱壳日记[通俗易懂]

upx脱壳日记[通俗易懂]

 

 

 

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/157967.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 什么是渗透_mitotracker deep red

    什么是渗透_mitotracker deep red0x00简介Mimikatz是一款功能强大的轻量级调试神器,通过它你可以提升进程权限注入进程读取进程内存,当然他最大的亮点就是他可以直接从lsass.exe 进程中获取当前登录系统用

  • python 字典最外层使用_python字典底层实现

    python 字典最外层使用_python字典底层实现前言问题1:python中的字典到底是有序还是无序问题2:python中字典的效率如何python字典底层原理在Python3.5以前,字典是不能保证顺序的,键值对A先插入字典,键值对B后插

  • bash找不到命令_bash sed

    bash找不到命令_bash sedCentos7默认安装了openJDK,jps命令不能使用,如果jdk是重新安装指定的版本,默认不需要重新安装jps服务[root@maven-test~]#jpsbash:jps:commandnotfound…解决办法[root@maven-test~]#yuminstall-yjava-1.8.0-openjdk-devel再次执行[root@maven-test~]#jps20755Jps[root@maven-test~]#…

  • js正则表达式语法

    js正则表达式语法

    2021年12月31日
  • DataList事件ItemDataBound与DataBind()

    DataList事件ItemDataBound与DataBind()     学习控件,往往需要知道控件所拥有的事件,比如说DataList控件吧,以前没有用过,但凭着对其它控件(如:Dropdownlist)的认知,想当然就知道只要给数据源绑定数据就OK了。那样控件应该就能显示数据了,虽然这样的想法不无道理,但有时候总有例外,比如Component的combobox,除了要绑定数据源,还要先在绑定前指定文本域名与值域名的属性值,方可显示。查找了MSDN的相关说明如下:地址:http://msdn.microsoft.com/zh-cn/library/system.we

    2022年10月13日
  • sp_executesql和execute的区别

    sp_executesql和execute的区别execute对拼成的字符串SQL是有长度限制的,今天在开发中就遇到这种情况,由于长度过长总是被截取。导致报错!后决定改用sp_executesql。但是sp_executesql对参数类型有限制,我声明的类型为varchar(max),报错:Procedureexpectsparameter@statementoftypentext/nchar/nvarchar。这句话

发表回复

您的电子邮箱地址不会被公开。

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