首页
社区
课程
招聘
简单算法.高效率压缩PE文件
发表于: 2004-8-17 09:19 7267

简单算法.高效率压缩PE文件

2004-8-17 09:19
7267
[似乎证实是个无效代码, 停止讨论]

;简单算法,高效率压缩PE文件

.586p
.model flat,STDCALL

extrn _lopen: proc,_lcreat: proc
extrn _lread: proc,_lwrite: proc
extrn _lclose: proc
extrn ExitProcess: proc

.data

OldFile db "pe.exe",0
NewFile db "pe.zzz",0

FileData db 0,0

.code

start:
        call        _lopen,offset OldFile,0
        cmp        eax,-1
        jz                ExitProc
        mov        esi,eax
        call        _lcreat,offset NewFile,0
        cmp        eax,-1
        jz                CloseOldFile
        mov        edi,eax

        xor        ebx,ebx
ReadData:
        call        _lread,esi,offset FileData,1
        or                eax,eax
        jz                ReadOver

        movzx        eax,FileData
        or                eax,eax
        jnz        NoZero

        inc        ebx
        cmp        ebx,0ffh
        jnz        ReadData
        xor        eax,eax
        mov        ah,bl
        xchg        ax,word ptr FileData
        call        _lwrite,edi,offset FileData,2
        xor        ebx,ebx
        jmp        ReadData
NoZero:
        or                ebx,ebx
        jnz        NoZeroData
        call        _lwrite,edi,offset FileData,1
        jmp        ReadData
NoZeroData:
        push        eax
        xor        eax,eax
        mov        ah,bl
        mov        word ptr FileData,ax
        call        _lwrite,edi,offset FileData,2
        xor        ebx,ebx
        pop        eax
        mov        FileData,al
        call        _lwrite,edi,offset FileData,1
        jmp        ReadData
ReadOver:
        or                ebx,ebx
        jz                CloseFile
        xor        eax,eax
        mov        ah,bl
        xchg        ax,word ptr FileData
        call        _lwrite,edi,offset FileData,2
        xor        ebx,ebx
CloseFile:
        call        _lclose,edi
CloseOldFile:
        call        _lclose,esi
ExitProc:
        call        ExitProcess,0

end start

从搜毒网转过来的, 我是完全没看懂, 哪位看懂了说一下好吗?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (17)
雪    币: 260
活跃值: (162)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
的确高效率 稍微改改就能做操作系统了
2004-8-17 12:50
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
3
佩服,我没看出压缩也没看出处理PE...变态
2004-8-17 13:55
0
雪    币: 186
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这算什么呢。压缩倒是压缩了,可不能执行了啊。
2004-8-17 14:35
0
雪    币: 556
活跃值: (2298)
能力值: ( LV9,RANK:2130 )
在线值:
发帖
回帖
粉丝
5
晕哦,命苦哦,我也看不出什么压缩的
2004-8-17 14:59
0
雪    币: 241
活跃值: (21)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
好象只是压缩了00,别打我,我是猜的.
2004-8-17 16:48
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
7
表欧我,好像是0ffh
2004-8-17 17:19
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
8
call  _lwrite,edi,offset FileData,2
这个函数是关键,可以代码中没有
ffH不是压缩率或者别的什么,而是文件处理的进度,作者没用文件内存映像,而是把文件按照FFH大小分块.:(
2004-8-17 23:53
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
9
_lwrite是api...寒
2004-8-18 00:02
0
雪    币: 7
活跃值: (30)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
10
最初由 forgot 发布
_lwrite是api...寒


谁说_lwrite是api了?
2004-8-18 00:21
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
11
最初由 Meteo 发布


谁说_lwrite是api了?

上面大大的写道:forgot
在OD ctrl+g _lwrite
2004-8-18 00:29
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
12
The _lwrite function writes data to the specified file. This function is provided for compatibility with 16-bit versions of Windows. Win32-based applications should use the WriteFile function.

UINT _lwrite(

    HFILE hFile,        // handle to file
    LPCSTR lpBuffer,        // pointer to buffer for data to be written  
    UINT uBytes         // number of bytes to write
   );

难道说这段代码里面没有压缩成分?
2004-8-18 01:57
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
13
刚来脱壳版就丢人大大地说...................

太打击我积极性了.............
2004-8-18 01:58
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
14
没那么严重
呵呵,互相讨论,不存在其他什么
2004-8-18 02:31
0
雪    币: 255
活跃值: (266)
能力值: ( LV12,RANK:220 )
在线值:
发帖
回帖
粉丝
15
:D 从字面上理解,他只是把文件中为0的数据移出:D
2004-8-18 07:06
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
16
最初由 nbw 发布
刚来脱壳版就丢人大大地说...................

太打击我积极性了.............

我们要热爱丢脸:D
2004-8-18 08:09
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
应该是重新对齐,不是压缩.
2004-8-18 15:40
0
雪    币: 209
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
刚刚试过,压缩后的PE文件不能运行。
觉得这个程序只是个普通的文件压缩程序。:o
2004-8-19 10:18
0
游客
登录 | 注册 方可回帖
返回
//