我有一个进程,在内存中会有一些重要的值。我不希望任何人能够读取我的进程的内存并获取这些值。所以我试图创建一个程序来查看正在运行的程序列表并确定其中是否有任何程序是“调试器”等。但我意识到有人可以编写一个快速程序来转储我的进程的内存。我知道我系统上的几个进程的内存受到保护。我怎么也能得到这个?(ps:我用的是C#) 最佳答案 任何在具有足够权限的用户(例如本地管理员)下运行的应用程序都可以调用ReadProcessMemory并随时随意阅读您的流程,而无需附加到您的流程调试端口,并且您的处理无法阻止甚至检测到这一点。我什至没有深入探讨
我有一个应用程序,可以显示一些数据。我需要附加到这个应用程序的进程,在内存中找到我需要的数据(实际上是一个数字),并将其保存在某个地方。这个应用程序似乎没有使用标准的Windows控件,所以事情不会像使用AutoIt或类似的东西读取控件数据那么简单。目前我是一名自学数据库的人,对Windows应用程序调试的了解很浅。甚至不确定我是否足够正确地问我的问题。那么,您能否给我一些入门指南,例如,我应该首先阅读什么,以及我应该遵循的一般方向?谢谢。 最佳答案 要读取其他应用程序的内存,您需要根据OpenProcess打开进程至少具有PROC
好吧,我很好奇我的ram上的int是否真的占4个字节。所以我用这段代码做了1,000,000个整数。for(inti=0;i在我执行这行代码之前,我在前面放置了一个断点,以查看我开始时有多少headover。几乎没有头绪,我的程序从750kb开始。但在我完成循环后,如果一个int的重量为32位,程序本应为4,000kb,则该程序使用32,000kb。另一件值得一提的事情是,我正在使用ctrl+altk+delete方法来检查我的程序从ram中占用了多少空间,并且我在可视化上运行它C++2010表达。我也确信我电脑上的int是32位而不是64位,但这并不重要,因为即使它是64位而不是32
显然,这是64位Windows。另外,单个64位进程可以使用的最大内存量是多少?我有点指望用它全部......(是的,我知道我在做什么,请不要告诉我,如果我需要那么多RAM,我一定是做错了什么)此外,这对于.Net2.0进程是否相同?或者.Net是否有下限? 最佳答案 什么版本的windows?从XP到Vista,从家庭版到商业版的Vista,它都不同,我会再次猜测服务器。参见hereformoreinfoonmaximumramfordiffrentwindowsversions对于WindowsServer2008Datacen
当我使用“删除”删除vector中的元素时,并没有清除内存。例如,我制作了一个大小为2000的vector。创建后程序使用1,5MB内存。当我执行删除调用时,不会清除任何内容。所有的元素都消失了。但它们仍在内存中。例如:#include#includeusingnamespacestd;intmain(){//Makesavectorof2000itemsvectortest(200000);//Pausefortestpurposesystem("pause");//eraseallelementstest.erase(test.begin(),test.end());//Pause
我有一个带有大约50个子窗口的Perl-TkGUI。在每个子窗口中大约有50个按钮和50个菜单(每个菜单有大约4个选项)。当我在UNIX/Linux/Solaris上运行它时,它运行得很流畅。当我在Windows上运行它时,GUI在加载过程中卡住,所以我只能看到一些按钮,或者GUI根本不显示—它似乎卡住了。perl进程使用了50000K的内存和100%的CPU使用率。但是当我关闭一些按钮/菜单并再次运行时—没问题。看来,Perl-Tk没有获得足够的内存来在Windows上加载GUI。有什么办法可以让它正常运行吗?是否有任何特殊的配置、标志来告诉windows给Perl-TK一些更多
我们有一个服务器可以通过自定义登录程序安全地将key发送给客户端。该key随后用于加密进一步的客户端请求。该key像cookie一样保存在客户端的磁盘上,并由可能在客户端决定注销并导致key过时之前多次启动和停止的程序使用(因此key保存在磁盘上,因为当没有程序运行时,登录和注销之间可能会有很长时间。将key仅保存在内存中而不是磁盘上似乎更安全(如果崩溃或重新启动丢失key并随后强制重新登录也没关系)。在Windows上,在程序的单独执行之间仅将key保留在内存中(忽略内存可能是虚拟的并分页到磁盘)的最佳方法是什么?一个可能的解决方案是让一个普通的Windows服务在接受key的客户端
我的主要目标是了解我的python应用程序在执行期间占用了多少内存。我在Windows-32和Windows-64上使用python2.7.5。我在这里找到了获取有关我的过程的一些信息的方法:http://code.activestate.com/recipes/578513-get-memory-usage-of-windows-processes-using-getpro/为方便起见,将代码放在这里:"""FunctionsforgettingmemoryusageofWindowsprocesses."""__all__=['get_current_process','get_m
我正在做一些实验,想知道是否可以在我提供的特定地址创建一个线程堆栈,或者至少让线程堆栈只在我可以指定的某个(巨大的)虚拟内存区域中产生.我对此感兴趣的原因是我想在某个时候将整个堆栈复制到远程进程并且需要指针保持完整,并且线程堆栈不会发生冲突。这可能不是最好/最安全的方法,我知道,但这只是一个小小的爱好项目。如果您知道如何在Linux上执行此操作,我也对此很感兴趣。 最佳答案 只是编译评论所说的内容。Forwindows,theanswerisno对于Unix(posix),答案是pthread_attr_setstack.(另见上面
通读TessFerrandez'Blog关于垃圾收集,她说收集有3种可能的原因:Whenyouallocateanewobjectandthegeneration0budgetisreached,i.e.ifthenewobjectwouldcauseittogoover-budget.WhensomeonecallsGC.Collect(InducedGC)Basedonmemorypressure我理解第1点和第2点,但第3点中的内存压力是什么意思?我原以为这是系统中可用的一般内存,但如果系统真的用完了所有内存,那么我想整个系统都会蓝屏。内存压力的实际含义是什么?这与超出一代人的预