好吧,这让我疯了,哈哈.
我有一个Base64字符串,我正在尝试使用TIdDecoderMIME将其解码为TMemoryStream.
我目前的代码如下:
Var MStream:TMemoryStream; Decoder:TIdDecoderMIME;
begin
Decoder := TIdDecoderMIME.Create(nil);
MStream := TMemoryStream.Create;
Decoder.DecodeToStream(BSting,MStream);
end;
Run Code Online (Sandbox Code Playgroud)
其中BString = My Base64字符串.
现在,当代码运行时,我收到一条错误消息"DecodeToString中的大小不均匀".
有任何想法吗?
任何帮助是极大的赞赏.谢谢.
我知道你应该能够在Delphi XE2中构建x64应用程序......
我使用的是付费版本,入门版本.

我也检查了选项,它不会让我改为64位.只有32.我也在64位机器上运行XE2.
可能是因为我有入门版吗?如果是这样有点荒谬,请看我为这个软件支付了200多美元.
我希望能够将单行ASM转换为shellcode.IE:
CALL EBX
Run Code Online (Sandbox Code Playgroud)
我该怎么做,并且能够正确转换这个shellcode,以便我可以将它存储在delphi应用程序的变量中.IE:
var ShellCodeArray: array[0..3] of Byte = ($55,$8B,$EC,$81);
Run Code Online (Sandbox Code Playgroud) 我正在尝试检查我的应用程序路径,如果它不是指定的路径,则移动它.我觉得我的代码很稳定,但它无法正常工作.
TCHAR pCheck[MAX_PATH];
TCHAR xPath[MAX_PATH];
GetModuleFileName(NULL,xPath,MAX_PATH);
if(SHGetSpecialFolderPath(HWND_DESKTOP, pCheck, CSIDL_DESKTOP, FALSE)){
wcscat(pCheck,L"\\NewFile.exe");
MessageBox(NULL,pCheck,NULL,NULL);
MessageBox(NULL,xPath,NULL,NULL);
if(pCheck!=xPath){
CopyFile(xPath,pCheck,0);
ShellExecute(0,L"open",pCheck,NULL,NULL,SW_SHOW);
return 0;
}else{
MessageBox(NULL,L"New Location",NULL,NULL);
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
即使文件在新路径中,它仍然会产生pCheck!= xPath
我从来没有得到"新位置"消息框.当显示前两个消息框时,路径是相等的...
我有一个程序,在其中检查Web服务器上的php文件,以查看用户是否已经过验证.php文件在数据库中运行,检查和回声"验证"是否存在.
现在,人们现在可以通过安装Xampp,将我的服务器路由到其主机文件中的127.0.0.1,然后设置回声验证的脚本,轻松绕过验证系统.
我希望能够检查我的域的IP地址,以检查它是否路由到127.0.0.1.
我如何通过delphi解析域的IP地址?
我的代码中有一个声明的变量,如下所示:
Var
VarName:Array[0..693] of Byte = ( and my array here );
Run Code Online (Sandbox Code Playgroud)
我的用途中有EncdDecd ..
我期待使用EncdDecd.pas中的EncodeBase64函数将此Byte数组编码为base64字符串
但是我不确定如何将它返回到漂亮而漂亮的b64字符串中,该字符串可以使用DecodeBase64直接转换回字节数组...
我尝试过几种不同的方法..
Var Res:PWideChar;
begin
StringToWideChar(EncodeBase64(@VarName, 693), Res, 693);
ClipBoard.SetTextBuf(Res);
end;
Run Code Online (Sandbox Code Playgroud)
使用该代码访问违规...
还尝试过:
begin
ClipBoard.SetTextBuf(PWideChar(EncodeBase64(@VarName, 693)));
end;
Run Code Online (Sandbox Code Playgroud)
返回一个充满扭曲的中文符号的字符串....
任何有关返回此字符串的帮助将不胜感激..
谢谢!
我有一个字节数组,我希望转换为十六进制字符串,然后返回到一个字节数组.
我使用以下代码转换为十六进制字符串:
function bintoHex(const bin: array of byte): String;
const HexSymbols = '0123456789ABCDEF';
var i: integer;
begin
SetLength(Result, 2*Length(bin));
for i := 0 to Length(bin)-1 do begin
Result[1 + 2*i + 0] := HexSymbols[1 + bin[i] shr 4];
Result[1 + 2*i + 1] := HexSymbols[1 + bin[i] and $0F];
end;
end;
Run Code Online (Sandbox Code Playgroud)
我不确定如何将其转换回正确的字节数组.我正在拍摄以下内容:
Type TDCArray = Array of Byte;
function xHexToBin(const HexStr: String): TDCArray;
const HexSymbols = '0123456789ABCDEF';
var i: integer;
begin
SetLength(Result, ???); //Need to now get half of the …Run Code Online (Sandbox Code Playgroud) 注意:我使用的是Delphi XE2
我想添加一个注册表项.这是我目前的代码:
function AddRegKey(Key:HKEY;Keyname,Value:String):Boolean;
var
phkResult:HKEY;
begin
if RegOpenKeyEx(Key, PWideChar('SOFTWARE\Microsoft\Windows\CurrentVersion\Run'), 0, KEY_SET_VALUE, phkResult) = ERROR_SUCCESS then
begin
Result := (RegSetValueEx(phkResult, PWideChar(KeyName), 0, REG_SZ, PWideChar(Value), Length(Value)) = ERROR_SUCCESS);
RegCloseKey(phkResult);
end
else Result:=False;
end;
begin
If AddRegKey(HKEY_CURRENT_USER,'TestTest','123456789') Then
MessageBox(0,'Success','Test',0);
end.
Run Code Online (Sandbox Code Playgroud)
这导致以下结果:

它只添加前四个字符
但是当我将"Value"参数更改为:
123456789123456789
Run Code Online (Sandbox Code Playgroud)
然后它补充说:
123456789
Run Code Online (Sandbox Code Playgroud)
因此,由于某种原因,它似乎只是增加了给定值的一半.我该如何解决这个问题?
我在RegSetValueEx中为*lpData参数传递了错误的数据类型吗?
我试图用C++创建一个DLL并导出一个函数.
这是我的C++代码:
#include <Windows.h>
void DLLMain(){
}
__declspec(dllexport) void xMain(){
MessageBox(NULL,L"Test",L"Test",NULL);
}
Run Code Online (Sandbox Code Playgroud)
这是我的delphi代码:
program prjTestDllMain;
Uses
Windows;
Var
xMainPrc:procedure;stdcall;
handle : THandle;
begin
handle := LoadLibrary('xdll.dll');
if handle <> 0 then
begin
MessageBox(0,'DLL Loaded', 0, 0);
@xMainPrc := GetProcAddress(handle, 'xMain');
if @xMainPrc <> nil then
MessageBox(0,'Function Loaded', 0, 0)
else
MessageBox(0,'Function Not Loaded', 0, 0);
MessageBox(0,'Process End', 0, 0);
FreeLibrary(handle);
end else
MessageBox(0,'DLL Not Loaded', 0, 0);
end.
Run Code Online (Sandbox Code Playgroud)
我得到一个"DLL Loaded"的消息框就好了.但之后我得到"功能未加载".我在这做错了什么?
并感谢您抽出宝贵时间来审视我的问题.
我正在尝试使用本机NtCreateKey API在HKCU中创建一个密钥.
我有一个来源可以帮助我理解API的工作原理,但我似乎无法使其适用于HKCU,只有HKLM ......这可能吗?
源代码我已经:
const
KeyNameBuffer: AnsiString = '\Registry\Machine\SOFTWARE'; //Assuming I need to change this.....
NewKeyNameBuffer: AnsiString = 'Parent Key To Create';
HiddenKeyNameBuffer: AnsiString = 'Main Key To Create';
HiddenValueNameBuffer: AnsiString = 'Value Key To Create';
procedure TForm1.btnDemoClick(Sender: TObject);
var
KeyName, ValueName: UNICODE_STRING;
SoftwareKeyHandle, SysKeyHandle, HiddenKeyHandle: THandle;
Status: ULONG;
ObjectAttributes: OBJECT_ATTRIBUTES;
Disposition: ULONG;
Buffer: array of WideChar;
begin
//
// Open the Software key
//
SetLength(Buffer, Length(KeyNameBuffer));
MultiByteToWideChar(CP_UTF8, 0, @KeyNameBuffer[1], Length(KeyNameBuffer),
PWideChar(Buffer), Length(Buffer));
KeyName.Buffer := @Buffer[0];
KeyName.Length := …Run Code Online (Sandbox Code Playgroud)