| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 13260 人关注过本帖, 1 人收藏
标题:[虚心求教]后台窗口模拟按键;反外挂原理;进程隐藏;和一些WINFORM下的小问题 ...
取消只看楼主 加入收藏
lkwudi222
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-10-27
结帖率:50%
收藏(1)
已结贴  问题点数:20 回复次数:3 
[虚心求教]后台窗口模拟按键;反外挂原理;进程隐藏;和一些WINFORM下的小问题。
问题比较多,麻烦各位了。(以下全部基于C#)
1、
一直想做一个类似按键精灵的软件,前台的很简单,用SendKeys()就可以实现。但请问如何实现非活动窗口(非焦点)的按键模拟?
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
发完帖子后又奋战1小时,终于有了结果,哈哈哈哈,高兴中……
明天晚些时候尝试完美实现出来。HOHO。。。

2、
想问一下现在很多游戏都有自己的反外挂的技术,小弟想了解这个不是为了外挂技术。
反外挂策略除了扫描进程名、窗口名、代码特征以外,会不会很准确的通过API检测到?
使用SendKeys()或者API的SendMessage()有可能被游戏程序捕捉并判定到吗?
按键精灵使用的是API还是更加底层的技术?

3、又是一个敏感的话题,隐藏进程。软件不想让用户或者自主的脚本/软件/病毒关闭,比较有效的方法就是隐藏进程,让别人找不到,结束不了。
在网上搜的结果是:线程注入不适合C#,系统服务云云也不行。希望各位大侠给指条路。

4、一些零散的问题。
我写的小程序窗口比较多,同时打开的情况也时常发生,所以对窗口之间的互相响应怨念比较多
①假设主窗口A是始终显示的,此时需要在A运行时创建另一个窗口B,但想让B是不可见的,怎么实现?
如果不用B.show()窗口B就等于没有创建,我用B.show()后面紧跟B.hide(),但是会闪一下。如何改变思路?

②窗口A创建了窗口B,怎样在A中关闭B?B.close()似乎不能完全结束掉B。

③程序使用了API文件流操作INI文件,没有INI文件时新建它。问题在于创建INI文件的IO命令后需要几秒的延时后才可以写入,我只能用Sleep甚至timer来延时,感觉很别扭。
换句话说,怎样等待IO结束后再执行下面的代码?有没有什么更好的办法解决?

④如何最经济的判断一个可执行文件是否已经运行了至少一个实例。

⑤我想监视进程列表,有没有比timer更省资源的方式?

⑥GUI在某个控件上获得了绘图对象,鼠标点击事件如何做到先清除上一条线,然后再画一条线。刷新似乎不管用,会让新线条也画不上。

⑦我只有一个A.EXE,能不能给定一个变量int1=1,然后在运行时改变int1=2。下次运行A.EXE是,变量str已经==2?
似乎不可能?程序不能修改自身?修改会造成MD5改变? 望赐教。

⑧代码逻辑和调用到达一种什么状态就意味着严重印象了效率?
比如一个很长的字符串,拆成一个一个的分别通过一个10行左右的简单加密代码加密,最后返回一个很长的加密后的字符串,是否算是消耗很多资源?

新人就这20分,希望不要嫌少。。
不管你有没有回答,谢谢你将我的问题看完了,谢谢。

[ 本帖最后由 lkwudi222 于 2009-11-15 04:58 编辑 ]
搜索更多相关主题的帖子: 进程 原理 外挂 后台 WINFORM 
2009-11-15 02:21
lkwudi222
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-10-27
收藏
得分:0 
哇这么快就有人回帖了。
我正郁闷第一个问题呢,昨天晚上改了下代码实现了,可是今天重写又发现了新问题
我一开始是用一个 1.txt - 记事本 的窗口实验,句柄确实获得了,可是没有效果。
然后用一个控件的句柄实现了,然后又用QQ一个聊天窗口的句柄也实现了,很奇妙。
新的问题出来了,如果有2个名字一样的窗口,如何锁定某个窗口的句柄?或者窗口的句柄ID是唯一的?
问题2:
现在很多游戏反外挂会检测API使用情况,如果只使用findwindow和postmess去模拟键盘操作会很容易发现吗?
代码写的迷惑点有助于隐藏程序吗?
问题3:
我就是被帖子里10楼的代码吸引到贵论坛的,呵呵,源码和封装的DLL我都看过了,因为仅仅略懂.NET,C#语言主攻,所以代码看不懂,DLL封装也不能加载,如果有.NET或者直接C#版的就好了。
问题4:
①谢谢。但是如果这个窗口还要用到,还得再把样式改回来。有没有方法能让窗口实际已经运行,但是不调用show呢?
③thead.jion();线程的东西不经常用,能不能给一段简单的代码?谢谢
④非得用到API吗,我只想知道一个EXE是不是已经运行了。用某些操作报错的方法能不能更简单些?
⑦看来只有用外部文件了,呵呵,我这倒是有个类读写INI的,拿出来分享下。
程序代码:
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace Card1
{
    class IniFile
    {
        [DllImport("kernel32")]
        private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
        //参数分别为
        //[section]
        //key=val
        //filePath是物理路径
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);

        public static void Write(string section, string key, string val, string filePath)
        {
            //string encodeval = Jiami.EnCode(val);
            //Jiami.EnCode()是自己写的一个加密类,可以略过这一行
            WritePrivateProfileString(section, key, encodeval, filePath);
        }

        public static string Read(string section, string key, string filePath)
        {
            StringBuilder temp = new StringBuilder(255);
            GetPrivateProfileString(section, key,null,temp,255, filePath);
            //return Jiami.DeCode(temp.ToString());//返回解密后的字符串
            return temp.ToString();
        }
    }
}


[ 本帖最后由 lkwudi222 于 2009-11-15 16:05 编辑 ]
2009-11-15 16:02
lkwudi222
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-10-27
收藏
得分:0 
谢谢楼上两位的回答。
进程注入那个组件我又试了一次发现能引用了,然后在一个Button的事件中中加上
{ 
    HideProcess hideProc = new HideProcess();
    hideProc.HideCurrentProcess();
}
运行起来点击按钮发现无反应,进程还在。
系统是XP SP3。
2009-11-15 22:01
lkwudi222
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-10-27
收藏
得分:0 
以下是引用jedypjd在2009-11-15 22:57:21的发言:

1,如果能引用,用对象浏览器打开看这个dll里面有什么
2,不能引用,用dll导出查看工具看看它导出了什么API
我用
HideProcess hideProc = new HideProcess();
hideProc.HideCurrentProcess();
可以编译成功,代码也能运行到封装的方法上,可是没有实际效果。望解答啊。

还有, 我找到一些方法可以把C#编写的类库注入到某个进程里,已经实现了。可是C#类库没有入口函数,怎么让DLL里的代码运行起来呢?

我想获得魔兽世界窗口的句柄,用PostMessage()只模拟按键。
会被封号么?听说魔兽反外挂很厉害。不过按键精灵似乎没事,自己写的和按键精灵哪个更安全?

[ 本帖最后由 lkwudi222 于 2009-11-17 17:02 编辑 ]
2009-11-16 23:24
快速回复:[虚心求教]后台窗口模拟按键;反外挂原理;进程隐藏;和一些WINFORM下的小 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037138 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved