关于ASPACK(0分)

  • 主题发起人 主题发起人 jingtao
  • 开始时间 开始时间
J

jingtao

Unregistered / Unconfirmed
GUEST, unregistred user!
我看了一下,它的原理是这样的:做一个文件头,然后把EXE压缩添加进去。这些实现都很
简单。但是取出来很有技巧。如果先释放出来保存为文件再运行也没有什么技巧,它是先
解压缩到内存,然后把自己的运行指针指向释放后的地址运行。用DELPHI怎么写呢?要知
用汇编很简单,建立向量入表就可以了。但DELPHI如何做(主要是1K大小)要知道,那个文件
头一次才1KB啊。。。。
 
呵呵,大侠开始讲课了,我来听听 :)
 
呵呵,如果我是大侠就搞定了。我只做到文件头30KB。。。它设计到的知识面太广了,
力不从心啊。
你好像好久没有上QQ了吧:)
 
我要听,接着说
 
好像ASPack的文件头部是1K这么小吧,据我观察应该有5K左右,我觉得要文件头小,必须
解压算法要好,有一个类似aspack的压缩软件upx的解压算法就比aspack好,所以文件头做
得更小,不过碰到大文件aspack的压缩率还是最高的。
btw: upx的源码是公开的(c语言)
http://wildsau.idv.uni-linz.ac.at/mfx/upx.html
 
to jingtao:白天我隐身,晚上我有时会呆在家里陪我的小猫(前段时间养了一只猫,呵)。
 
to 教父>是真的猫吗?
to dxqsoft>是1KB啊。可以自己用DELPHI写一个几K的程序,然后压缩一下就知道了啊。
他们后来出的一个压缩加密器的文件头就变大了。UPX压的东西UPX XX.exe -u就解压了,
然后就可以反汇编了,所以很少用。而ASPACK压的比较难去壳啊。
 
to jingtao:呵呵,当然是真的猫 :)
 
UPX鸭过的东西,你们不知道自己手工处理一下啊,啊。。倒
 
to jungtao:
“然后把EXE压缩添加进去。这些实现都很
简单。”
好象也不是很简单吧,压缩EXE时AsPack要区分不同的segment。
 
haoxg>要么你想复杂化了,要么我想错了:)我的方法是把文件变成流然后把流压缩后添加
进去。我只简单用了一下LHA压缩压缩算法,文件就只有40%了。压缩并加进去要几秒钟,
但取出来解压很快,根本感觉不到什么延迟。
呵呵,有时候我们由于受所学东西的“思维定势影响”,想问题很容易钻牛角尖的。
还是举冯志宏老师的“抛砖引玉”为例,原理竟然是向自己的QQ发信息。不知道端口怎么办?
for iPort:=4000 to 8000 do(UDP协议,无连接也)。。。我当时就想弯了:)(自己对自己说的)
 
to zjlcc>只要看了UPX的代码,手工处理一下也没有用的。
手工处理也有好处,就是把EXE变得更小一点,即把没有用的出错提示信息去掉。当然,
前提是保证你的程序很稳定。
还有一些方法可以把EXE变小:)
1、尽量用API函数来写程序。一个完全用API写的窗口编译后只有8KB
2、尽量把某些函数和过程直接用到程序中,而不是在Uses中引用某个单元。现在的面向
对象语言编译器都有个缺点,就是即使你只用到某个单元的一个函数或者一个结构,编
译器也会把这个单元整个打包编译。
3、调试完毕后把调试信息编译选项去掉再编译一次。这样做也可以减少一定的大小。
 
to: jingtao
我使用一个8.5k的使用upx压缩过的文件,然后用aspack压缩,结果体积变成13.6K,所以我
估计aspack的文件头应该有5K左右大小。
 
呵呵,原因不是这样的,因为你用UPX压缩后再压缩就会这样的。比如说如果你的文件
没有压缩过的话,用LHA算法压缩会减少50%左右。但如果用ASPACK、UPX之类你压缩过后
再用LHA算法压缩反而会变大。我想应该从压缩的原理谈起。因为一般来说就是把重复出现多次的
东西用一个东西代替,比如说ILOVE出现了40次那么可以用一个¥^来代替。但是因为已经
压缩过了,所以多余重复水分都没有了,再压缩反而会变大。当然,这只不过是我的个人之见。
 
to jingtao
比较好的压缩算法应该能处理这一点,如果不能压缩得更小,
最多也只能多几个字节(比如2个),这几个多出来的字节用来
做标记,它说明:这段数据已没有办法压缩的更小,故保持原状。
 
你们压缩过OICQ没有,压后才10来K,可用不了
 
AsPack1.06免费版我用过,解压缩文件头不到4k,因为解压缩另建一Section区,所以不能小于
Nt头中option中内存片的大小,通常是4K字节.可用exescope察看.另我正写一类似软件,也可
察看PE文件.AsPack技术并不太难,但需要详细了解PE文件格式.另解压缩段通常用汇编写成.
如果不另建一Section区,解压缩头可小于4K.
 
呵呵,最近看了一下2。11版本的帮助文件,里面说明的确是1KB。:)
 
接受答案了.
 
后退
顶部