小编Cna*_*eak的帖子

如何知道dll是否使用ASLR?

如何检查某个dll是否使用ASLR?

让我们以kernel32.dll为例,它是否使用ASLR?以及如何检查其他dll ...

谢谢 ..

windows dll protection aslr

10
推荐指数
1
解决办法
7092
查看次数

从基本流中读取(httpRequestStream)

我有一个基本流,它是HTTP请求流和

var s=new HttpListener().GetContext().Request.InputStream;
Run Code Online (Sandbox Code Playgroud)

我想读取流(包含非字符内容,因为我发送了数据包)

当我们通过StreamReader包装此流时,我们使用StreamReader的ReadToEnd()函数,它可以读取整个流并返回一个字符串...

HttpListener listener = new HttpListener();
listener.Prefixes.Add("http://127.0.0.1/");
listener.Start();
var context = listener.GetContext();
var sr = new StreamReader(context.Request.InputStream);
string x=sr.ReadToEnd(); //This Workds
Run Code Online (Sandbox Code Playgroud)

但由于它有非字符内容我们不能使用StremReader(我尝试了所有编码机制..使用字符串是错误的.)我不能使用该功能

context.Request.InputStream.Read(buffer,position,Len) 
Run Code Online (Sandbox Code Playgroud)

因为我无法得到流的长度,InputStream.Length总是抛出一个异常而且无法使用..而且我不想创建像[size] [file]这样的小协议,然后读取第一个大小然后文件......不知何故StreamReader可以获得长度..我只是想知道如何.我也尝试了这个并没有用

List<byte> bb = new List<byte>();
var ss = context.Request.InputStream;
byte b = (byte)ss.ReadByte();
while (b >= 0)
{
    bb.Add(b);
    b = (byte)ss.ReadByte();
}
Run Code Online (Sandbox Code Playgroud)

我通过以下方式解决了这个问题

FileStream fs = new FileStream("C:\\cygwin\\home\\Dff.rar", FileMode.Create);
byte[] file = new byte[1024 * 1024];
int finishedBytes = ss.Read(file, 0, file.Length);
while (finishedBytes > 0)
{
    fs.Write(file, 0, …
Run Code Online (Sandbox Code Playgroud)

.net c# http stream

5
推荐指数
2
解决办法
7086
查看次数

可以Dllmain使用FreeLibrary吗?

我想创建一个dll,在某些condifiton的情况下卸载它自己,意思是

BOOL APIENTRY DllMain( HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
if (ul_reason_for_call==DLL_PROCESS_ATTACH)
if (!CheckSomething()) //check if a file doesnt exists for example
FreeLibrary(hModule);

}
Run Code Online (Sandbox Code Playgroud)

我试过了,但我无法让它发挥作用.如果有替代解决方案.请告诉我,我不希望附加dll的进程卸载它,我希望它自己卸载它

c c++ dll winapi

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

使用Rundll32.exe执行DLL导出的函数

我有一个导出函数的DLL:

__declspec(dllexport) 
void __stdcall MyEntryPoint(char* params)
{
    MessageBoxA("MyEntryPoint",params,0,0);
}
Run Code Online (Sandbox Code Playgroud)

如何使用rundll32.exe加载我的DLL并调用MyEntryPoint()

c dll winapi rundll32

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

ASLR是否会因DLL注入而导致地址摩擦?

我正在阅读关于DLL注入技术的内容,我记住了这个问题.

让我们假设我们想要将一个DLL注入Windows 7中的目标进程,该进程为kernel32.dll启用了ASLR

因此,任何一段注入的代码都不能使用任何winapi或任何系统调用,因为地址让我们说在注入器代码中的loadLibrary函数将与目标进程中的地址loadLibrary不同,不是吗?

所以这样的召唤CreateRemoteThread不起作用:

CreateRemoteThread(hProcess,
                   NULL,
                   0,
                   (LPTHREAD_START_ROUTINE) ::GetProcAddress(hKernel32,
                                                             "LoadLibraryA" ),
                   pLibRemote,
                   0,
                   NULL );

::WaitForSingleObject( hThread, INFINITE );
Run Code Online (Sandbox Code Playgroud)

如果我在这个推理中错了,请纠正我.

dll winapi inject aslr createremotethread

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

windows服务和windows驱动程序有什么区别?

Windows 服务和 Windows 驱动程序有什么区别?

它们不是都在内核模式下运行吗?

他们不是都在 win vista&7 的 session0 中运行吗

service winapi driver sys

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

如何在c ++中删除ADS(备用数据流)

我有一个文件让我说"c:\ file1.txt"有一个ADS文件让我们说stm所以"c:\ file1.txt:stm"现在我想删除stm而不修改file1

我在某个地方读到我需要一个没有ADS的旧文件副本file1.txt,以便通过用一个没有一个的流替换file1来删除ADS ...是否有更好更干净的方法呢?

c winapi ntfs

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

计算md5哈希

我正在计算文件的md5hash以检查是否相同,所以我写了以下内容

private static byte[] GetMD5(string p)
{
    FileStream fs = new FileStream(p, FileMode.Open);
    HashAlgorithm alg = new HMACMD5();
    byte[] hashValue = alg.ComputeHash(fs);
    fs.Close();
    return hashValue;
}
Run Code Online (Sandbox Code Playgroud)

并测试我是否一开始就称之为

    var v1 = GetMD5("C:\\test.mp4");
    var v2 = GetMD5("C:\\test.mp4");
Run Code Online (Sandbox Code Playgroud)

从调试器我列出了v1和v2值,它们是不同的!! 这是为什么 ?

.net c# hash md5

0
推荐指数
2
解决办法
2145
查看次数

标签 统计

winapi ×5

dll ×4

c ×3

.net ×2

aslr ×2

c# ×2

c++ ×1

createremotethread ×1

driver ×1

hash ×1

http ×1

inject ×1

md5 ×1

ntfs ×1

protection ×1

rundll32 ×1

service ×1

stream ×1

sys ×1

windows ×1