我想在编译时加密/编码一个字符串,以便原始字符串不会出现在已编译的可执行文件中.
我已经看过几个例子,但他们不能把字符串文字作为参数.请参阅以下示例:
template<char c> struct add_three {
enum { value = c+3 };
};
template <char... Chars> struct EncryptCharsA {
static const char value[sizeof...(Chars) + 1];
};
template<char... Chars>
char const EncryptCharsA<Chars...>::value[sizeof...(Chars) + 1] = {
add_three<Chars>::value...
};
int main() {
std::cout << EncryptCharsA<'A','B','C'>::value << std::endl;
// prints "DEF"
}
Run Code Online (Sandbox Code Playgroud)
我不想像它那样单独提供每个角色.我的目标是传递一个字符串文字,如下所示:
EncryptString<"String to encrypt">::value
Run Code Online (Sandbox Code Playgroud)
还有一些像这样的例子:
#define CRYPT8(str) { CRYPT8_(str "\0\0\0\0\0\0\0\0") }
#define CRYPT8_(str) (str)[0] + 1, (str)[1] + 2, (str)[2] + 3, (str)[3] + 4, (str)[4] + 5, (str)[5] + …Run Code Online (Sandbox Code Playgroud) 在Delphi XE6中编译DLL时,它会自动TMethodImplementationIntercept从中导出函数System.Rtti.pas.我试图找到一种方法来避免这种导出,但没有找到任何可以解决问题的配置或编译器指令.
System.Rtti单元几乎无法避免,因为它几乎被delphi中的所有内容间接使用.
在XE6中构建DLL时,有没有办法避免导出此函数?
我试图用LzmaLib的LzmaCompress()和LzmaDecompress()与缓冲,适应提供的例子在这里.
我正在使用~3MB缓冲区进行测试,并且压缩函数似乎工作正常(产生~1.2MB的压缩缓冲区),但是当我尝试解压缩时,它只提取~300字节并返回SZ_ERROR_DATA.
提取的少数字节是正确的,但我不知道为什么它会停在那里.
我的代码:
#include <stdio.h>
#include <stdlib.h>
#include "LzmaLib.h"
void compress(
unsigned char **outBuf, size_t *dstLen,
unsigned char *inBuf, size_t srcLen)
{
unsigned propsSize = LZMA_PROPS_SIZE;
*dstLen = srcLen + srcLen / 3 + 128;
*outBuf = (unsigned char*)malloc(propsSize + *dstLen);
int res = LzmaCompress(
(unsigned char*)(*outBuf + LZMA_PROPS_SIZE), dstLen,
inBuf, srcLen,
*outBuf, &propsSize,
-1, 0, -1, -1, -1, -1, -1);
assert(res == SZ_OK);
*dstLen = *dstLen + LZMA_PROPS_SIZE; …Run Code Online (Sandbox Code Playgroud) 我正在调试windbg中的x86 DLL,特别是一个假定具有以下签名的函数:
bool __cdecl func(LPVOID p1, LPVOID p2, wchar_t* p3, size_t p4, LPVOID p5)
Run Code Online (Sandbox Code Playgroud)
该功能未导出.AFAIK __cdecl应该接收堆栈上的所有参数,并且调用者应该清除堆栈.
但事情并非如此.WinDBG的说,调用约定__cdecl,但第2个参数的传递ecx和edx,就像一个__fastcall功能.函数本身也正在清理堆栈,我认为不应该由__cdecl函数完成.
我试图挂钩该功能但没有成功.我试图做一个绕行功能__cdecl,__fastcall并且都会导致崩溃.
有什么建议?
我有一个 64 位进程需要读取 Wow64 进程的 32 位 PEB。
我可以使用NtQueryInformationProcess,但我意识到 Wow64 进程有两个 PEB(64 位和 32 位)并NtQueryInformationProcess返回与调用者的位数(在我的情况下为64 位)相对应的 PEB,正如@Anders 在此解决方案中所评论的:
这就是我的场景:我试图从 x64 进程内部获取 Wow64 进程的 32 位 PEB。任何涉及改变该场景的建议都是无用的。我也知道这种解决方案不推荐用于生产,这不是我的意图。
有任何想法吗?
提前致谢。
我正在 WinDbg 中调试一个 x86 程序(用 C++/VS2012/静态链接编写),我有它的目标文件。我的兴趣点是这个功能:
static bool isValidToken(const std::string& token)
Run Code Online (Sandbox Code Playgroud)
此函数接收字符串令牌以验证客户端。
我希望能够在调试器中测试它,但要这样做,我必须创建一个std::string这样我才能执行命令:.call isValidToken(<addr_of_string>).
std::string在 WinDbg 中转储和操作相对容易,但是否可以创建它?
我能够劫持其他字符串并更改它以便我可以测试,但它显然有时会使程序崩溃。我正在尝试为该类找到一个静态构造函数,但这真的很难,因为它在很大程度上基于模板。
我有以下配置.gitlab-ci.yml:
stages:
- build
build:
stage: build
script:
- npm install -g gulp
- npm install
- gulp
Run Code Online (Sandbox Code Playgroud)
但是跑步者只执行第一个命令(npm install -g gulp).它运行第一个命令并报告成功,而不执行其他命令.
构建日志:
Running with gitlab-ci-multi-runner 1.6.1 (c52ad4f)
Using Shell executor...
Running on WINBUILDER...
Fetching changes...
HEAD is now at 2df18c5 Update .gitlab-ci.yml
From https://.../client
2df18c5..b4efae8 master -> origin/master
Checking out b4efae85 as master...
$ npm install -g gulp
C:\Users\Administrator\AppData\Roaming\npm\gulp -> C:\Users\Administrator\AppData\Roaming\npm\node_modules\gulp\bin\gulp.js
C:\Users\Administrator\AppData\Roaming\npm
`-- gulp@3.9.1
Build succeeded
Run Code Online (Sandbox Code Playgroud)
我在阶段中看到了几个使用多个命令的配置示例.我不明白为什么其他命令没有运行.
在下面的代码中,运行时会发生什么?
while ( ([]()->bool { return something(); })() ) {
...
}
Run Code Online (Sandbox Code Playgroud)
最初对我来说很明显,它是在每次迭代中重新创建的,但我想知道编译器是否进行了某种优化.
我正在尝试使用 PowerShell 将无符号整数(其 4 字节 DWORD 二进制表示形式)写入文件,但我尝试过的所有替代方案都只写入文本。
假设我有这个号码:
$number = [Int] 255
文件内容应该是FF000000(二进制),而不是255(文本)。
我不是 PowerShell 专家,因此非常感谢您的帮助。
我打算将我的应用程序堆栈迁移到Docker.让我来描述我目前使用的服务:
我的问题是关于数据库.
在这种情况下运行MariaDB的正确方法是什么?
--linkDocker run命令选项将我的容器链接到它?第一种选择有任何不利之处吗?
TeamSpeak docker容器使用了第二个选项,这就是让我自己质疑在我的情况下运行数据库的正确方法的原因,但我特别感觉更倾向于将所有服务打包在我自己的图像中.
c++ ×5
windbg ×2
7zip ×1
binaryfiles ×1
c ×1
compile-time ×1
compression ×1
delphi ×1
delphi-xe6 ×1
dll ×1
docker ×1
gitlab ×1
gitlab-ci ×1
hook ×1
lambda ×1
lzma ×1
mariadb ×1
mysql ×1
powershell ×1
rtti ×1
string ×1
templates ×1
winapi ×1
windows ×1