那么这个问题可能看起来很奇怪但很简单 - 我的观点是,如果我在反编译代码中有一个"goto"(brtrue等),例如
br IL_0003
call *****
IL_0003: ret
Run Code Online (Sandbox Code Playgroud)
然后我在****调用之后添加一个命令,将顶点处的br恢复为应该或该代码.
塞西尔是单独做的还是我必须照顾所有这些分支?:/它不是很难修复它们但是如果Cecil没有那么我根本就不会启动这个项目,我没有时间(或知识)获得高级IL魔法:P
(是的我知道它不会是IL_0003只是例如)
我用c ++写一个服务器来处理将发送敏感数据的安全连接.
目标永远不是以未加密的形式将数据保存在内存之外的任何地方,并将其保存在内存中的已定义空间(在不再需要之后被覆盖)
将分配大量内存并使用它来存储敏感数据就足够了并确保没有数据泄漏?
我对编写Windows调试器的信息很少感到非常不满意.
我所拥有的大部分代码都是通过长时间的反复试验制作的,文档显然"认为"大部分主题都过于微不足道,同时详细解释了明显无用的事情.
我发现了两篇左右的文章,但没有多少我不知道的东西.
是否有任何文档,我的意思是完整的文档,或者一些好的文章(不是如何在vb.NET中将字节更改为0xCC而是现实世界的东西)关于调试器?具有内存断点的高级调试器.
目前我没有找到一种方法,例如如何找出GUARD_PAGE_VIOLATION中写入的字节数.我只是在代码执行和比较之前和之后创建一个缓冲区.
还在哪里可以找到信息的内容debug_event.u.Exception.ExceptionRecord.ExceptionInformation?(以及debug_event中的其他内容)
我真的必须自己扭转逆转环境吗?
一个非常简单的问题,如果我HANDLE在app1.exe中创建并获得值,那么该值0x01是全局唯一的吗?
或者,当某个其他流程创建HANDLE具有价值的流程时,它是否可能0x01.
如果它们不是唯一的,那么我可以使用其他构造来获得与句柄兼容的唯一ID(这样HANDLE在其他地方创建具有该id的不可能或极不可能).
我正在创建一个append/rw文件(取决于下载是否恢复)
this.syncFile = await fs.promises.open(this.syncPath, 'a+');
this.syncFile = await fs.promises.open(this.syncPath, 'r+');
Run Code Online (Sandbox Code Playgroud)
后来我为该 FD 创建一个写入流
let writeStream = fs.createWriteStream(null, {fd:this.syncFile.fd, autoClose:false, highWaterMark: 1024*1024});
Run Code Online (Sandbox Code Playgroud)
下载剩余数据后,我可能会也可能不会为同一个 FD 创建 readStream 来计算完整文件的校验和
let readStream = fs.createReadStream(null, {fd:this.syncFile.fd, autoClose:false, highWaterMark: 1024*1024, start:0});
Run Code Online (Sandbox Code Playgroud)
为了最终确定,我想关闭FD。
fs.closeSync(this.syncFile.fd);
Run Code Online (Sandbox Code Playgroud)
我在 readStream/writeStream 上尝试了与 close() 或 dispose() 的多种组合,但我不断收到未捕获的异常
[Window Title]
Error
[Content]
Uncaught Exception:
Error: EBADF: Closing file descriptor 5 on garbage collection failed, close
Run Code Online (Sandbox Code Playgroud)
或关于关闭 gc 上的文件描述符的控制台警告总是连续两个,有时后面跟着
Error: EBADF: bad file descriptor, write
为什么会发生这种情况?读/写流有选项autoClose:true
此外,之前,当我只有一个 writeStream 时,我无法重新创建一些组合。
在这种情况下关闭所有流和FD的正确方法是什么?我不能等待 GC 关闭文件描述符,因为它在文件上持有独占锁,我正在更改其属性的文件 ( …
我希望asp.net/c#中的用户名正则表达式,其中用户名应至少为6,最多为15个字符.允许使用字母数字字符.特殊字符._是允许的.没有空格可以接受.起始字符应为字母.
我想要密码的正则表达式,其条件与上面完全相同,但唯一的区别是起始字符应该是字母数字,不允许特殊字符.
我有一个类afporoills,可以帮助我们的内存管理模块中找到数据.(不要问为什么这么奇怪的名字我不知道)
class afporoills{
void** test(int pos);
};
void** afporoills::test(int pos){
int x=(pos<<3)|1023*x;
void** ret=(void**)x;
if((int)ret%16) return this.test(pos+1);
void* (*fp)(float, uint16__t)=x;
ret=ret+(*fp)(1.0f, (uint16__t)pos);
return ret;
}
int test(){
afporoills afporoills14;
return ((char*) (uint32_t) ((uint32_t) (void*) afporoills14.test(((((uint32_t)))((char*) (void*))1));
}
Run Code Online (Sandbox Code Playgroud)
我一直在
[链接器错误]未定义对'vtable for afporoills`的引用
但我不知道vtable是什么!我没用过一个,为什么会有错误呢?
请帮助我,因为如果我没有摆脱那个错误,我不能继续写那个课程.
我还需要做些什么来使test方法完成?
LONG WINAPI MyUnhandledExceptionFilter(PEXCEPTION_POINTERS p)
{
if(p->ExceptionRecord->ExceptionCode==EXCEPTION_ACCESS_VIOLATION){
if(p->ContextRecord->Eip==6F3A15FD){
p->ContextRecord->EFlags
}
Run Code Online (Sandbox Code Playgroud)
我希望我的异常处理程序设置零标志,如果在指定的地址发生异常;)我该怎么办p->ContextRecord->EFlags|=?
如果我只是EXCEPTION_CONTINUE_EXECUTION在访问违规后给予它会工作吗?:D和,我是否必须加入EIP,否则它将落入下一条指令?
我有一个非常简单的类存根 - 我刚开始制作它:
class CJSScript
{
public:
CJSScript(std::string scriptfile);
~CJSScript(void);
private:
std::string scriptname;
};
CJSScript::CJSScript(std::string scriptfile)
{
size_t found = scriptfile.find_last_of("/\\");
scriptname = scriptfile.substr(found+1);
printf("should load %s now...", scriptname);
}
Run Code Online (Sandbox Code Playgroud)
但是在那个构造函数中我得到了一个异常,this显然是设置为0x7ffffffe
主要方案是
int _tmain(int argc, _TCHAR* argv[])
{
CJSScript* test=new CJSScript("./script/test.js");
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这到底是怎么回事.我以为我很久以前就已经有了基础知识,但这是一种妥协.我或编译器:)
调试器转储:
Win32Project3.exe!_output_l(_iobuf * stream, const char * format, localeinfo_struct * plocinfo, char * argptr) Line 1649 C++
Win32Project3.exe!printf(const char * format, ...) Line 62 C
Win32Project3.exe!CJSScript::CJSScript(std::basic_string<char,std::char_traits<char>,std::allocator<char> > scriptfile) Line 11 C++ …Run Code Online (Sandbox Code Playgroud) invalid conversion from 'DWORD (*)(void*)' to 'DWORD (*)(void*)'.蛋糕==谎言1 == 0
我不知道这意味着什么......我在这段代码中得到了它
HANDLE CPlugin::CreateWinampThread() ||
{ __VVVVVVVV__
hWinampThreadHandle = (HANDLE)CreateThread(NULL, 0, StartWinampThread, (void*)this, 0, &dwWinampThreadID);
if (!hWinampThreadHandle)
return 0;
CloseHandle(hWinampThreadHandle);
return hWinampThreadHandle;
}
.
DWORD WINAPI CPlugin::StartWinampThread(void* lpParam)[...]
Run Code Online (Sandbox Code Playgroud) c++ ×6
.net ×1
asp.net ×1
c# ×1
cil ×1
cryptography ×1
debugging ×1
filesystems ×1
linux ×1
mono.cecil ×1
node.js ×1
regex ×1
visual-c++ ×1
vtable ×1
winapi ×1
windows ×1
x86 ×1