小编Xtr*_*osh的帖子

使用字符串作为名称导入文件

可能重复:
Python中的动态模块导入

我打算在不久的某个时候制作一套文件,组织它的最好方法是有一个列表,该列表将位于文件的最顶层,之后将会出现一些荒谬的代码来处理该列表控制的内容及其运行方式.我只想写一次所说的列表,并且列表是这种格式的文件夹和文件名列表:

[(folder/filename, bool, bool, int), (folder/filename, bool, bool, int)]
Run Code Online (Sandbox Code Playgroud)

如你所见,folder/filename是相同的(有点).文件名是最后的文件夹名称.py,但进行导入XXX你不需要导入XXX.py,所以我没有看到这导致问题.

我面临的问题是使用这种方法导入...

for (testName, auto, hardware, bit) in testList:
    print(testName)
    paths = "\\" + testName
    print paths
    addpath(paths)
    sys.modules[testName] = testName # One of a few options I've seen suggested on the net
    print("Path Added")
    test = testName + ".Helloworld()"
    eval(test)
Run Code Online (Sandbox Code Playgroud)

因此,对于我所拥有的每个测试,打印名称,组装包含path("\\testName")的字符串,对于此示例,打印测试路径,然后将路径添加到list(sys.path.append(path)),然后打印以确认它发生,然后组装一个将由eval测试主模块执行的字符串,并最终对其进行评估.

如您所见,我目前必须在顶部有一个导入列表.我不能简单地做导入testName(内容testName是我想导入的模块的名称),因为它会尝试查找一个名为的模块testName,而不是一个名为内容的模块testName.

我已经看到了一些这样做的例子,但在我的情况下找不到哪些工作.如果有人可以真正抛出一大堆代码来完成那将是美妙的.

我还要求我没有挂起,绘制,也没有使用eval,它在一个非常受控制的环境中使用(它循环的列表在.py文件中,所以没有"最终用户"应该一塌糊涂).

python string import path

15
推荐指数
2
解决办法
3万
查看次数

使用注入的DLL从远程进程调用函数

我看到了一个类似但仍然不同的问题,所以只是为了澄清这不是13428881的欺骗(在注入的DLL中调用函数).

我现在所拥有的:一个DLL,注入到目标进程中,显示​​一个消息框并摆弄数学.

我将来想要的是:一个可以操纵和玩弄目标进程内部的DLL.

实现所需操作的下一步是在我注入的进程中调用远程线程中的方法.

让我们举一个例子:我有一个C++应用程序,它有int main,让我们说它看起来像这样:

int PrintText(string text)
{
    cout << text;
    return 1;
}

int main()
{
    while (true)
    {
        PrintText("From the DLL");
    }
}
Run Code Online (Sandbox Code Playgroud)

好的,这很可爱,我的目标应用程序目前正在打印一些文本,而且它似乎非常愉快地这样做.它以令人难以置信的速度向它发送垃圾邮件,但如果我需要的话,我可以使用线程和睡眠等来降低速度.事实是这不是问题,这里的代码没有编译或测试,我也不打算使用这个确切的代码.我实际上正在玩游戏.

现在,假设我创建了一个指向方法PrintText的指针,并且我知道该进程中的地址.我如何在外部调用它,传递参数?

在本地,我相信它看起来像这样:

int i;
int (*PrintSomeText)(string) = PrintText;
Run Code Online (Sandbox Code Playgroud)

然后,我可以使用引用调用此函数,如下所示:

i = operation("Text to be printed", PrintSomeText);
Run Code Online (Sandbox Code Playgroud)

根据我的理论,这应该声明一个名为i的整数,然后定义一个指向返回int的方法的指针,将一个字符串作为参数,指针存储PrintText中指针的值.(或者那种性质的东西).

非常好,所以我可以通过指针调用我自己的函数,这很好,实际上是破解.我真的对这种能力感到惊讶,现在我感觉像是超人.我会去保存一些婴儿或其他东西,brb.

回来,所以现在我想再继续下去,并采取下一步措施.假设我知道该方法位于目标进程中的地址100处(十进制,我可能会以十六进制表示,因为我使用CheatEngine/OllyDBG来查找目标进程中的方法,但对于此示例,我们'保持简单).

我假设我注入的DLL完全拥有自己的空间,它是否有更高的目标进程访问权限?我怎么能找到这个?

谢谢你的时间,乔希

编辑:一个小小的注释,我正在阅读C++教程书,到目前为止它已被证明是非常有用的.我注意到我忘了包含我的操作方法,所以对于遗失的道歉.如果需要,请告诉我.谢谢!

编辑nr 2:我刚刚编写了一些可编译的代码来测试这个,因为我在没有IDE的情况下从书中写下了大部分这个免费的手,而IDE终于自己配置了,所以这里是我目前的代码与...合作

#include "stdafx.h"
#include <iostream>

using namespace std;

int PrintText(char * Text)
{
    cout << Text << endl;
    return 1;
}

int _tmain(int argc, _TCHAR* argv[])
{
    int (*Print)(char*) …
Run Code Online (Sandbox Code Playgroud)

c++ dll code-injection codecave dll-injection

3
推荐指数
1
解决办法
3133
查看次数

在.NET中创建有效的数据包嗅探器

我正在寻找创建我称之为代理的东西,尽管这个定义可能有点不准确.

通常,你有这样的事情:

Client --------- Server
Run Code Online (Sandbox Code Playgroud)

我想要做的是引入代理,没有新的层,如下所示:

Client ----+---- Server
           |
         Proxy
Run Code Online (Sandbox Code Playgroud)

我不想要这个:

Client---Proxy---Server
Run Code Online (Sandbox Code Playgroud)

我知道WinPCap做了类似的事情,但据我所知,这是一个记录不完整的主题.

到目前为止,我已经尝试了一些事情,最值得注意的是在与客户端相同的端口上侦听消息.这导致了从随机应用程序接收到大量垃圾数据包(尽管在特定端口上侦听).我找不到很多建议我正在阅读正确的数据,虽然我相信我已经发现现在,经过一些小的修改.

有没有人知道反对使用这种方法的任何理由?或者有更可持续的方式吗?

.net c# proxy packet

3
推荐指数
2
解决办法
2万
查看次数

C#读取一个byte []并删除垃圾数据

无法在stackoverflow上找到这个,我确实有一个我几个月前写过的例子,但现在也找不到.

基本上我是从客户端向服务器发送byte [],在服务器窗口中显示它,然后计划对其中的数据进行操作.但是,我收到的数据每次都没有被清理,例如:

我发送"ABCDEF"服务器显示"ABCDEF"我发送"GHI"服务器显示"GHIDEF"

我想你可以看到我来自哪里,我只需要一种清理byte []数组的方法,用于这方面的事情.

接下来的步骤就是只读取我打算使用的字节,所以尽管我只使用X量的数据,但实际上我收到的数据比我需要的多得多,而且我需要现在处理最后的额外数据.

任何人都可以建议我如何解决这个问题?

我的代码如下.

客户:

    static void Main(string[] args)
    {

        try
        {
            ASCIIEncoding encoding = new ASCIIEncoding();
            Console.WriteLine("Welcome to Josh's humble server.");
            IPEndPoint ipEnd = new IPEndPoint(IPAddress.Any, 2000);
            Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
            sock.Bind(ipEnd);
            sock.Listen(100);
            Socket clientSock = sock.Accept();
            byte[] mabytes = encoding.GetBytes("Test");
            clientSock.Send(mabytes);
            Console.WriteLine("Hmmm, data sent!");
            Console.ReadLine();
            Console.WriteLine(encoding.GetString(mabytes));
            Console.ReadLine();
            byte[] buffer = encoding.GetBytes("server message");
            while (true)
            {
                clientSock.Receive(buffer);
                Console.WriteLine(encoding.GetString(buffer));
            }


        }
        catch (Exception ex)
        {
            Console.WriteLine(Convert.ToString(ex));
            Console.ReadLine();
        }

    }
Run Code Online (Sandbox Code Playgroud)

服务器:

    static void …
Run Code Online (Sandbox Code Playgroud)

c# sockets

2
推荐指数
1
解决办法
2184
查看次数

获取List <Struct.int>的最小值

我有一个struct包含一些intbool成员的,我希望从列表中获得最低值(实际上是基于A*搜索的路径查找器).

基本上,我的对象看起来像这样:

    public struct Tile
    {
        public int id;
        public int x;
        public int y;
        public int cost;
        public bool walkable;
        public int distanceLeft;
        public int parentid;
    }
Run Code Online (Sandbox Code Playgroud)

我想得到距离最低的物品.列表声明如下:

        List<Structs.Tile> openList = new List<Structs.Tile>();
Run Code Online (Sandbox Code Playgroud)

并以这种方式分配值:

        while (pathFound == null)
        {
            foreach (Structs.Tile tile in map)
            {
                foreach (Structs.Tile tile1 in getSurroundingTiles(Current))
                {
                    if (tile1.x == tile.x && tile1.y == tile.y)
                    {
                        Structs.Tile curTile = tile1;
                        curTile.parentid = Current.id;
                        curTile.distanceLeft = (Math.Abs(tile.x - goalx) + …
Run Code Online (Sandbox Code Playgroud)

c# algorithm search a-star

-1
推荐指数
1
解决办法
1968
查看次数