首页
社区
课程
招聘
[分享]给ZeroAdd加入拖放文件的功能
发表于: 2005-10-1 23:52 14627

[分享]给ZeroAdd加入拖放文件的功能

2005-10-1 23:52
14627

ZeroAdd(http://www.pediy.com/tools/PE_tools/section/Zero%20Add/zeroadd%201.0.zip)用来增加PE文件的区块很方便,但它不支持文件拖放,不爽。
经过修改使ZeroAdd实现了拖放操作PE文件的功能。

要使窗口支持拖放功能须在窗口创建后,先调用下面的函数:
VOID DragAcceptFiles(

    HWND hWnd,        // handle to the registering window
    BOOL fAccept        // acceptance option
   );
   
hWnd为窗口的句柄
fAccept为TRUE时表示允许拖放,FALSE表示禁止拖放

当窗口收到WM_DROPFILES消息时,通过DragQueryFileA可以得到拖放的文件名。
完了调用DragFinish结束拖放。

具体实现:
因为要用到的三个函数DragAcceptFiles,DragQueryFileA,DragFinish原程序中没有,所以先用IID King加入此三个API函数。此三个函数都在shell32.dll中。
IID King给程序增加了一个1kB的SECTION.我们增加的程序可以写在空白的地方。文件偏移8200h(VA:40b100)往后的地方都没有用到,我们的程序就写在这里。
修改WM_INITDIALOG的默认处理:
.text:0040101F                 push    ebp
.text:00401020                 mov     ebp, esp
.text:00401022                 cmp     [ebp+uMsg], 110h=WM_INITDIALOG
.text:00401029                 jnz     short fwd_401030
.text:0040102B                 jmp     InitDlg=40b100        ;修改此行跳转

InitDlg:
40b100:
        push        1
        push        d,[ebp][8]
        api call        DragAcceptFiles
        ;sinvoke DragAcceptFiles/[ebp+8]/1
        va jmp        40148c
       

.text:00401045                 cmp     [ebp+uMsg], WM_COMMAND
.text:0040104C                 jnz     Other_Msg=40b110        ;修改此行跳转
.text:00401052                 mov     eax, [ebp+wParam]
.text:00401055                 cmp     ax, 2
.text:00401059                 jnz     short loc_4010B3
.text:0040105B                 shr     eax, 10h
.text:0040105E                 or      ax, ax

Other_Msg:
40b110:
        cmp        d,[ebp+0ch],233h        ;233hWM_DROPFILES
        va jnz        401483h
        push        200h
        push        40337ch
        push        0
        push        d,[ebp+10h]
        api call        DragQueryFileA
       
        push        40337ch
        push        3
        push        d,[ebp+8]
        api call        SetDlgItemTextA
        push        d,[ebp+10h]
        api call        DragFinish
       
        ;sinvoke        DragQueryFileA,wParam,0,addr buffer,512
        ;sinvoke        SetDlgItemText,hWnd,IDCT_EDIT,addr buffer
        ;sinvoke        DragFinish,wParam
        va jmp        40148ch

推荐使用MyHiew修改,先在40b100处输入InitDlg和Other_Msg的代码,然后分别修改0040102B和0040104C处的跳转。
已修改过的ZeroAdd可通过如下地址下载:
http://www.pcpages.com/pisces/pediy/patched_zeroadd.zip


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (19)
雪    币: 233
活跃值: (130)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
这种文章很厉害啊
2005-10-2 09:17
0
雪    币: 300
活跃值: (412)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
3
很强,学习学习~
2005-10-2 10:19
0
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
4
学习好文章
2005-10-2 13:49
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
5
学习,真正是pe-diy
2005-10-2 15:20
0
雪    币: 221
活跃值: (137)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
高手出手就是不一样
2005-10-2 21:17
0
雪    币: 214
活跃值: (86)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
PE DIY的高级阶段~~
2005-10-3 10:12
0
雪    币: 50
活跃值: (145)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
8
真正的DIY
2005-10-3 11:35
0
雪    币: 212
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
为什么不自己写一个ZeroAdd?我觉得应该更好一些
2005-10-3 12:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
支持一下!可以!
2005-10-3 17:11
0
雪    币: 214
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
pll大哥的教程里也有这种文章
2005-10-3 19:49
0
雪    币: 221
活跃值: (100)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
12
最初由 cgdxxx 发布
为什么不自己写一个ZeroAdd?我觉得应该更好一些


看一下这个贴:

http://bbs.pediy.com/showthread.php?s=&threadid=17347
2005-10-3 23:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
pediy呵呵
学习了
2005-10-4 14:57
0
雪    币: 212
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
建议有一个开元的项目让大家都能够进行后续开发,这样不需要重复的返汇编分析工作了。
2005-10-5 19:34
0
雪    币: 211
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15

支持
2005-10-5 21:53
0
雪    币: 221
活跃值: (100)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
16
最初由 cgdxxx 发布
建议有一个开元的项目让大家都能够进行后续开发,这样不需要重复的返汇编分析工作了。


刚刚看到nbw大哥的剩余空间查看器源代码非常不错:
http://bbs.pediy.com/showthread.php?s=&threadid=7683
2005-10-6 10:32
0
雪    币: 1790
活跃值: (3914)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
17
谢谢了。先收藏
2005-10-6 23:51
0
雪    币: 191
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
好好学习。
2005-10-8 20:56
0
雪    币: 222
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
高手呀!顶...好贴!
2009-8-17 15:52
0
雪    币: 43
活跃值: (116)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
原链接已经失效,反倒会链接向一个什么网站,中奖神马的。
估计又是啥钓鱼网站吧,接着还要跳转,我看状态栏地址不对,没来得及看就关了。
外链附件最大的坏处就是经不起时间考验,久了可能就无法下载。唉……
不过文章写得不错,值得学习。
有时间就自己按步骤动手了。
2011-3-1 11:56
0
游客
登录 | 注册 方可回帖
返回
//