【问题标题】:how to control one program from other如何从另一个程序控制一个程序
【发布时间】:2013-07-20 03:57:12
【问题描述】:

我需要一点帮助。我知道java和小c++。我见过可以设置玩家生命值和生成汽车等游戏的训练师。我想做类似的东西。

例如,我们正在运行扫雷。当我运行我的 java 程序并单击一个按钮时,它应该调用扫雷函数并且扫雷游戏应该显示我赢了。 所以我的问题是如何与另一个正在运行并通过传递参数调用程序函数的程序建立连接或其他东西。这怎么可能。我听说了逆向工程并下载了一个名为 OllyDBG 的程序。还有一个winject dll注入器。我不知道该怎么办。结合所有这些,我如何制作一个程序。请给我有用的想法或代码或资源。

【问题讨论】:

  • Java 绝对是错误的语言。删除标签。
  • 在我看来,这是一个比您预期的要深得多的领域。谷歌逆向工程。

标签: c++ reverse-engineering dll-injection ollydbg


【解决方案1】:

首先你需要对扫雷器进行逆向工程以找出不同变量的内存位置。请记住,由于上下文,您可能无法运行扫雷的功能,但您可以在其上注入代码来运行这些功能。不过,您可以轻松读取内存。

要注入代码,必须单独组装,然后写入进程虚拟空间。

在 Windows API 中,有几个函数允许打开进程并访问它的内存,但您必须拥有相应的权限。

总结:要做到这一点,你需要学习的第一件事是如何反汇编和理解程序。只有这样你才会明白扫雷是多么容易理解。

顺便说一句:扫雷将地图原始存储在内存中。一个简单的内存检查器将允许您获取它的映射。

【讨论】:

    【解决方案2】:

    嗯,你的开头句子是: “我见过可以设置玩家生命值和生成汽车等游戏的训练师。我想做类似的东西。”

    这是一个非常好的参考代码,可以实现您在 C++ 中谈到的内容 http://www.codeproject.com/Articles/7468/Game-Wizard

    首先加强你的 C++ 技能,然后研究他在那里做什么。

    一般的描述是“受害者”进程内存正在搜索某个值。 通常代表您知道的值的东西 - 例如,您角色的子弹数。 通常首先会找到内存中位置的大列表。 但是随后,您发射了一颗子弹,现在您之前找到的列表(并且只有它!)被搜索以查找新值。 每一步都会丢弃“误报”发现,直到最后您知道您搜索的变量的位置。 完成此操作后,您也可以对其进行更改。

    现在,进入一般主题 - 这种技术只是一种特定的方法,虽然在某些情况下非常有用,但很多时候您需要更强大和不同的工具。

    这是一个非常相似的问题:How can I find the data structure that represents mine layout of Minesweeper in memory?

    我个人认为 IDA 是用于逆向工程和分析应用程序(静态和动态)的绝佳工具。 结合“idapython”(python的ida绑定)感觉势不可挡:)

    逆向工程要求您至少具备目标机器架构的基本知识,例如 x86 指令。

    搜索 IDA 教程以掌握其中的窍门。 有许多“crackme”四处飘荡,这些都是破解(出于教育目的)不同类型的应用程序保护的挑战。 它会教给你很多东西。

    您也可以在 Google 上搜索“面向初学者的逆向工程”。 网络上有大量关于这个主题的资源。一开始信息量可能会令人生畏,因此请确保您找到一个可以帮助您逐步提高技能的基本网站。

    您应该知道的另一个重要术语是“挂钩”。虽然自己制作会教给您最多的东西,但也有一些库可以为您执行此操作。 这个想法是为了控制某个功能。 每当有人调用该函数时,首先将控件传递给您的代码,然后您可以决定要做什么。 例如,您可以决定将此调用简单地记录到文件中并调用原始函数, 或者你可以做更复杂的事情。

    我发现http://tuts4you.com/ 包含许多有用的教程和sn-ps 信息。

    哦,正如人们所说,在这种情况下,Java 不是你的朋友。 C/C++/Assembly 可能是。

    开始一个全新的话题,尤其是逆向工程,一开始是很棘手的,但我可以向你保证,这是非常有益的。

    编辑: 我有个惊喜给你: http://www.uninformed.org/?v=1&a=7

    我只是在谷歌上搜索了逆向工程教程扫雷器;)

    祝你好运:)

    【讨论】:

    • 谢谢 ZeDuS、Nitride 和 Dominik。 (虽然有点晚了:))。我正在从 thelegendofrandom.com 学习汇编语言和逆向工程,并且对这个领域更感兴趣。 (另外,那个惊喜很棒!)
    猜你喜欢
    • 2010-11-05
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 2021-12-10
    相关资源
    最近更新 更多