首页
社区
课程
招聘
[原创]《可执行文件头的变形技术》电子版正式下载(增加了补充说明)
发表于: 2008-6-7 04:13 302238

[原创]《可执行文件头的变形技术》电子版正式下载(增加了补充说明)

2008-6-7 04:13
302238
去年写的书,是什么东西自己看。
随书光盘的内容太大,以后慢慢的发。

对【可执行文件头的变形技术】一书的补充说明
1、使用软件的版本说明
   1.1、IDA     :5.0.0.879(32bit)
   1.2、RadASM  :2.2.0.5;
        RadASM中,当建立一个新的工程文件时,会覆盖同名的汇编文件,这个不能算bug,不过对于我来讲,不太喜欢,所以将这个功能给修改了。具体修改方法如下:
004259F8 68 BE 62 45 00                push    offset FName          ; lpFileName
004259FD 6A 00                         push    0                     ; 修改为   push    1
004259FF 68 20 98 44 00                push    offset szDebug        ; lpKeyName
00425A04 68 FD 93 44 00                push    offset szProject      ; lpAppName
00425A09 E8 70 E6 01 00                call    GetPrivateProfileIntA
00425A0E A3 B2 61 45 00                mov     ReleaseFlag, eax

00426456 C7 05 B2 61 45 00 00 00 00 00 mov     ReleaseFlag, 0        ; 修改为  push    1
00426460 68 C2 63 45 00                push    offset byte_4563C2    ; lpFileName
00426465 68 80 00 00 00                push    80h                   ; nSize
0042646A 68 BE 61 45 00                push    offset dword_4561BE   ; lpReturnedString
0042646F 68 F9 8B 44 00                push    offset Default        ; lpDefault
00426474 68 0E 98 44 00                push    offset aAssembler     ; lpKeyName
00426479 68 0E 98 44 00                push    offset aAssembler     ; lpAppName
0042647E E8 07 DC 01 00                call    GetPrivateProfileStringA

00432262 0B C0                         or      eax, eax
00432264 0F 84 11 07 00 00             jz      loc_43297B            ; 用 nop 充填

004324B7 6A 00                         push    0                     ; dwCreationDisposition
004324B9 68 80 00 00 00                push    80h                   ; lpSecurityAttributes
004324BE 6A 02                         push    2                     ; 修改为  push  4
004324C0 6A 00                         push    0                     ; dwShareMode
004324C2 6A 01                         push    1                     ; dwDesiredAccess
004324C4 68 00 00 00 40                push    40000000h             ; 修改为  push  0C00000000h
004324C9 68 CE 66 45 00                push    offset dword_4566CE   ; lpFileName
004324CE E8 FD 1A 01 00                call    CreateFileA

0043E23A C7 45 F8 00 00 00 00    mov [ebp+var_8], 0
0043E241 C7 45 FC E9 03 00 00    mov [ebp+var_4], 1001  ; 修改为 mov [ebp+var_4], 1


修改了masm.ini,读者打开本书汇编实例的工程文件时,需要使用这个masm.ini。

   1.3、MASM使用了4个版本,这里给出的版本号是Link;
        V 5.12版:ML.EXE TimeDateStamp 1999.03.30 01:45:35 ; Link.exe V 5.012.8087.0
        V 6.00版:ML.EXE TimeDateStamp 2000.03.16 23:20:46 ; Link.exe V 6.00.8168.0
        V 7.10版:ML.exe V 7.10.2179.0  ; Link.exe V 7.10.2179.0
        V 8.00版:ML.EXE V 8.00.50727.218  ; Link.exe V 8.00.50727.42
   这4个版本编译的结果是不同的,书中如果没有特别指出,一般都是使用V 5.12版,附录A2.4.3 Delay-Load Import Tables一节的实例使用了所有的4个版本。
   另外:不管那个版本的Link文件,都将在DOS Header 的提示程序代码后生产一段数据,该数据的大概含义是说明该软件是使用什么版本的MASM编译,在什么时候连接生成的。大概面貌如下:
400080                 dd  5A5E01FFh,  93060BBh,  93060BBh,  93060BBh; 0
400080                 dd   93B7F53h,  93060B8h,  93060BBh,  93060B5h; 4
400080                 dd   9237F35h,  93060C9h,  9224047h,  93060BEh; 8
400080                 dd   936667Ch,  93060BAh; 12
4000B8 Rich            db 'Rich'
4000BC                 dd 93060BBh

   将来也许有一天你和老盖打官司,那么这段信息就是你的罪证。
   这段信息可以通过简单的修改Link.exe文件而去除,这样生产的可执行文件头将更小,更精练。对于各个版本的Link文件修改如下:

   V5.12 Link.exe
445111 8B 8D E0 01 00 00                 mov     ecx, [ebp+1E0h]
445117 89 44 24 10                       mov     [esp+328h+var_318], eax
44511B 03 C8                             add     ecx, eax        ; 去除PE头中垃圾产生,nop这两个字节
44511D 89 8D E4 01 00 00                 mov     [ebp+1E4h], ecx
44511D
445123
445123                   loc_445123:
445123 FF 15 10 11 40 00                 call    ds:_tzset
445129 A0 64 0F 48 00                    mov     al, byte_480F64
44512E 84 C0                             test    al, al
445130 74 09                             jz      short loc_44513B
445130
445132 C7 45 34 FF FF FF+                mov     dword ptr [ebp+34h], 0FFFFFFFFh
445139 EB 0D                             jmp     short loc_445148


  V6.00 Link.exe
445510 8B 8D E0 01 00 00                 mov     ecx, [ebp+1E0h]
445516 89 44 24 10                       mov     [esp+320h+var_310], eax
44551A 03 C8                             add     ecx, eax        ; 去除PE头中垃圾产生,nop这两个字节
44551C 89 8D E4 01 00 00                 mov     [ebp+1E4h], ecx
44551C
445522
445522                   loc_445522:
445522 FF 15 14 11 40 00                 call    ds:_tzset
445528 A0 6C 0F 48 00                    mov     al, byte_480F6C
44552D 84 C0                             test    al, al
44552F 74 09                             jz      short loc_44553A
44552F
445531 C7 45 34 FF FF FF+                mov     dword ptr [ebp+34h], 0FFFFFFFFh
445538 EB 0D                             jmp     short loc_445547


   V7.10 Link.exe
45E569 8B 8D 34 02 00 00                 mov     ecx, [ebp+234h]
45E56F 03 C8                             add     ecx, eax        ; 去除PE头中垃圾产生,nop这两个字节
45E571 89 44 24 2C                       mov     [esp+488h+var_45C], eax
45E575 89 8D 38 02 00 00                 mov     [ebp+238h], ecx
45E57B FF 15 BC 12 40 00                 call    ds:_tzset
45E581 A0 14 B1 4A 00                    mov     al, byte_4AB114
45E586 84 C0                             test    al, al
45E588 74 09                             jz      short loc_45E593
45E588
45E58A C7 45 3C FF FF FF+                mov     dword ptr [ebp+3Ch], 0FFFFFFFFh
45E591 EB 15                             jmp     short loc_45E5A8


  V8.00 Link.exe
469A63 8D 4C 24 1C                       lea     ecx, [esp+4D8h+var_4BC]
469A67 51                                push    ecx
469A68 55                                push    ebp
469A69 E8 12 A5 FF FF                    call    IMAGE::CbBuildProdidBlock(void * *)
469A69
469A6E 8B 95 5C 02 00 00                 mov     edx, [ebp+25Ch]
469A74 03 D0                             add     edx, eax        ; 去除PE头中垃圾产生,nop这两个字节
469A76 89 44 24 38                       mov     [esp+4D8h+var_4A0], eax
469A7A 89 95 60 02 00 00                 mov     [ebp+260h], edx
469A80 FF 15 40 13 40 00                 call    ds:__imp___tzset
469A86 80 3D 52 2A 4A 00+                cmp     bool fReproducible, 0
469A8D 74 05                             jz      short loc_469A94
469A8D
469A8F 89 7D 44                          mov     [ebp+44h], edi
469A92 EB 15                             jmp     short loc_469AA9


2、RepairPE.exe
写这个程序原来的目的是想怎么来修改PE文件头的,包括删除一个节,增加一个节,将一个变形文件头修改为一个正常的文件头。后来写了这本书,就拿来作为书中使用,书写完,写程序的热情也随之完了,就成了现在这个样子了,有朋友希望我能完成这个程序,可实在提不起什么兴趣,即无经济效益,又无乐趣,何苦为之。
这个程序使用的帮助文件为[Visual Studio, Microsoft Portable Executable and Common Object File Format Specification] Revision 8.0 - May 16, 2006,当时没有翻译版本,就直接使用原版的文件了,按F1键可获得在线帮助。

3、IDA的脚本
RepairPE.rar包中包含了3个IDA的脚本,因为同名的问题,脚本运行时会出现如下的提示信息:
“can't rename byte as '××××××' because the name is already used in the program”
不用管这些提示信息,一路下行。
其中建立资源的由两个脚本共同完成,第一个脚本用于建立结构,脚本运行完毕后,需要手工修改两个结构,这些书中都有介绍。修改完成后运行第二个脚本,建立真正的资源信息。

另:Masm的4个版本原来是包括在随书光碟中的,因为太大,就不上传了。同样RadASM也不上传了。

附加:PEHdDistortion.pdf

[课程]Android-CTF解题方法汇总!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (424)
雪    币: 238
活跃值: (326)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
2
这个程序没有写完,也懒得继续写了,这里给出程序的功能足够这本书使用了。
上传的附件:
2008-6-7 04:39
0
雪    币: 238
活跃值: (326)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
3
太大,所以慢慢发
上传的附件:
2008-6-7 05:30
0
雪    币: 124
活跃值: (70)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
很不错的文章,学习了
2008-6-7 05:47
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
还有没有?起得早,全下完了。感谢楼主呀
2008-6-7 06:33
0
雪    币: 110
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
很强大。。。
2008-6-7 08:05
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
"变形技术", 很不错的说。。。
2008-6-7 09:26
0
雪    币: 1185
活跃值: (2041)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
楼主好久没有出现了,还以为前辈们都不会来论坛了
2008-6-7 09:40
0
雪    币: 44229
活跃值: (19960)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
9
章节实例内容转了份阿拉下载FTP:http://bbs.pediy.com/showpost.php?p=243894&postcount=2
/upload/06.07.2008 可执行文件头的变形技术.by.gzgzlxg/PEHdDistortion_gzgzlxg.rar


gzgzlxg 对PE格式研究的真深入!PEDIY技术炉火纯青!

目录




上传的附件:
2008-6-7 09:59
0
雪    币: 44229
活跃值: (19960)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
10
将你的IE缓冲清空,重新下载试试。
2008-6-7 10:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
佩服的五体投地
2008-6-7 10:35
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
12
太好了,致敬!
2008-6-7 10:37
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
下了慢慢看,以前看过你的API绝密档案,很不错。
2008-6-7 10:44
0
雪    币: 207
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
谢谢楼主的共享精神!
2008-6-7 10:45
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
感谢楼主的无私分享...
2008-6-7 11:01
0
雪    币: 7309
活跃值: (3778)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
16
看到书名让我想到了Dwing和Upack
2008-6-7 11:11
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
17
顶~~~

.
2008-6-7 11:12
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
很强大.....
2008-6-7 11:18
0
雪    币: 2181
活跃值: (89)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
麻烦 检测下FTP 好像不能下载

=============
可以下载了 速度很快 铁通 下载速度80
2008-6-7 11:22
0
雪    币: 224
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
20
强大呀!!!
支持~~~
2008-6-7 11:27
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
楼主真是高人,你那个绝密api真的很不错
2008-6-7 11:55
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
下载速度也很快
2008-6-7 11:56
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
极品。。。狂顶
2008-6-7 12:32
0
雪    币: 453
活跃值: (54)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
哈哈  好快呀 终于下完了 LZ辛苦啦
2008-6-7 13:11
0
雪    币: 321
活跃值: (271)
能力值: ( LV13,RANK:1050 )
在线值:
发帖
回帖
粉丝
25
太好了,感谢搂住
2008-6-7 13:17
0
游客
登录 | 注册 方可回帖
返回
//