精华内容
下载资源
问答
  • 推荐使用rpx替代upx的公告

    千次阅读 2019-11-26 17:53:07
    但动态绑定时,upx无法被准确编译,此时官方提出了使用uni.upx2px()方法,用来动态计算。 后来其他几家小程序平台陆续都兼容了rpx机制,rpx不再是微信的专用单位,而成为了这个行业的通用单位。...

    推荐使用rpx替代upx的公告

    分类:uni-app

    rpx upx

    upx在2018年就推出了,其初衷是为了让微信的rpx机制可以跨全端使用。

    在普通css写法里,upx会被编译器编译。但动态绑定时,upx无法被准确编译,此时官方提出了使用uni.upx2px()方法,用来动态计算。

    后来其他几家小程序平台陆续都兼容了rpx机制,rpx不再是微信的专用单位,而成为了这个行业的通用单位。

    最近官方收到很多开发小程序的用户投诉upx不能像rpx那样直接支持动态绑定,还得再使用uni.upx2px方法。

    官方反思了策略,既然微信不可能支持upx的动态绑定,不如我们在App端和H5端来支持rpx的动态绑定。这样rpx就可以全端通用,且支持动态绑定,不再需要uni.upx2px方法。

    从HBuilderX 2.0.5起,已经支持rpx的正常着色和px2rpx的ide代码提示转换功能。

    官方也修改了uni-app文档中关于尺寸单位的介绍,不再推荐upx的使用,而推荐rpx。

    这个策略调整,不影响开发者的已有代码正常运行。

    开发者仍然可以使用upx和uni.upx2px,也可以改用rpx,都可以。没有必要批量调整老代码。但新开发还是应该使用rpx。

    顺便提醒另一个事情,很多开发者对响应式单位依赖太严重了,比如组件高度或字体大小也使用upx/rpx。

    注意只有当你需要某元素的单位要根据屏幕宽度大小变化时,才需要rpx这类动态宽度单位。

    一般情况下高度和字体大小是不应该根据屏幕宽度变化的。

    展开全文
  • UPX外壳

    2006-03-16 00:00:00
    由于使用习惯的关系,我几乎完全模仿aspack的界面来设计这个程序,唯一的遗憾是我无法知道压缩的进度。另外,程序中提供了很多附加的选项,也都是模仿aspack制作的。甚至制作了同exe÷dll÷ocx文件的右键菜单关联。...
  • 一 前言 ...但是对于定制的UPX使用原生UPX无法脱壳的。定制版的UPX一般有以下2种形式: 1将里面的魔术字符串改掉。下图是UPX源码中定义的魔术字以及修改后的例子: 源码中的魔术字 ...

     一 前言

     

     

     

           加固厂商SO的加壳,一般都是采用UPX壳实现的。如果用原生的进行加壳,可以使用原生UPX进行脱壳。但是对于定制的UPX壳使用原生UPX是无法脱壳的。定制版的UPX一般有以下2种形式:

       

           1  将里面的魔术字符串改掉。下图是UPX源码中定义的魔术字以及修改后的例子:

     

                                      源码中的魔术字                                                                                           修改后的例子

                       

                     2 加密算法改掉或数据结构进行更改。  

     

                     这里讨论是如何手脱一个定制的UPX壳,尤其是更改加密算法或者数据结构的定制的UPX壳(以AJM为例)。先看一下脱壳后的样子:

              

                                                                 脱壳前                                                                                                               脱壳后

                           

                     

    二  UPX壳loader

            加壳一般需要加密和解密2个过程,UPX壳也不例外。UPX壳的解密是由 upx loader实现的。在UPX加壳过程中,将loader放在init段,确保loader先获得程序执行的控制权。

            Loader程序是由汇编代码实现的,下面是upx源码中针对arm平台的汇编代码:

                                                              
            在 dynamic段中,init标志值为:0x0C,见下图:
                                                                

            下面是loader在dynamic中的位置:

                                                                          

            当loader开始运行时的步骤如下:

     

                                                                 

            从loader执行流程可以看到如下:

            1、loader是由汇编代码内嵌实现的,因此要解决重定位的问题,所以其中的函数调用都是使用系统调用实现的,比如mmap 以及mprotect等函数。        

            2、loader 程序要将加密数据解密,解密后的数据要覆盖加密数据。

            3、由于upx使用的是压缩算法,因此解密后的数据会比加密的数据大,此时loader程序也会被解密后的数据覆盖,所以loader在解密前要拷贝到内存中执行。

     

    三  linker加载so

           Android系统的linker加载是通过dlopen函数实现的。以4.4源码为例如下:

                                                                   

    四  手脱UPX壳的原理

            前面说加壳一般需要加密和解密2个过程,UPX壳也一样。我们手脱指的是不用研究加密算法,动态脱壳。当upx的loader执行完后,代码也解密完成了,并且加密的数据被解密后的数据覆盖,是否可以直接在这个时间点,将SO从内存中dump出来就可以了呢?

           

     

            确实可以在这个时间点将so从内存中dump出来,但是只有这样是不行的,需要解决以下4个问题:

                 ●  由于此时代码已经重定位完成,dump后plt段等信息已经包含了重定位后的信息,也就是绝对地址,此时静态用IDA打开,很多函数都无法识别。

     

     

                 ●  Segment段中的Load段需要恢复,UPX加密后将原始的load段的大小由原来的加密前的大小改成了加密后的大小,因此需要修复。

                 ●  Segment段中的 dynamic段在文件中的偏移需要修复。UPX将dynamic在文件中的偏移改变了。

                 ●  section 段修复。对于section段的修复论坛里面有很多,这里就不讲了。

     

            因此解决了前面三个问题就可以实现手脱UPX壳了。

     

           

    1 解决重定位的问题

     

            我们的目标是手脱UPX壳,因此我们可以将linker中执行重定位代码nop掉,就是不让linker执行重定位的操作,自然PLT等段中就不会带有重定位的信息。

            通过前面分析linker加载so的过程,soinfo_link_image调用soinfo_relocate实现重定位,下图是源码中相关调用:

                                                                          

           下面是在linker中的对应的汇编代码( 对于如何找到对应汇编代码,只要在IDA中搜索字符串“[ relocating %s plt ]”就可以找到):

     

                                                                                

            直接将上面的对sub_1464函数改成对应的”c0 46 c0 46”(thumb nop指令) 就可以。我们知道如果SO本身又调用了其他的SO,此时会优先加载其他的SO,因此注意nop的时机,避免将不是UPX壳的其它SO重定位也执行不了。

     

    2 如何恢复segment段的load的大小

            我们知道upx壳的loader会对加密的数据进行解密,解密后的数据大小,就是对应load段的大小。

    下面是UPX壳部分数据排列顺序:

                                                        
            下面是对应SO文件init入口数据:
                                                         

           l_info p_info b_info结构大小都为12个字节,如下:

                                                               

            根据上面的loader地址我们知道第一个l_info结构的地址为0x6508。见下图:

                                                                   

     

     

           我们先不关心l_info和p_info结构,我们只关心b_info结构。对于b_info结构,第一个成员是压缩前的大小,第二个成员是压缩后的大小。因此我们可以通过b_info获取到被压缩数据的压缩前的大小:

           从上图可知,第一个b_info结构对应的压缩块:

                   ● 压缩的前大小为:0x154

                   ● 压缩后大小为0xA2

          这个块是对应ehdr和phdr的,我们跳过这个块,到达第一个load段对应的b_info结构。其地址为 :0x652C+0xA2 = 0x65CE,见下图:

                                                                  

           从上图中对应的b_info结构,我们知道第一个load段压缩前大小为:0XDDC58。

     

     

    3 内存dump的时机

            我们必须在UPX解密后,并执行原始SO的init前进行dump。因此我们就在linker执行完第一个init函数,也就是upx的loader函数后开始dump。因此断点的位置下图中的0x274A位置:

     

                                                                       

    4 修复load段

                                                                      

           将上图中第一个load段的0x8B290改为我们之前获得0Xddc58。同时将第二个段的文件偏移和虚拟地址偏移改成一样,都为E5C60。

     

    5 修复dynamic段

           对于UPX壳,原始的dymic段的文件位置被修改了,但是对应加载后的内存的位置并没有修改,因此我们直接将其在文件中的偏移改成与内存偏移一致就OK。如下图: 

                                                                       

     

          将0x8E888改成0xE6888。

     

     

     

    四 总结

            1 将linker中的 soinfo_link_image函数中对soinfo_relocate调用 NOP(避免重定位造成内存dump后IDA分析问题)

            2 在upx init(loader)入口处找到第一个l_info地址,从而获取到第一个b_info结构地址;

            3 跳过第一个b_info对应的压缩数据块,到下一个压缩段的b_info;

            4 从b_info结构中获得压缩前的大小;

            5 执行完upx的解压后,从内存中dump UPX壳;

            6 将第一个load段的文件大小 虚拟地址大小,物理地址大小都改成压缩前的大小;

            7 将第二个段的文件大小,虚拟地址大小,物理地址大小都改成相同;

            8 将dysmic修正(将文件偏移改成与虚拟地址偏移一致);

            9 将sht清0(后者在文件结尾找个位置,同时将sht_size清0)。(也可以根据dynamic修复)。

     

     

    转自:https://bbs.pediy.com/thread-221997.htm

    展开全文
  • 这是一个非常好的非官方 UPX (Ultimate Packer for Executables) Windows 图形界面程序, 而且新版本中已经集成了 UPX 3.08 和 3.09 两个版本, 可让使用者自由选择, 并不需要你的系统中已安装 UPX(我还同时放上 UPX ...
  • 本软体使用Mpress/upx压缩,可能引起杀软误报。 5.Delphi XE2真的很强大,生成一个软体的体积暴增,但对于现在的大硬盘年代,可以忽视了。顺便一提XE2终于可以在WIN7 64位 8GB内存下良好的运行。期待Next One ...
  • 1、canvas无效,出不来 ...在自定义组件下,第二个参数传入组件实例this,若不传,则无法显示 2、canvas绘制图片(drawImage)无效,显示不了 修改前: let imageW=uni.upx2px(456)//图片的尺寸 let imgUrl=this.sha

    1、canvas无效,出不来
    修改前:

    let ctx = uni.createCanvasContext('shareCanvas');
    

    修改后:

    let ctx = uni.createCanvasContext('shareCanvas', this);
    

    在自定义组件下,第二个参数传入组件实例this,若不传,则无法显示

    2、canvas绘制图片(drawImage)无效,显示不了
    修改前:

    let imageW=uni.upx2px(456)//图片的尺寸
    let imgUrl=this.shareData.image//动态的图片,网络路径
    ctx.drawImage(imgUrl,0,0,imageW,imageW)
    ctx.draw();
    

    修改后:

    let imageW=uni.upx2px(456)//图片的尺寸
    let imgUrl=this.shareData.image//动态的图片,网络路径
    uni.downloadFile({
    	url:imgUrl,
    	success(res){
    		ctx.drawImage(res.tempFilePath,0,0,imageW,imageW)
    		ctx.draw();
    	}
    })
    

    uniapp的drawImage绘制图片和微信小程序一样,图片路径不能使用网络路径,必须先下载到本地(使用uni.downloadFile()下载成临时文件路径也行)

    展开全文
  • 这是我自己写的一个简单程序,放到PE工具里观察输入表: 然后我们随便用一个加壳工具...首先用 PE 工具查壳,发现是 UPX(顿时有了信心 ???? ) 用 OD 打开 租号玩.exe ,选择 “否” 我们尝试使用 ESP 定律法脱壳,...

    这是我自己写的一个简单程序,放到PE工具里观察输入表:
    在这里插入图片描述
    然后我们随便用一个加壳工具给原本的程序加壳,再次观察它的输入表内容,发现已经有了变化(少了很多):
    在这里插入图片描述
    所以我们就要尝试脱壳,读取它正确的输入表内容,下面以 “租号玩.exe”(假的) 这个程序为例。首先用 PE 工具查壳,发现是 UPX(顿时有了信心 ? )
    在这里插入图片描述用 OD 打开 租号玩.exe ,选择 “否”
    在这里插入图片描述我们尝试使用 ESP 定律法脱壳,留意 ESP 的值:
    在这里插入图片描述
    单步 F8 一次,发现 ESP 有变化:
    在这里插入图片描述
    数据窗口中跟随 ESP,在这个地址下硬件访问断点:
    在这里插入图片描述
    F9 运行程序,在如下位置断下:
    (留意我下断点的红色地方,这个 jmp 是一个大跳转,很可疑)
    在这里插入图片描述
    记录下 jmp 的地址,到内存窗口看下,发现这个地址位于 .text区段,说明这里就很可能跳转到了 OEP。
    在这里插入图片描述

    在这里插入图片描述

    跟进去看一看,发现果然是 OEP 的样子:
    在这里插入图片描述
    然后我们就可以保存找到的 OEP 位置了,在反汇编窗口右键 - 用 OllyDump 脱壳调试进程 - 脱壳。
    在这里插入图片描述
    再次使用 PE 工具观察,发现已经脱壳成功,而输入表也恢复了正常:
    在这里插入图片描述

    展开全文
  • 我尝试在另一台装有python3.5和要用的包的电脑上使用pyinstaller,按照同样的方法生成exe,运行结果是一样的。我看了看代码中的24行是加载BeautifulSoup命令:from bs4 import BeautifulSoup 谷歌看了半天也找到...
  • <div><p>由于该容器无法以守护状态运行,所以提此PR. <p>The configuration file is generated in the current directory and improve the use of containers <p>change: 1. 配置文件在当前目录下生成 2. 使用...
  • 逆向分析破解一款会务管理软件

    千次阅读 2011-04-06 16:11:00
    声明:请支持使用正版软件,尊重原作者的劳动成果,此文只做技术交流,如有他人利用,产生后果,不负任何责任。          最近破解一款会务管理软件,用PEid侦查外壳,发现是是穿山甲的 外壳,    但是...
  • uni-app里是可使用upx自动适应屏幕,可我一开始写的是Html,后面因为有需要,所以才转去了Uni-app,可是在Html中写好的rem自适应转换px无法使用,在网页上运行是没有问题的,但在真机测试中无法运行,这是为什么呢?...
  • starctf_2019_upxofcpp

    2020-04-30 14:30:53
    Delete以后没有清空指针,存在UAF,但是无法double free,因为程序中使用虚表调用,delete一次后,虚表对应位置已经被清空。因此第二次delete同一个chunk将进入else语句,进而崩溃。由于函数指针放在chunk里,因此,...
  • Python编写一个简单的百度搜索应用

    千次阅读 2018-12-04 23:28:08
    由于天气因素,无法外出,在家闲来无事,使用Python编写一个简单的百度搜索应用。 功能:打开默认浏览器,使用百度进行搜索 Python:2.7.13 第三方库:pyinstaller(打包软件) 工具:upx-3.95-win32(压缩exe...
  • 将exe文件放入PE中查看一下发现exe带有upx壳,无法直接使用ida对其进行反编译,那就先脱一下壳,在 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import ma
  • 目前软件只能下载免费的视频,凡是...关于报毒的问题,软件采用D编写,程序比较大,为了减少体积,使用UPX压缩,如果不放心,可以上传到在线查毒网站检测。 部分分视频没有低分辨率,可以选高一点的分辨率再解析。
  • 软件是试用中心"免费试用" 这一类的自动申请 (当然申请后是否被抽中看你自己的运气了),软件自动会与购买者的淘宝帐号绑定,仅限购买者的淘宝帐号登录使用,非购买者及其他用户无法使用,   注:有些旅游类免费...
  • 加壳会使原有的导入表被加密,导致无法直接通过修改导入表来Hook API,如下图, 使用UPX加壳后,计事本程序,的很多项导入表不见了. 此类软件加壳后将导至IAT钩子失效,导致无法完成相应的API HOOK 解决方法一, 强行...
  • Exeinfope查到有UPX壳 先使用脱壳机进行脱壳 脱壳后载入IDA 发现直接显示太大无法展示 空格转为文本视图 可以很明显知道 下面红框中的就是一段段花指令 查看最后结束的位置 就在0x0044A775 直接IDC...
  • U盘-免疫器 2.0

    2009-03-11 19:17:02
    使用说明: 1.首先选择免疫的目标,可以选择所有本地驱动器,也可以选择指定的盘,比如U盘。 2.然后执行免疫即可。这将在磁盘上建立免疫的目录,此后这个U盘拿到别的机子,即使把自动运行的病毒拷入,也无法激活...
  • 2019_UNCTF BabyXor

    千次阅读 2020-06-04 17:49:25
    UPolyX v0.5 * 作为菜鸡说实话第一见这种壳,以前都是upx壳,所以先用万能脱壳工具FFI进行脱壳 原谅我这个新手看不懂,所以貌似是无法识别这个壳,那就只能手动脱壳 使用esp脱壳大法,这是今天的一个收获之一 将exe拖到...
  • 程序加UPX壳,已对壳信息混淆处理,PEiD无法识别出壳信息。 DLL 依赖情况如图所示。 2、思路 程序用IDA查看的时候,因为有壳混淆后是没法跟下去的。这道题比较简单,破解还是常规思路。。。 1)手动脱UP...
  • 你可以使用一个 exe 封装机支持覆盖数据,以减少文件大小,如 UPX 压缩可执行文件。您可以使用 GIF 动画图片作为启动画面和结束画面。选择多个相同类型的控件,你可以改变它们的属性。您可以锁定控制,使他们...
  • 生成时加入对话框由用户自行决定是否用UPX压缩(以往默认使用UPX压缩,所以误报很正常)。 右键菜单加入热键。 1.1.0: 解决在关闭连发的情况下所有按键都不正常的BUG,优化了脚本,效率提高,(请务必更新)。 该BUG...
  • 于是,动手用c++写了一个小程序(使用了:wxWidgets,boost::bind,upx),功能如下: 1、在存档发生变化时(包括:创建新的存档、修改已有存档),自动将存档拷贝到另一目录。(当然啦,这样备份会越来越多,所以...
  • 于是,动手用c++写了一个小程序(使用了:wxWidgets,boost::bind,upx),功能如下: 1、在存档发生变化时(包括:创建新的存档、修改已有存档),自动将存档拷贝到另一目录。(当然啦,这样备份会越来越多,所以...
  • IMETool 已经推出有几年了,因为我一向比较懒,没有...答:IMETool 使用 upx 压缩过,一些比较敏感的杀毒软件会报其为加壳程序(注意不是报病毒!),从 2.8.1 版开始,不再使用 upx 压缩主程序。 Silence 2009.8.14
  • FreeRes v0.94

    2012-09-04 16:15:48
    ResTools 系列工具软件也经过 ASPack 压缩),令到 ASPack,UPX 之流的软件大行其道,但国内汉化界所面对的问题却越来越严重,因为被压缩的资源无法正常编辑。而在这时候,相继出现了一部分脱壳工具,收到不错的效果...
  • freeRes0.94+注册机

    2008-09-20 10:40:21
    ResTools 系列工具软件也经过 ASPack 压缩),令到 ASPack,UPX 之流的软件大行其道,但国内汉化界所面对的问题却越来越严重,因为被压缩的资源无法正常编辑。而在这时候,相继出现了一部分脱壳工具,收到不错的效果...
  • 使用说明: //----------------------------------------------------------------------------------------- --// // WxhShell V1.0 // //-------------------------------------------------------------------...

空空如也

空空如也

1 2
收藏数 36
精华内容 14
热门标签
关键字:

upx无法使用