码迷,mamicode.com
首页 > 其他好文 > 详细

简单尝试UPX脱壳

时间:2020-11-11 16:08:25      阅读:6      评论:0      收藏:0      [点我收藏+]

标签:src   插件   jpg   情况   加壳工具   bsp   实验   使用方法   问题   

又是社团大佬讲的东西,只不过这次没有讲好,大佬中途出了点问题没法脱壳,我就自己研究一下

 

1.前置准备

先去网上找个UPX加壳软件,然后给exe程序加壳(但不是所有程序都支持加壳,也有加壳工具不支持的文件)

我选择的exe是自己用codeblock写的简单的程序

技术图片

链接编译生成try.exe

 

由于网上找到工具加壳要的结果和预期的不一样,就去下载了命令行版的加壳程序upx.exe

使用方法,进入upx.exe目录

技术图片

把try.exe放入当前目录加壳

技术图片

查看upx壳,PEID和DIE都能识别壳

技术图片

技术图片

 

2.OD单步法脱壳

先来查看加壳前的堆栈

技术图片

加壳后的堆栈

技术图片

第一句话就是pushad,把从EAX到EDI寄存器压入堆栈,保存现场(原来的值)

使用单步法,先一步步向下查看,直到找到POPAD语句出现的地方,因为一般UPX壳都是加在原程序的上方

 

单步执行按F8,遇到向下跳转不用管继续按(截图和实验程序无关)

技术图片

遇到向上跳转,选中它下一行代码按F4继续向下执行,不会跳转回去(注意左边黑色箭头代表向上跳转)(截图和实验程序无关)

技术图片

 

我们单步向下运行,然后运行到一个地方的时候会无法继续向下,观察附近的代码,程序入口(OEP)很大可能就在附近

 

当我运行到一个点时,程序会进入循环且会无法继续单步,这时命令窗口就将数据打印出来了,说明程序已执行。

当然一般的UPX壳程序是在POPAD命令以后才出现OEP的,这里情况有点特殊

 

点击插件>ollyDump>脱壳在当前调试的进程,将脱壳的程序保存(只有在找到OEP才能脱壳,不然生成的程序不会成功打印结果)

能成功运行

(待完善)

简单尝试UPX脱壳

标签:src   插件   jpg   情况   加壳工具   bsp   实验   使用方法   问题   

原文地址:https://www.cnblogs.com/echoDetected/p/13765220.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!