首页
社区
课程
招聘
[原创]第一题答案提交
发表于: 2007-8-23 23:20 7957

[原创]第一题答案提交

2007-8-23 23:20
7957
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 13234
活跃值: (4227)
能力值: ( LV15,RANK:1673 )
在线值:
发帖
回帖
粉丝
2
以前对PE不是很熟悉,不过第二题还是做了,本不想提交的(第一题过了),不过后来发现有些东东有些意思(比如程序中本来就有一个延时载入的MessageBox不用再加入这个Import函数,而且本来就有载入资源,不用再用LoadMenu),就在今天又改了代码,现在才放上来
由于以前没有对PE深入的研究,也很少看PE的文章,这题仅是凭自己的一些对PE不多的认识来做的,所以可能有太多的弯路,过程如下:
1.找了一个PE程序,COPY它的头(1000H长),将三个段文件依次附加在后面(因为这三个段文件本来就是1000H的整倍数也就是4K边界对齐了的,不用再调整),在PE编辑器中改段的大小,和添加段表,清所有TABLE为0
2.OD载入后,分析代码段,由CAll [XXXX] IAT 表,并由此找到整个ImportTable数据,记下地址,退出OD后用PE编辑器改ImportTable
3.OD载入后可以看到 Call API函数,查找分析程序一般情况下程序入口对常用的API调用,找到程序入口地址,再退出OD用PE编辑器改入口地址,这时程序可以运行了
4.在VC中新建一个工程,添加菜单资源,并编译资源文件,生成一个XXX.Res文件.(之前分析被修复程序本身有自动加入菜单地方,其菜单名字为"pediy.com",因此添加菜单资源时取名为"pediy.com",这样加入资源后程序能自动载入,不用再加入LoadMenu代码)
5.用ResourceHacker将XXX.Res文件中的菜单资源添加到修复了的程序中.这时运行程序将会发现菜单已自动显示.
6.添加MessageBoxA的Import函数(这儿没有添加,因为分析程序时发现一个用于错误处理的一个延时载入MessageBox子程序,其地址为004059C4,函数原型应该是:
int MessageBox(
    LPCTSTR lpText,
    LPCTSTR lpCaption,
    UINT uType
);
6.加入Patch代码,以处理菜单命令.在代码段后面找到一个空地,下入以下代码:
00406B80      817C24 08 11010000    cmp     dword ptr [esp+8], 111          ;WM_COMMAND
00406B88    ^ 0F85 47A7FFFF         jnz     004012D5
00406B8E      66:837C24 0C 68       cmp     word ptr [esp+C], 68            ;About命令ID,资源文件自定义时的值
00406B94    ^ 0F85 3BA7FFFF         jnz     004012D5
00406B9A      60                    pushad
00406B9B      6A 40                 push    40
00406B9D      68 8C804000           push    0040808C                         ;  ASCII "pediy"
00406BA2      68 C06B4000           push    00406BC0
00406BA7      E8 18EEFFFF           call    004059C4                          ;延时载入的MessageBox
00406BAC      83C4 0C               add     esp, 0C
00406BAF      61                    popad
00406BB0      33C0                  xor     eax, eax
00406BB2      C2 1000               retn    10

00406BC0  BF B4 D1 A9 C2 DB CC B3 2E D6 E9 BA A3 BD F0  .看雪论坛.珠海金
00406BCF  C9 BD 32 30 30 37 C4 E6 CF F2 B7 D6 CE F6 CC F4  山2007逆向分析挑
00406BDF  D5 BD C8 FC 0D 0A 68 74 74 70 3A 2F 2F 77 77 77  战赛..http://www
00406BEF  2E 70 65 64 69 79 2E 63 6F 6D 00                 .pediy.com.

并改 RegisterClass 窗口消息处理入口地址:
0040121A  |.  C745 B4 D5124>mov     dword ptr [ebp-4C], 004012D5           ;原消息处理入口地址
为:
0040121A      C745 B4 806B4000      mov     dword ptr [ebp-4C], 00406B80

到此,整个题目完成.

pediy2-Done.rar
上传的附件:
2007-8-27 00:41
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
3
验证通过~~
2007-8-27 12:55
0
游客
登录 | 注册 方可回帖
返回
//