首页
社区
课程
招聘
[原创]PECompact2变形工具
发表于: 2010-8-11 16:45 7838

[原创]PECompact2变形工具

2010-8-11 16:45
7838

标 题: 【原创】PECompact2变形工具
作 者: jgaoabc
时 间: 2010-08-11,15:35

    我采用纯汇编语言做了一个PECompact2的变形工具,适合PECompact2压缩后的变形处理。PECompact2是一个比较优秀的压缩软件,适合DLL和EXE文件的压缩处理,压缩后的文件入口处采用一段经典异常。知道它的原理脱壳是非常方便的。

    改壳处理:我在它的基础上在第一段代码中增加了1k字节的空间,在第一个异常中又增加了一段反调试代码,这段反调试代码出自《软件保护壳技术专题 - 反调试器技术》(http://bbs.pediy.com/showthread.php?t=71113),同时在反调试中又增加了另外一段异常,这段异常代码同样出自《反调试器技术》,编号是FV_VMWare_VMX,大家可以看下说明,注意,在虚拟机里程序是不能执行的。这样就形成了在异常中有反调试,而反调试中又有异常,增加脱壳的难度。

    实现方法:通过CreateFileMappingA和MapViewOfFile函数,把要修改的文件直接映射到内存中进行修改。

    使用方法:该工具在DOS下使用,把要处理的文件放在和工具同一个目录下,命令为:bian.exe EXE/DLL文件名称。PECompact2压缩选项最好采用默认。

    同时附上通过该工具处理过的记事本程序,由于水平有限,难免会出现错误,请大家指教。

    经测试,该工具在Windows 07不能运行,在XP的SP2、SP3以及2003上是可以运行的。


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

上传的附件:
收藏
免费 7
支持
分享
最新回复 (5)
雪    币: 206
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
Windows 7 ~~>_<~~伤心地路过
2010-8-12 16:04
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
纯汇编语言 很想看看了
2010-8-13 10:06
0
雪    币: 314
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
还是可以比较轻松地脱掉的,毕竟pec只是一个压缩壳,没什么代码保护功能。
进入SEH handler后,直接向下查找jmp eax,下断后再单步就能到OEP了,跳过了lz的反调试代码。

不过学习楼主的PEDiy方法,有时间仔细跟踪一下~

另外,在windows 7系统中,不能获得通过命令行输入的文件名,repne   scas byte ptr es:[edi]这一句似乎没有效果……
2010-8-13 10:46
0
雪    币: 394
活跃值: (131)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
WINDOWS 7系统中,repne   scas byte ptr es:[edi]是不能得到文件名。
前面几行修改:
00401000 PEC01.<ModuleEntryPo>  FF15 B9B04000         call dword ptr ds:[<&KERNEL32.GetCommandLineA>]        ; kernel32.GetCommandLineA
00401006                        8BF8                  mov edi,eax
00401008                        83C7 01               add edi,1
0040100B                        33C9                  xor ecx,ecx
0040100D                        803F 22               cmp byte ptr ds:[edi],22
00401010                        75 05                 jnz short PEC01.00401017
00401012                        83C7 02               add edi,2
00401015                        EB 03                 jmp short PEC01.0040101A
00401017                        47                    inc edi
00401018                      ^ EB F3                 jmp short PEC01.0040100D
0040101A                        57                    push edi
0040101B                        E8 08000000           call PEC01.00401028
00401020                        6A 01                 push 1
00401022                        FF15 B5B04000         call dword ptr ds:[<&KERNEL32.ExitProcess>]            ; kernel32.ExitProcess
00401028                        55                    push ebp
00401029                        8BEC                  mov ebp,esp
2010-8-20 10:38
0
雪    币: 1262
活跃值: (755)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
免杀吗?你好坏  
2010-8-20 13:55
0
游客
登录 | 注册 方可回帖
返回
//