您的位置:程序门 -> vc/mfc -> 界面



希望高手出现,能不能通过getdc获取别的程序(不是我开发的)dc中的内容,也就是把它当图像取回来


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


希望高手出现,能不能通过getdc获取别的程序(不是我开发的)dc中的内容,也就是把它当图像取回来
发表于:2008-02-14 10:07:07 楼主
希望高手出现,能不能通过getdc获取别的程序(不是我开发的)dc中的内容,也就是把它当图像取回来,别的程序dc在电脑屏上一页显不完,比如,超星显示页面是afcolecontrol42s类,用spy++看的,句柄hwnd是晓得了,怎么把afcolecontrol42s中的一页当图像取回来,高手请说说思路,如果是在内存搜索,怎样找出这一页的信息,比如显存中有没有特别的标志。。。。。
发表于:2008-02-14 10:12:061楼 得分:0
能不能用hook钩drawbmp(好像是)把解密的图像取回,或者直接取解密的数据也行,总之,高手给我一个思路。。。。
发表于:2008-02-14 11:53:042楼 得分:0
枚举窗口,得到窗口的句柄。
通过窗口的句柄,得到dc的句柄。
然后。。。。。。
发表于:2008-02-14 13:37:473楼 得分:0
获取句柄就可以了,不过一刷新就没有了,自己控制
发表于:2008-02-14 17:16:034楼 得分:0
to     jinyt,teli_eurydice:

dc句柄得到了怎么办,怎么取内容呀,我用spy++看是一个afcolecontrol42s类?
发表于:2008-02-14 17:29:395楼 得分:0
就是怎么把图像取出来,好像有通过dc拷贝的函数?
dc.bitblt(0,   0,   rcclient.width(),   rcclient.height(),   &m_memdc,   0,   0,   srccopy);
m_memdc.bitblt(0,   0,   rcclient.width(),   rcclient.height(),   &m_memdc,   4,   0,   srccopy);
m_memdc.fillrect(rcright,&bkbrush);
是不是这几个函数?还有就是由于afcolecontrol42s这个有滚动条,那么没有在屏上显的部分能不能拷贝出来?
发表于:2008-02-14 20:28:546楼 得分:0
没有在屏上显的部分能不能拷贝出来?
拷不出来,因为他自己都还没draw.
发表于:2008-02-15 11:22:287楼 得分:0
用这个api试试

http://www.google.cn/search?hl=zh-cn&q=bitblt%e5%87%bd%e6%95%b0&meta=&aq=0&oq=bitblt
http://www.moon-soft.com/program/bbs/readelite903754.htm
发表于:2008-02-15 20:33:358楼 得分:0
to   jinyt:就是这个函数,很简单,没有显示的部分不能拷贝出来.看样子只有自动控制滚动条拷贝....
还有没有其它好方法,我的屏小,没法显一整页?希望高手出现...
发表于:2008-02-15 22:18:209楼 得分:0
理论上用apihook实现,   hook掉对方的beginpaint,endpaint,   然后在它重画调用beginpaint时返回一个自己创建的超大内存图片的dc作为它画图的dc,   等它画完后调用endpaint时再将你获取内存图片中相对于屏幕上的那块画回屏幕再想法将获取的内存图片传回你的程序.   不过估计只是理论上可行,   也许你还要hook掉其它相关api,   以便在对方重绘过程中获取窗口大小时能返回你超大内存图片的尺寸(省得对方程序为了执行效率而进行过判断,只重画屏幕上显示得出的内容而不是简单重画全部界面让windows来裁剪显示内容)。   想想就麻烦(实现不难,   但足够麻烦)。
发表于:2008-02-15 23:51:3410楼 得分:0
to   jinyt   :
谢谢了,图像是能拷了,但是,由于是afcolecontrol42s(activex),子控件(或者根本就是画上去的)没句柄,怎么控制滚动条的移动,让一页分几次拷完,然后再拼接成一页,现在的问题是计算滚动条要上移多少?
发表于:2008-02-16 00:15:0711楼 得分:0
to   idle_:你所说的"超大内存图片的尺寸"是不是解决我屏小不能显一页的问题?我想能不能这样,用api   hook让它的程序在我的一个大dc中画,比如让他以为我是25寸的显示器(就是类似的道理,),以解决一屏不能显一页的问题,然后再保存,这个思路怎样?新的剖问题来了,他在我的dc中画...要解决好多问题?
发表于:2008-02-16 00:41:5312楼 得分:0
怎么把afcolecontrol42s中的一页当图像取回来。。
是读pdf的吗,干脆找个读pdf的算法得了,自己来读,想要什么内容要什么内容。
发表于:2008-02-16 10:11:4613楼 得分:0
to   jcily:(小声一点):是读超星的,我下了超星66h的,想自己用程序转,顺便学习一下这方面的"外挂程序"...
发表于:2008-02-16 10:13:3314楼 得分:0
我想,无论你怎么加密,你总要让用户看嘛,(我破解水平有点菜,只破解几个小软件).
发表于:2008-02-17 14:05:2415楼 得分:0
但是,由于是afcolecontrol42s(activex),子控件(或者根本就是画上去的)没句柄,怎么控制滚动条的移动,让一页分几次拷完,然后再拼接成一页,现在的问题是计算滚动条要上移多少?


接下来,你的问题是
1。怎么控制滚动条的移动
2。滚动条要上移多少
3。如何无缝的拼接成一页

第1个问题,如果滚动条真是他自己画上去的,那几乎没有什么方法的了。
取得最终的win的句柄,在适合的位置发mouse_ckeck事件,至于所谓的适合的位置,只能分析图像,或者固定窗口(于是滚动条的位置也就固定了)
滚动条是控件的话,取得对应的win的句柄,发mouse_ckeck事件,应该就可以了

第2个问题,也没有什么好的方法,就是滚动一次(用第1个问题的答案),取一张图片。只要有重叠,就不会丢失信息

第3个问题,除非你第二个问题能完美的解决,不然第3个问题,无论如何你也无法回避。其实,在大多数情况下,最后一页不太不可能整数页的。
于是,第3个问题总是存在。至于解决方法嘛,google吧。因为,这实在是个大课题。
发表于:2008-02-17 17:16:3116楼 得分:0
不是获取它dc,应该是你喂个dc给它。让他画在你dc上。比如hook掉wm_paint消息,喂个memory   dc给它。而后你把这个memory   dc的内容存成图像。


快速检索

最新资讯
热门点击