小编Mic*_*ael的帖子

逆向工程C++

今天我决定使用IDA Pro反编译一个用Visual C++编写的简单"Hello world"程序.

根据我以前的知识,我确信我不会在可执行入口点找到对printf的立即调用,我是对的.我发现很多代码都不是由我编写的,并且在编译过程中由编译器添加.

我希望更好地了解在编译过程中添加的代码.它有什么作用?是否有任何"技巧"快速找到"主"并跳过反汇编生成的所有不必要的代码?

我能找到的最好的是这篇文章:http: //www.codeproject.com/Articles/4210/C-Reverse-Disassembly,说使用visual c ++编译的可执行文件的执行顺序如下:

  1. CrtlStartUp

  2. 主要

  3. CrtlCleanUp

我能得到更详细的答案吗?

c++ compiler-construction reverse-engineering ida

5
推荐指数
1
解决办法
4150
查看次数

Visual Studio 2012远程内核调试虚拟机

我在使用以下配置设置调试环境时遇到了一些麻烦:

Host computer - Physical, Windows 7 x64

Target computer - Virtual (Vmware), Windows 7 x64 (Running on Host computer)
Run Code Online (Sandbox Code Playgroud)

我希望能够开发内核模式驱动程序,在我的VM中部署和调试它.

Visual Studio给我带来了困难,配置VM无法正常工作.

如何在VM中成功部署和调试驱动程序?

kernel remote-debugging virtual-machine device-driver visual-studio-2012

5
推荐指数
1
解决办法
3844
查看次数

通过使用共享页面确定库地址来绕过Windows ASLR

我对ASLR非常熟悉,但今天我听到了一个关于在Windows中实现ASLR的新的有趣事实.

为了优化性能,如果进程A和B加载相同的dll,Windows只会将其加载一次到物理内存,并且两个进程将通过共享页面共享同一个实例.

这是旧闻.但有趣的是,进程A和B都将在同一个虚拟地址中加载共享库(为什么??).

在我看来,任何本地攻击(例如权限提升)都可以通过以下方式轻松绕过ASLR:

1. Create a new dummy process
2. Check the address of dlls of interest (kernel32, user32 ..)
3. Attack the privileged process and bypass ASLR with the information from step 2.
Run Code Online (Sandbox Code Playgroud)

我使用Olly做了一些简单的测试,发现共享库确实加载在同一个虚拟地址中.

如果确实如此,那么ASLR对于本地开发是否无用?

windows security exploit reverse-engineering aslr

5
推荐指数
1
解决办法
927
查看次数

Git子树与Monorepo

我们最近决定从TFVC迁移到Git,我正在尝试寻找设计新Git架构的最佳方法。

我们的代码由独立但紧密耦合的模块组成,让我们看一下以下项目:

  • CommonLib1

  • CommonLib2

  • ApplicationA(使用CommonLib1

  • ApplicationB(用途CommonLib1CommonLib2

虽然CommonLib1/ CommonLib2是完全独立的,几乎每一个新功能ApplicationA/ ApplicationB需要修改CommonLib1/ CommonLib2

此外,在添加新功能时,我们希望创建一个跨我们所有项目的分支。

据我了解,我还有两个主要选择:

  1. 为每个项目创建一个仓库,并在/中添加CommonLib1/ CommonLib2作为子树。ApplicationAApplicationB

  2. 为所有项目创建一个Monorepo。

对于我的情况,最佳的Git实践是什么?

git version-control tfs git-subtree monorepo

5
推荐指数
1
解决办法
1237
查看次数

Delphi汇编调用

我一直在玩IDA中的一些Delphi程序集.

我注意到很多我不理解的系统调用,并且无法找到有关它们的任何文档.例如:我注意到很多对未知函数LStrClr(void*)的调用.

我能找到的最好的是这个网站http://www.delphibasics.co.uk/ByLetter.asp?Letter=A 但它缺少很多函数调用,包括LStrClr.

非常感谢您的回复,Michael Engstler.

delphi assembly reverse-engineering system-calls basm

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

GetFileSizeEx在System32目录上返回不正确的值

我遇到了一个关于GetFileSize和GetFileSizeEx API的非常奇怪的问题.

两个函数都可以在每个输入文件上正常工作,从System32目录中删除文件.

例如:

如果我在calc.exe上使用其中一个API(在System32中),我将获得776192字节的返回值,即使它的实际大小为918,528字节!

System32中的其他可执行文件也会发生这种情况(Regedit,calcs ..).

GetFileSizeEx的返回值为TRUE,未报告错误.

如果我将calc.exe复制到另一个目录(Say C:\),API将返回正确的字节数.

我的猜测是System32目录中的文件是如何压缩的?

或类似的东西,GetFileSize API返回其压缩大小,而不是实际大小.

有人知道为什么会这样吗?

我正在运行Windows 7 SP1.

c winapi filesize system32

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

如何释放从GdipCreateBitmapFromHBITMAP创建的对象?

我正在编写一个C应用程序,并在我的代码中调用了构造函数GdipCreateBitmapFromHBITMAP

我知道不应从C调用构造函数,但我在这里使用了“ hack”“ 如何获取屏幕截图并将其保存为Windows上的JPEG?

我不确定如何释放在调用期间分配的资源GdipCreateBitmapFromHBITMAP

我尝试在文档中寻求帮助,但一无所获。

ULONG *pBitmap = NULL;
lGdipCreateBitmapFromHBITMAP = (pGdipCreateBitmapFromHBITMAP)GetProcAddress(hModuleThread, "GdipCreateBitmapFromHBITMAP");
lGdipCreateBitmapFromHBITMAP(hBmp, NULL, &pBitmap);
Run Code Online (Sandbox Code Playgroud)

我该如何释放pBitmap

非常感谢。

c winapi gdi+ bitmap

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