随笔分类 - C/C++
摘要:1 /* 2 3 This file contains definitions used by the Hex-Rays decompiler output. 4 It has type definitions and convenience macros to make the 5 output more readable. 6 7 Co...
阅读全文
摘要:在进行安全研究中,我们需要经常使用ida等工具对app的so进行动态调试。这其中遇到的最大问题可能就是app加了反调试、反root等保护手段对应用运行环境进行检测,而这些手段往往是在我们附加进程之前就已经加载了的,所以不能通过ida等调试工具直接附加进程的方式来调试这些so,因而需要我们自己实现加载
阅读全文
摘要:Windows在加载DLL的时候,需要一个入口函数,就如同控制台或DOS程序需要main函数、WIN32程序需要WinMain函数一样。在前面的例子中,DLL并没有提供DllMain函数,应用工程也能成功引用DLL,这是因为Windows在找不到DllMain的时候,系统会从其它运行库中引入一个不做任何操作的缺省DllMain函数版本,并不意味着DLL可以放弃DllMain函数。 根据编写规范,Windows必须查找并执行DLL里的DllMain函数作为加载DLL的依据,它使得DLL得以保留在内存里。这个函数并不属于导出函数,而是DLL的内部函数。这意味着不能直接在应用工程中引用DllMai.
阅读全文
摘要:1 SHELLEXECUTEINFO ShellInfo; 2 3 4 memset(&ShellInfo, 0, sizeof(ShellInfo)); 5 6 ShellInfo.cbSize = sizeof(ShellInfo); 7 8 ShellInfo.hwnd = NULL; 9 10 ShellInfo.lpVerb = _T("open");11 12 ShellInfo.lpFile = szFilePath;13 14 ShellInfo.nShow = SW_SH...
阅读全文
摘要:C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a。C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。const_cast,字面上理解就是去const属性。static_cast,命名上理解是静态类型转换。如int转换成char。dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换。reinterpret_cast,仅仅重新解释类型,但没有进行二进制的转换。4种类型转换的格式,如:TYPE B = static_cast(TYPE)(a)。const_cast去掉类型的const或volat
阅读全文