首页
社区
课程
招聘
[原创]第一阶段第二题 答案提交
发表于: 2007-8-25 22:00 7800

[原创]第一阶段第二题 答案提交

2007-8-25 22:00
7800
问题解决包括三个步骤:
1. 先打造出一个可执行的 exe 文件.
2. 增加菜单.
3. 增加菜单响应.

先说第一步.
1. 找一个正常的 exe,比如第一题的 keygen.exe,用 winhex 截取 PE 头.
2. 用 winhex 将 PE 头,_text,_data,_rdata 连接成一个 PE 文件.
3. 用 Stud_PE 修改打造出的 PE 文件: 主要有 1. PE 目录表项 2. 各 Section 属性 3. 入口点
    等等. 调整后就可以正常执行了.

现在开始第二步.
1. 先用 VC 编辑出需要的菜单资源,导出. 再用 reshack 编辑第一步得出的 exe, 导入菜单项.
2. 用 Stud_PE 编辑 exe, 再次导入菜单项,并把菜单项名字改成"PEDIY.COM",删除 reshack
    增加的那个菜单项 (很奇怪 reshack 增加的那个不行,显示不出; 但是如果不用 reshack 先
    增加一个,Stud_Pe 就没法增加).
3. 现在运行,可以看到菜单正常显示了.

继续最后一步,思路是:
将原窗口消息处理函数里这段代码的 call ds:DefWindowProcA
.text:004012EC                 push    [ebp+arg_C]
.text:004012EF                 push    [ebp+arg_8]
.text:004012F2                 push    [ebp+arg_4]
.text:004012F5                 push    [ebp+arg_0]
.text:004012F8                 call    ds:DefWindowProcA
.text:004012FE                 jmp     short locret_401354
改成调用增加的一个函数,函数代码如下:
LRESULT CALLBACK MyWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
        if ( message == WM_COMMAND && wParam == 0x68)
        {
                MessageBox(NULL,"看雪论坛.珠海金山2007逆向分析挑战赛\r\nhttp://www.pediy.com","pediy",0x40);
                return 0;
        }

        return DefWindowProc(hWnd, message, wParam, lParam);
}

步骤是:
1. 将上述代码编译,将编译后的指令 写到 exe .text 的一个空白区里.
2. 将字符串也写到 .text 空白区里.
3. 用 LordPe 增加 MessageBoxA
4. 调整偏移值.

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
验证通过~~
2007-8-26 11:20
0
雪    币: 109
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
Great!  Thanks~~
2007-8-26 11:36
0
游客
登录 | 注册 方可回帖
返回
//