aardio官方社区

 找回密码
 注册会员

!connect_header_login!

只需一步,快速开始

搜索
查看: 11160|回复: 10

如何捕获类word编辑器的保存命令并执行保存?请求帮助

[复制链接]

1

主题

11

帖子

129

积分

一级会员

Rank: 2

积分
129
发表于 2011-5-29 02:36:51 | 显示全部楼层 |阅读模式
现在我有一个已知的程序A,其使用自定义的文件格式.现在的状况是这样的:
当你进行编辑保存操作的时候,它会阻止这些操作.

如,该程序A自身有一个编辑器窗口(类似word,或者就是word控件),当你进行保存的时候,程序A会阻止你进行保存.
当你复制后,想粘贴,会发现程序A清空了系统剪切板.

在程序A运行的时候,在系统中不能操作复制粘贴.

我期望这样:
能使我的编辑保存操作得到执行.

我的实现思路是这样的:

先查找该程序的句柄,
然后向其发送保存文件的命令(如 "Ctrl + S"),
接下就是保存.(这里需要大家的帮助,如何实现保存功能)

或者,
先查找该程序的句柄,
然后向其发送复制内容的命令(如 "Ctrl + C"),
接下就是保存.(这里需要大家的帮助,如何实现保存功能)

现在的主要障碍是:该程序会捕获系统的复制操作消息,然后清空了剪切板.

请求大家帮助来突破这一障碍.


以下是参考信息:

//等待指定的窗口
窗口句柄, ,线程ID,进程ID = winex.wait( "0 ",,"XTPMainFrame","AfxMDIFrame\d+u",59648 )

//查找指定的窗口
窗口句柄, ,线程ID,进程ID = winex.findExists( "0 ",,"XTPMainFrame","AfxMDIFrame\d+u",59648 )

//查找指定的窗口并激活
窗口句柄, ,线程ID,进程ID = winex.findActivate( "0 ",,"XTPMainFrame","AfxMDIFrame\d+u",59648 )

//等待指定的窗口打开到激活状态
窗口句柄, ,线程ID,进程ID = winex.waitActive( "0 ",,"XTPMainFrame","AfxMDIFrame\d+u",59648 )

//查找指定的主窗口
窗口句柄,线程ID,进程ID = winex.find("XTPMainFrame","版权转让协议" )

//关闭窗口
winex.close(窗口句柄)

//退出窗口程序
winex.quit(窗口句柄)

//修改标题
winex.setText(窗口句柄,"我是新的标题");

//最小化
win.show(窗口句柄,0x6/*_SW_MINIMIZE*/)

//调用API闪烁窗口
FlashWindow = ::User32.api("FlashWindow", "int(int hwndTarget, int bInvert)")
FlashWindow(窗口句柄, 0);
回复

使用道具 举报

20

主题

325

帖子

1945

积分

新手入门

积分
1945
发表于 2011-5-29 10:11:11 | 显示全部楼层

程序需要注册吗?lz可以从反汇编方向考虑

程序需要注册吗?lz可以从反汇编方向考虑
回复

使用道具 举报

1

主题

11

帖子

129

积分

一级会员

Rank: 2

积分
129
 楼主| 发表于 2011-5-29 10:53:01 | 显示全部楼层

不要反汇编.希望能突破不能保存的限制.在此程序运行期间,其他的所有程序执行复制粘贴操作,都会被禁止.而且剪切板也被清空.

不要反汇编.希望能突破不能保存的限制.在此程序运行期间,其他的所有程序执行复制粘贴操作,都会被禁止.而且剪切板也被清空.
回复

使用道具 举报

20

主题

325

帖子

1945

积分

新手入门

积分
1945
发表于 2011-5-29 13:27:50 | 显示全部楼层

[quote][size=2][color=#999999]rotou 发表于 2011-5-29 10:53[/color] [url=forum.php?m

rotou 发表于 2011-5-29 10:53
不要反汇编.希望能突破不能保存的限制.在此程序运行期间,其他的所有程序执行复制粘贴操作,都会被禁止.而且剪 ...

看不到程序,无法测试
回复

使用道具 举报

5

主题

64

帖子

758

积分

荣誉会员

Rank: 8Rank: 8

积分
758
发表于 2011-5-29 15:23:14 | 显示全部楼层

[quote]当你进行保存的时候,程序A会阻止你进行保存[/quote] 你的A程序有保存文件的功能代码吗?如果本身就是个无功能代码的demo程序,想啥办

当你进行保存的时候,程序A会阻止你进行保存


你的A程序有保存文件的功能代码吗?如果本身就是个无功能代码的demo程序,想啥办法都没用(也不是绝对的,高手的话,你可以分析汇编给它DIY一个);
如果是有功能代码,但菜单或按钮被禁用了,可以call功能代码实现调用保存功能,但这也要分析汇编代码的。
山外青山天外天,白云深处有神仙。神仙本是凡人做,只怕凡人志不坚。
回复

使用道具 举报

1

主题

11

帖子

129

积分

一级会员

Rank: 2

积分
129
 楼主| 发表于 2011-5-29 22:48:52 | 显示全部楼层

[i=s] 本帖最后由 rotou 于 2011-5-29 22:50 编辑 [/i] 我看过程序中的几个dll中的函数.发现其中一个有如下几个函数: de

本帖最后由 rotou 于 2011-5-29 22:50 编辑

我看过程序中的几个dll中的函数.发现其中一个有如下几个函数:
decrypt
decrypt_file
decrypt_file_to_memory
encrypt
encrypt_file
encrypt_file_from_memory
因此我认为是可以实现将该程序A自己定义的文件经过解密然后保存成doc的格式的.

但是,我不知道以上所列的函数的参数是什么. 请各位高手给个提示,怎么知道这些函数的接口.

我估计该程序A捕获了保存\复制操作的系统消息,然后阻止了保存.

现在新的解决方法或许是:通过其自带的dll的函数,将其自定义的文件转换成doc文件.
回复

使用道具 举报

1

主题

11

帖子

129

积分

一级会员

Rank: 2

积分
129
 楼主| 发表于 2011-5-30 23:22:39 | 显示全部楼层

誰かこの問題を助けてくださいませんか。 他の解決方法がありますか。 未熟な考えもお気軽に言ってください。

誰かこの問題を助けてくださいませんか。
他の解決方法がありますか。
未熟な考えもお気軽に言ってください。
回复

使用道具 举报

1

主题

51

帖子

636

积分

三级会员

Rank: 4

积分
636
发表于 2011-8-15 14:03:38 | 显示全部楼层

用OD调试,看能破掉不

用OD调试,看能破掉不
回复

使用道具 举报

6

主题

167

帖子

912

积分

荣誉会员

爱生活,爱拉芳。

Rank: 8Rank: 8

积分
912
发表于 2011-8-15 22:49:58 | 显示全部楼层

有工具可以挂起这个程序。再动手可以吗?或者截屏再用ocr程序来识别。

有工具可以挂起这个程序。再动手可以吗?或者截屏再用ocr程序来识别。
专注、深入。
回复

使用道具 举报

5

主题

441

帖子

2420

积分

五级会员

Rank: 8Rank: 8

积分
2420
发表于 2011-8-15 23:03:03 | 显示全部楼层

用aardio中提供的CALL功能,可以调用EXE内部的函数, 或者在EXE内加载DLL中的函数, 并执行该函数返回结果.

用aardio中提供的CALL功能,可以调用EXE内部的函数,
或者在EXE内加载DLL中的函数, 并执行该函数返回结果.



回复

使用道具 举报

13

主题

67

帖子

537

积分

三级会员

Rank: 4

积分
537
发表于 2011-8-16 00:10:00 | 显示全部楼层

hook窗口消息试试。

hook窗口消息试试。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2021-9-25 03:02 , Processed in 0.060368 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表