小编Blo*_*ood的帖子

什么是HMODULE?

我没什么问题.我已经将DLL加载到进程中(它不是我的),我必须在其中使用函数.我有这个功能的偏移,所以我只需要获取DLL地址并将其添加到偏移量以获得该功能.GetModuleHandle()返回HMODULE变量,但实际上我不知道是什么HMODULE.它是加载DLL的地址还是某种其他标记?

如果它不是加载DLL的地址,我怎么能得到这个地址?我希望我能说清楚.

c++ winapi

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

如何分配STL地图?堆栈还是堆?

我想知道mapc ++中的STL 是否具有连续的内存 - 或者是分配给堆的内存?

c++ memory-management stl map

9
推荐指数
1
解决办法
1万
查看次数

抄袭检测 - 风选算法 - 指纹冲突

我在大文本文件中编写抄袭检测应用程序.在阅读了很多关于它的文章后,我决定使用Winnowing算法(使用Karp-Rabin滚动哈希函数),但我遇到了一些问题.

数据:

我有两个简单的文本文件 - 第一个是较大的文件,第二个是第一个的一个段落.

使用的算法:

这是我用来从所有哈希中选择我的指纹的算法.

void winnow(int w /*window size*/) {
    // circular buffer implementing window of size w
    hash_t h[w];
    for (int i=0; i<w; ++i) h[i] = INT_MAX;
    int r = 0; // window right end
    int min = 0; // index of minimum hash
    // At the end of each iteration, min holds the
    // position of the rightmost minimal hash in the
    // current window. record(x) is called only the
    // first time …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm plagiarism-detection

8
推荐指数
1
解决办法
4927
查看次数

如何通过反汇编从C++函数中获取"lea"指令?

我正在努力学习逆向工程,而且我仍然坚持这个小东西.我有这样的代码:

.text:10003478                 mov     eax, HWHandle
.text:1000347D                 lea     ecx, [eax+1829B8h] <------
.text:10003483                 mov     dword_1000FA64, ecx
.text:10003489                 lea     esi, [eax+166A98h]<------
.text:1000348F                 lea     edx, [eax+11FE320h]
.text:10003495                 mov     dword_1000FCA0, esi
Run Code Online (Sandbox Code Playgroud)

我想知道,它在C或C++中看起来如何?特别是箭头标出的两个指令.HWHandle是变量,它保存从GetModuleHandle()函数返回的值.更有趣的是,这条指令下面的几行dword_1000FCA0用作函数:

.text:1000353C                 mov     eax, dword_1000FCA0
.text:10003541                 mov     ecx, [eax+0A0h]
.text:10003547                 push    offset asc_1000C9E4 ; "\r\n========================\r\n"
.text:1000354C                 call    ecx
Run Code Online (Sandbox Code Playgroud)

这将在我的游戏控制台中绘制此文本.伙计们,你有什么想法吗?

c c++ x86 assembly

4
推荐指数
1
解决办法
1087
查看次数

全局变量和链接器错误

我用OpenGL用C++编写了一个简单的程序.我需要的是在两个文件中有几个全局变量 - main.cppfuncs.cpp - 它们将保持相同的值.当我试图在funcs.h中声明这些变量时(也包含在main.cpp中)我遇到了这个错误:

1>main.obj : error LNK2005: "int myVariable" (?myVariable@@3HA) already defined in funcs.obj
1>Path to my program : fatal error LNK1169: one or more multiply defined symbols found
Run Code Online (Sandbox Code Playgroud)

这很明显,因为它会在funcs.cpp和main.cpp中创建变量.当我尝试以这种方式声明变量时:

//funcs.cpp
int myVariable;

//main.cpp
int myVariable;
Run Code Online (Sandbox Code Playgroud)

而且它们都是全局的我得到与上面完全相同的错误.我感兴趣的是两个变量在相反的文件中都不可见,那么为什么有相同名称的变量是错误的呢?据我所知,没有可能myVariable从main.cpp 引用funcs.cpp并反向.我的第二个问题是 - 解决我的问题的最佳方法是什么,因为我所做的只是重命名了一些变量(有很多变量)并在funcs.cpp中添加函数setNewValue(int newValue),我可以从main.cpp中调用它们但说实话 - 我并不为此感到骄傲.

我使用Microsoft Visual Studio 2012,C++/OpenGL.

c++

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