精华内容
下载资源
问答
  • upx加壳原理

    千次阅读 2016-06-22 17:24:43
    upx的功能有两种描述。一种叫做给程序加壳,另一种...upx的工作原理其实是这样的:首先将程序压缩。所谓的压缩包括两方面,一方面在程序的开头或者其他合适的 地方 插入一段代码,另一方面是将程序的其他地方做压缩

    转自:http://blog.csdn.net/zacklin/article/details/7419001

    upx的功能有两种描述。一种叫做给程序加壳,另一种叫压缩程序。其实这两种表述都是正确的,只是从不同的
    角度 对upx的描述。 
    upx的工作原理其实是这样的:首先将程序压缩。所谓的压缩包括两方面,一方面在程序的开头或者其他合适的
    地方 插入一段代码,另一方面是将程序的其他地方做压缩。压缩也可以叫做加密,因为压缩后的程序比较难看
    懂,主要是 和原来的代码有很大的不同。最大的表现也就是他的主要作用就是程序本身变小了。变小之后的程
    序在传输方面有很 大的优势。其次就是在程序执行时,实时的对程序解压缩。解压缩功能是在第一步时插入的
    代码完成的功能。联起来 就是:upx可以完成代码的压缩和实时解压执行。且不会影响程序的执行效率。 
    upx和普通的压缩,解压不同点就算在于upx是实时解压缩的。实时解压的原理可以使用一下图形表示: 
    1==>2==>3==>4==>5==>6  
    假设1是upx插入的代码,2,3,4是压缩后的代码。5,6是随便的什么东西。  
    程序从1开始执行。而1的功能是将2,3,4解压缩为7,8,9。7,8,9就是2,3,4在压缩之前的形式。  
    1==>7==>8==>9==>5==>6  
    
    连起来就是:  
    最初代码的形式就应该是:7==>8==>9==>5==>6 
    用upx压缩之后形式为:1==>2==>3==>4==>5==>6 
    执行时的形式变为:1==>7==>8==>9==>5==>6  
    
    类似的技术还有很多。这样的技术较多的应用于:木马和病毒躲避杀毒软件时,发布的程序防止被反编译或
    破解时。  upx是一种典型的加壳程序或者压缩程序。因此已经有非常成熟的去壳程序或者解压缩程序。
    同时,很多的杀毒软件 也可以识别出加有upx壳的病毒和木马。而一些软件生产场上为了防止被破解所加的
    壳也同时被轻易的破解。在这样 的情况下很多人想出了产生自己的加壳程序的想法。应此很多人都通过改
    编一些成熟的加壳程序来产生自己的加壳程 序。  其实改编upx也是很简单的。因为upx的源代码是公开的
    ,所以可以下载它的源代码来瞧瞧。upx可以压缩很多种类型 的可执行文件。因此如果自己只是想要压缩exe
    程序,则只需要阅读与压缩exe文件相关的内容。这些代码是很少的。  
    
     改写upx一般需要注意一下几点: 
    1、保证修改后的加壳程序不会产生upx产生的特征码。有很多软件可以通过这些特征码识别出程序是经过upx
    加壳的。 
    2、保证加壳之后,程序仍然可以顺利执行。 
    3、在一定程度上保证效率不会下降太多。

    相关链接:

    【新手教程】防査壳、防误报——修改加UPX壳的应用程序

    http://tieba.baidu.com/p/4033827811

    关于加壳原理

    http://blog.sina.com.cn/s/blog_52531e650100lqm3.html


    展开全文
  • UPX加壳原理.rar

    2020-04-05 15:45:05
    UPX加壳原理.rar UPX加壳原理.rar UPX加壳原理.rar UPX加壳原理.rar UPX加壳原理.rar UPX加壳原理.rar
  • 易语言源码易语言UPX加壳原理源码.rar
  • 易语言UPX加壳原理源码,UPX加壳原理,取短路径,取控制台程序返回,CreateProcess,CreatePipe,ReadFile,WriteFile,CloseHandle,PeekNamedPipe,GetExitCodeProcess,GetShortPathNameA
  • UPX手动脱壳

    2020-07-07 20:40:25
    然后就要进行脱壳, 想着手动脱壳 熟悉一下UPX加壳原理。 首先UPX加壳就是压缩原程序的大小。 UPX加壳就是在 原程序头部或者 其他地方插入一段代码,这段代码是用来解析后面被加密的代码(这种加密使原来的代码...

     就是一道逆向的简单脱壳题, 由UPX加的壳。然后就要进行脱壳, 想着手动脱壳 熟悉一下UPX加壳的原理。

    首先UPX加壳就是压缩 原程序的大小。

    UPX加壳就是在 原程序头部或者 其他地方插入一段代码,这段代码是用来解析后面被加密的代码(这种加密使原来的代码量变小)。

     1是插入的代码,234是 被加密的代码,56是其他

    1 2 3 4 5 6
    1 7 8 9 5 6

    789是原代码。

    在程序执行时,通过1处的代码对后面的代码进行解析, 恢复789。

    所以在1处的代码执行完后,后面被加密的代码也被解密完成,接着就是跳转到OEP(程序入口处),就可以进行ollydbg进行脱壳。

    通常是

    pushad

    .

    .

    .

    popad

    .

    jmp...(popad后第一个jmp开始跳到OEP,这也是常用的直接一步跳转到OEP处)

    ESP定律堆栈平衡和单步向下调的 原理都是一样,最终都要确定到此处。

    展开全文
  • 讲述UPX壳的运行原理

    千次阅读 2012-04-01 13:47:38
    加壳软件可分为两类:一类是压缩,一类是保护。压缩的目的是减少程序体积,如ASPack、UPX、PECompact等。保护是为了防止程序被跟踪和调试,如ASProtect、幻影。壳的存在会让我们找不到程序的真实入口点,从而不能...

    加壳软件可分为两类:一类是压缩,一类是保护。压缩的目的是减少程序体积,如ASPack、UPX、PECompact等。保护是为了防止程序被跟踪和调试,如ASProtect、幻影。壳的存在会让我们找不到程序的真实入口点,从而不能正确的分析反汇编程序,也就对程序起到了一定的保护作用。下面我们一起来认识一下一个程序有壳和没有壳的区别以及带UPX壳的一些特征,同时,我们也可以了解一下PE文件的结构。开始之前我们先准备一下工具,具体包括UPX1.24(Win32 console version)、OllyDbg、LordPE,以及自编的VC++小程序(本例中该程序叫dasmtest.exe,无dll,有一个按钮,按下后弹出一个“hello”对话框)。
    这个UPX版本是一个控制台程序,也就是说我们要在DOS或者命令行下使用它。在命令行下将源程序加壳,会看到压缩率、文件格式以及加壳成功的提示,如图1所示。注意UPX命令后面的文件名要带上exe扩展名,不然会报“找不到文件”错误。
    javascript:dcs.images.doResizes(this,0,null); border=0>
    图1
    对于没有加壳的源EXE文件,大小是20KB,加壳后是6.5KB。用LordPE查看两个文件的相关内容,如图2和图3所示。通过两图的比较,我们可以看到加壳后重要的变化有:程序的入口点(EntryPoint)和文件块数(NumberOfSections),当然,像文件对齐(FileAlignment)和映像大小(SizeOfImage)也会有改变。
    javascript:dcs.images.doResizes(this,0,null); border=0>
    图2 源EXE 
     
    图3 加壳后EXE
    而加壳后程序入口点(EntryPoint)的改变就是这个壳困扰我们的地方。我们点LordPE的Sections按钮,查看两个文件的块信息,如图4和图5所示。可以很清楚的对比出,未加壳的源文件拥有的块名称是一个正常的PE文件所有的块名称(注意,如果发布VC++程序的时候选择的是debug版本,则会有reloc节),加壳后很明显的有UPX的痕迹。UPX将重新组织区块,并且VSize(虚拟尺寸)和Roffset(相对偏移)也显得很完整。

     
    图4 源EXE 
     
    图5加壳后EXE
    我们再来看看用OllyDbg进行调试的信息。如图6所示,源EXE程序于00401700正常的入口点(图2中能查看到的信息)开始被调试,模块在dasmtest中(标题栏显示module dasmtest)。加壳后的程序于004069B0入口(图3中能查看到的信息)开始被调试,模块依然显示在dasmtest中(标题栏显示module dasmtest),显然这不是程序的真正入口处,而是一些迷惑我们的信息,要在加壳后的文件中找到真正的入口,我们得跟踪到如图8所示的地址。在00406B08处的“JMP dasmtest.00401700”才会跳到程序的真正入口,跳进去以后,就和我们没加壳的源程序反汇编代码一样了。 
     
    图6 源EXE 
     
    图7 加壳后EXE 
     
    图8 加壳后EXE
    至此,我们可以总结一下UPX壳让程序做了哪些变化:文件大小、程序的入口点、程序区块名称和程序调试信息。
    其实,在OllyDbg中要找出UPX加壳文件的程序真正入口地址还是很简单的,在图7中第一句是PUSHAD,这是壳在保护现场环境,那么在OllyDbg中不需要跟踪,只需向下翻屏幕,看到“POPAD,JMP********”,就是真正的入口点了。我们可以在POPAD的下一句按下F2设置断点,让程序一开始就运行到这里,则前面的所有壳的干扰就可以被我们绕过了
    展开全文
  • 逆向:UPX脱壳

    2020-05-18 14:43:48
    然后,最近部署的蜜罐经常下载UPX加壳的样本。这次就来分析一下。 学习到的东西 利用vim修改十六进制内容 upx脱壳 样本 首先,蜜罐中经常下载的一个文件名称为i。 i样本 文件已经stripped,然后通过string...

    2020/05/18 -

    引言

    本身对加壳这种东西只是知道,只知道可以使用软件进行自动化脱壳,没有具体了解过原理。然后,最近部署的蜜罐经常下载UPX加壳的样本。这次就来分析一下。

    学习到的东西

    1. 利用vim修改十六进制内容
    2. upx脱壳

    样本

    首先,蜜罐中经常下载的一个文件名称为i。

    i样本

    文件已经stripped,然后通过string命令查看,大部分字符串没有什么意义,但可以看到有UPX的标记。
    strings

    在virustotal上检测,可以发现被标记为恶意软件。
    virustotal

    脱壳过程

    在网上搜索关于elf的脱壳,没有找到很多。然后安装了upx命令,yum install upx,并进行脱壳,upx -d i,显示结果如下。

    upx失败

    显示p_info部分被破坏了。
    然后按照提示信息搜索了这个内容。找到了一下两个内容[1][2],一开始看到了[2]文章后,感觉不明所以,不知道他具体是什么意思(后记:在经过脱壳成功后,感觉[2]是从原理上更具体的描述。)
    那么就主要看文章[1]来学习,不过感觉这个文章有些跳跃性,有些地方有些不是很理解,虽然成功了。


    首先,本身在linux下分析,使用vim来进行二进制显示,vim i,进入后使用命令%!xxd来显示十六进制如下,在文件头部位置。

    二进制显示

    可以看到的确如文中所说,这个地方被置0了。
    那么按照文中的思路,找到p_info真正的存储位置,拖到最后。
    p_info位置

    然后对上述位置进行修改。


    修改后

    然后要注意,这个时候直接保存退出vim将文件保存为这种16进制的文本文件,需要重新转换为原始文件,在vim中执行%!xxd -r
    然后保存退出vim。
    执行命令upx -d i,可以看到文件成功脱壳。

    脱壳成功

    再次使用strings来查看。

    mozi

    更多字符

    可以看到很多mozi的字符,然后联想到文章[2]就是分析的这个僵尸网络的样本,同时搜索了相关的内容,发现的确存在这个mozi病毒。再次上传这个病毒到virustotal上,


    结果

    的确显示mozi.m的标识,但是下面引擎的标记并没有显示mozi。

    总结

    本次只是凑巧找到了找到了相应的解决方案,简单了解了脱壳的过程,但是具体原理也不清楚。
    存在如下几个问题:

    1. 为什么修改了这些地方的内容没有影响软件的运行?
    2. 软件加壳的原理又是什么?

    参考

    [1]某IOT蠕虫病毒分析之UPX脱壳实战
    [2]upx-packed-elf-binaries-of-the-peer-to-peer-botnet-family-mozi/

    展开全文
  • 加壳的源代码;著名的UPX程序的源代码,对于学习加壳原理有很大的帮助
  • 1.upx壳的加壳原理及脱壳方法 --UPX压缩壳的工作原理 --脱upx壳--初试--单步追踪 -- 0x01 参考链接 1.单步跟踪法与UPX的脱壳理解 作者: LB919 出处:http://www.cnblogs.com/L1B0/ 如有转载,荣幸之至!请随手...
  • 文章目录前言UPX技术原理应用范围软件使用CTF实战程序查壳UPX脱壳总结 前言 加壳软件分两类: 压缩壳:压缩的目的是减少程序体积,如 ASPack、UPX、PECompact 等; 加密壳:加密是为了防止程序被反编译(反汇编)、...
  • IDA脱Linux下upx

    千次阅读 2019-01-04 16:26:03
    近日,在应急分析木马时发现加了upx壳,直接用linux下upx -d 脱壳不成功,在网上查找时发现没有针对IDA远程脱linux下upx壳的的详细文章,这里就详细写了一下具体过程,文章结尾有用到的加壳样本链接以便于自己尝试。...
  • 解压原理,是加壳工具在文件头里加了一段指令,告诉CPU,怎么才能解压自己。当加壳时,其实就是给可执行的文件加上个外衣。用户执行的只是这个外壳程序。当执行这个程序的时候这个壳就会把原来的程序在内存中解开
  • 下面是分析: 目标:英语会话精灵2.0(topbar.exe)注册机 使用工具:IDA4.15,Softice 程序使用upx加壳,有改动!部分资源经过XOR加密(文件尾部)废话少说,切入正题。 为节省篇幅,只分析其原理:(假设已经知道我们...
  • 这次两道逆向题都用到了base64加密,参看:base64由来、原理及代码实现两道...打开ida,发现有upx加壳,呵!拉到脱壳机脱壳后,再用ida打开 可知flag长度为15,经过了三个函数处理,最后和一个字符串比较,若相...
  • 脱壳_00.exe

    2019-07-31 18:35:36
    然后用OD打开此加壳文件,用upx脱壳的原理就是可以把壳代码想象成一个完整的函数,在刚进入,保存寄存器环境(PUSHAD)的时候下一个断点,然后单步执行,: 由于不清楚447000是个什么东西,因此可以查看内存,...
  • 多层壳

    千次阅读 2005-03-22 03:11:00
    ,认识EXE文件加壳工具的功能,原理。 2,了解常用加壳工具的种类,名称。 3,懂得什么叫加壳。 4,理解什么叫“资源释放”,以及“资源释放”和“脱壳”的区别。 4,学会多层加壳的方法。本文所用工具: 加壳...
  • CRC原理及CRC实现样例 │ ├─Base64 ; Base64实例 │ ├─RSA ; RSA实例 │ │ ├─src ; RSA实例源码 │ │ ├─rsa补充练习 ; RSA补充练习,比书上的简单些 │ │ └─KeyGen ; RSA实例的注册及源码 │ ├─...
  • 中文名: Python灰帽子-黑客与逆向工程师的Python编程之道 原名: Gray Hat Python:Python Programming for Hackers and Reverse Engineers 作者:Justin Seitz ...12.3.4 UPX加壳器 12.3.5 利用PEPyEmu脱UPX壳 ……
  • 16.2 加壳主程序 16.2.1 判断文件是否为PE格式 16.2.2 文件基本数据读入 16.2.3 附加数据读取 16.2.4 输入表处理 16.2.5 重定位表处理 16.2.6 文件的压缩 16.2.7 资源数据处理 16.2.8 区块的融合 16.3 外壳部分编写 ...
  • 《完全掌握加密解密实战超级手册》紧紧围绕软件的加密与解密来进行讲解,在详细讲述加密/解密技术的同时,还介绍了相应的实现原理,并配合案例分析,使读者能够系统、深入地了解加密/解密技术,能够更深层次地理解...
  • 3.1.3 数据加密的原理 77 3.1.4 加密技术与密码分析 79 3.2 Hash算法基础 81 3.2.1 CRC32算法 81 3.2.2 MD5算法 82 3.2.3 SHA算法 85 3.3 对称密码算法基础 87 3.3.1 对称密码算法概述 88 3.3.2 BlowFish算法概述 88...

空空如也

空空如也

1 2
收藏数 27
精华内容 10
关键字:

upx加壳原理