无忧启动论坛

标题: [原创]任务管理器taskmgr增强版。用汇编增加了清理内存功能。修正跨平台兼容性 [打印本页]

作者: qinjg8008    时间: 2006-12-6 21:59
标题: [原创]任务管理器taskmgr增强版。用汇编增加了清理内存功能。修正跨平台兼容性
发大家想要的东西,任务管理器taskmgr增强版。加了NSPACK的壳,想修改资源的自己脱壳修复。令附上修改原理。
进程上按回车清理内存。


作者:oHuangKeo
日期:2005-10-10
  现在有很多的内存清理工具,有的还要收费。其实原理很简单,只要获得了该进程的hProcess后,就可以调用SetProcessWorkingSetSize来设置内存使用,这里的参数设置为0xFFFFFF,就把该程序的内存使用设为0,由于该程序还在运行中,所以内存使用量并不是0,会是实际使用大小。
  好了,不多说了,动手做吧,不然要被人扔鸡蛋砸我了。

1。查找程序处理键盘按键位置。
  用资源编辑工具打开taskmgr.exe(我用的是freeRess),找到快捷键定义,分析一下。第一个就是Del键。Del的值是1050,这是十进制,换成十六进制为0x41A。用OD打开taskmgr.exe,搜索所有Switchs,找0x41A应该在哪里处理。找哇找,找到了,0100CECB处为Switch(case 3F0..41A),好去那里看看。为了测试这是不是就是DEL键,可以在这里下断,然后运行taskmgr.exe,在进程里随便选一个进程,然后按DEL键,OD会断下的,ecx里就是0x41A.证明我们找对地方了。那么我们定义个什么键来做为快捷键清理内存呢?我是用的Enter键(0x418),你也可以设置别的键,要想知道快捷键的值是多少,用刚才的方法,看看ecx里的值是多少就可以了。

2。找个空地写我们的代码。
  我选择的是从1014F00开始的地址。代码如下:
CODE01014F00   > \60            pushad                                  ;  进栈保护寄存器的值
01014F01   .  E8 3A000000   call    taskmgr.01014F40                ;  这里用Call是方便后面好写代码
01014F06   .  61            popad                                   ;  出栈,恢复寄存器
01014F07   .  81E9 F0030000 sub     ecx, 3F0                        ;  原程序中被覆盖的代码
01014F0D   .^ E9 BF7FFFFF   jmp     taskmgr.0100CED1                ;  跳回去
01014F12   .  53 65 74 50 7>ascii   "SetProcessWorkin"              ;  这里开始到1014F2A是字符串SetProcessWorkingSetSize
01014F22   .  67 53 65 74 5>ascii   "gSetSize",0                    ;  因为程序中没有这个函数,所以要用GetProcAddress来得到函数地址
01014F2B   .  6B 65 72 6E 6>ascii   "kernel32.dll",0
01014F38      00            db      00
01014F39      00            db      00
01014F3A      00            db      00
01014F3B      00            db      00
01014F3C      00            db      00
01014F3D      00            db      00
01014F3E      00            db      00
01014F3F      00            db      00
01014F40  /$  81F9 18040000 cmp     ecx, 418                        ;  比较是不是回车键
01014F46  |.  75 37         jnz     short taskmgr.01014F7F          ;  不是就跳去返回
01014F48  |.  FF70 08       push    dword ptr ds:[eax+8]            ; /[eax+8]里就是当前所选进程的ProcessId
01014F4B  |.  6A 00         push    0                               ; |Inheritable = FALSE
01014F4D  |.  68 00010000   push    100                             ; |Access = SET_QUOTA
01014F52  |.  E8 2291807B   call    kernel32.OpenProcess            ; \OpenProcess
01014F57  |.  83F8 00       cmp     eax, 0                          ;  打开成功了吗?
01014F5A  |.  74 23         je      short taskmgr.01014F7F          ;  失败就跳去返回
01014F5C  |.  50            push    eax                             ;  进栈保存打开的hProcess
01014F5D  |.  68 2B4F0101   push    taskmgr.01014F2B                ; /FileName = "kernel32.dll"
01014F62  |.  E8 10CE7E7B   call    kernel32.LoadLibraryA           ; \LoadLibraryA
01014F67  |.  68 124F0101   push    taskmgr.01014F12                ; /ProcNameOrOrdinal = "SetProcessWorkingSetSize"
01014F6C  |.  50            push    eax                             ; |hModule
01014F6D  |.  E8 B65C7F7B   call    kernel32.GetProcAddress         ; \GetProcAddress
01014F72  |.  83F8 00       cmp     eax, 0                          ;  函数地址获得成功了吗?
01014F75  |.  74 08         je      short taskmgr.01014F7F          ;  不成功就跳去返回
01014F77  |.  5A            pop     edx                             ;  出栈,取出刚才打开的hProcess
01014F78  |.  6A FF         push    -1
01014F7A  |.  6A FF         push    -1
01014F7C  |.  52            push    edx                             ;  hProcess
01014F7D  |.  FFD0          call    near eax                        ;  call SetProcessWorkingSetSize
01014F7F  \>  C3            retn                                    ;  返回

这样添加好后,在把刚才原程序中0100CECB该成"jmp 01014F00",跳转到我们添加的代码就OK了。保存文件,运行一下试试。选择一个进程,按回车键,嘿嘿,内存减少了,嘻嘻。(不能是系统进程,因为权限不够。)

在分析taskmgr.exe时还发现它会去打开注册表中的[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr]键值,如果不为0就会弹出“任务栏已被管理员禁止”。地址是
01005527 |. /74 4B je short taskmgr.01005574
这个是关键性的跳转。不跳就弹出“任务栏已被管理员禁止”,跳就继续后面的工作。

[ 本帖最后由 qinjg8008 于 2006-12-9 04:21 PM 编辑 ]

Snap1.jpg (93.27 KB, 下载次数: 194)

Snap1.jpg

taskmgr 修正兼容性.rar

82.07 KB, 下载次数: 2024, 下载积分: 无忧币 -2


作者: xdg3669    时间: 2006-12-6 22:13
呵呵。支持一下。支持哪无私奉献的人!

[ 本帖最后由 xdg3669 于 2006-12-6 10:14 PM 编辑 ]
作者: fage520    时间: 2006-12-6 22:23
好东西,支持一个!!
作者: wanghh    时间: 2006-12-6 22:28
楼主是无私的高手啊!谢谢你!
作者: wyt0164    时间: 2006-12-6 22:40
楼主你提供的这个只要优化内存就会出错啦。
作者: qinjg8008    时间: 2006-12-6 22:42
原帖由 wyt0164 于 2006-12-6 10:40 PM 发表
楼主你提供的这个只要优化内存就会出错啦。

适用于winxpsp2,其它版本或其它操作系统很可能不行。
作者: wyt0164    时间: 2006-12-6 22:46
我的就是SP2还是不行。
作者: zhfzl2006    时间: 2006-12-6 22:57
支持,但好像不能用在WINPE里面,咦按回车键就会自动退出
作者: qwerqwer    时间: 2006-12-6 23:39
优化内存出错,我的是xpsp2
作者: qinjg8008    时间: 2006-12-7 00:04
修正了,应该可以跨平台了。
作者: basdk    时间: 2006-12-7 06:04
支持无私奉献者!
作者: wanghh    时间: 2006-12-7 07:04
很好用。谢谢!
作者: xdg3669    时间: 2006-12-7 07:10
谢谢,昨晚的还用不了,今天的能用了,优化内存明显。优化内存可以多选就更好了。
作者: shiri    时间: 2006-12-7 08:33
LZ能不能放出一个不加壳的版本啊。
作者: qinjg8008    时间: 2006-12-7 10:04
原帖由 shiri 于 2006-12-7 08:33 AM 发表
LZ能不能放出一个不加壳的版本啊。

为了防止“什么什么定制版出来”,不放不加壳的。

想要DIY的,就自己脱壳吧。我都明确了是NSPACK的壳了。
作者: shiri    时间: 2006-12-7 10:10
我不会脱NSPACK的壳,怎么脱
作者: zhfzl2006    时间: 2006-12-7 10:15
谢谢了,在WINXPSP2及XPE下均能正常使用!!!!
作者: zts59    时间: 2006-12-7 11:01
谢谢,楼主提供,不脱壳了,脱了还要大很多。
作者: 阿非    时间: 2006-12-7 11:32
不错,现在可以在XP,PE,2003中使用了
作者: ck    时间: 2006-12-7 11:35
支持LZ无私奉献.
作者: sunsmile23    时间: 2006-12-7 12:47
怎么在我的sp1系统里运行无反应。
作者: 大秦武士    时间: 2006-12-7 12:48
呵呵,已有了,纯粹支持。
作者: chowyu    时间: 2006-12-7 13:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: secowu    时间: 2006-12-7 14:23
不错,可不可以自动清理呢?
作者: qinjg8008    时间: 2006-12-7 14:52
自动清理就麻烦了,估计得写很多汇编代码。超出我的能力了。
还有一种折中的办法,就是编写一个dll文件,完成自动清理的功能。在程序启动的时候调用这个dll的函数。
作者: wanghh    时间: 2006-12-7 17:13
bblean有个DLL可以自动清理
作者: qinjg8008    时间: 2006-12-7 17:15
原帖由 wanghh 于 2006-12-7 05:13 PM 发表
bblean有个DLL可以自动清理

贴上来我看看
作者: 欠你滴泪    时间: 2006-12-7 18:03
看上去不错的样子 下来看看
作者: wlyh    时间: 2006-12-7 21:48
原帖由 qinjg8008 于 2006-12-7 05:15 PM 发表

贴上来我看看


bblean的内存自动回收插件是由两个部分组成的,一个是清理内存的插件,另外一个是一个定时器,刚贴出内存回收插件的时候,还是手动的,然后有人把内存回收跟定时器插件组合使用,就完成了自动回收的功能.
作者: yfy6898    时间: 2006-12-7 21:51
真的是好东西啊!但是怎样设置让这个任务管理器替换系统原来的、按快捷键就能直接调用这个任务管理器呢?直接替换系统下的taskmgr.exe文件?

[ 本帖最后由 yfy6898 于 2006-12-7 10:07 PM 编辑 ]
作者: 阿非    时间: 2006-12-7 22:39
原帖由 yfy6898 于 2006-12-7 09:51 PM 发表
真的是好东西啊!但是怎样设置让这个任务管理器替换系统原来的、按快捷键就能直接调用这个任务管理器呢?直接替换系统下的taskmgr.exe文件?

放到system32,替换原来的
作者: rock269    时间: 2006-12-8 18:54
确实好用,谢谢你的好工具
作者: freesoft00    时间: 2006-12-8 19:35
挺好的,下载来备用.谢谢了.
作者: l1982012800    时间: 2006-12-8 19:39
请问怎样在注册表中设置任务管理器
作者: kingshui    时间: 2006-12-9 07:32
这两天试了一下...
一直没有发现...
原来...
在2k3下结束不了进程...
用系统自带的任务管理器就可以...
楼主是不是应该测试一下呢...
呵呵...
作者: gxlz9110772    时间: 2006-12-9 08:45
支持哪无私奉献的人!
作者: hz12345    时间: 2006-12-9 09:23
楼主好样的!强烈支持一下!
作者: 老顽童    时间: 2006-12-9 10:36
支持,辛苦了!
作者: qinjg8008    时间: 2006-12-9 11:17
原帖由 kingshui 于 2006-12-9 07:32 AM 发表
这两天试了一下...
一直没有发现...
原来...
在2k3下结束不了进程...
用系统自带的任务管理器就可以...
楼主是不是应该测试一下呢...
呵呵...

你在网上找找吧,和这个版本的taskmgr.exe一起的还有2个文件。也许2003下需要这两个文件。
我没有2003无法测试。
也不是我修改的问题。
作者: 大秦武士    时间: 2006-12-9 12:58
删。

[ 本帖最后由 大秦武士 于 2006-12-9 04:26 PM 编辑 ]
作者: lxl1638    时间: 2006-12-9 13:46
实在话,在WinPE中使用这个是极其多余的,WinPE有几个进程,用过都心中有数,那几个进程也没有必要用工具去管理它。若担心WinPE的进程有问题,那这个WinPE也没有使 用的价值了。
作者: qinjg8008    时间: 2006-12-9 15:56
原帖由 大秦武士 于 2006-12-9 12:58 PM 发表
我虽然有这个东东,版本我个人也认为比楼主的好得多,但我认为这东东没什么用处,所以我没发布给大家,原因是我所有的只能在xp sp2与PE下用,兼容性不够好。所以我没发布出来,楼主跟偶斗气,自己弄出一个出来,无 ...

我也从来没有说自己是是什么大师。
我也早说过弄这些东西只是一种爱好,带不来任何好处。
网络讲究的是共享,东西有没有用每个人有自己的见解,但有东西自己藏着是违背这个原则的。
所以我也没有什么要和你斗什么气,只是想说
共享才是硬道理
作者: hmzw    时间: 2006-12-9 16:04
原帖由 qinjg8008 于 2006-12-9 03:56 PM 发表

我也从来没有说自己是是什么大师。
我也早说过弄这些东西只是一种爱好,带不来任何好处。
网络讲究的是共享,东西有没有用每个人有自己的见解,但有东西自己藏着是违背这个原则的。
所以我也没有什么要和你斗 ...



共享才是硬道理!!!

作者: 大秦武士    时间: 2006-12-9 16:15
我愿意共享,我自己弄出来的我也愿意拿出来与大家分享一下我的快乐,比如我发布过一个硬盘版的启动文件(支持中文的那个),还有U盘版的我没共享出来,为什么?U盘版的改动比硬盘版的复杂一些,改动之后,再还原成一个能与大家分享的不涉及侵犯网络高手的版权的版本,我则没那么多时间来弄。直接把我所用的,发布出来,则是对这里的老九与老毛桃的不尊重,所以我一直没有发布它。任务管理器,情况跟这有点类似,一方面它并不是我弄出来的,是一位高手教会我弄与帮我弄的,我拿来收藏而已,要共享是需要先征得他人的同意,不是吗?二方面是有兼容性方面的限定。我现在与这位高手失去了联络,因此不敢妄自发布出来。并不是我喜欢拿出来炫,那个帖子我本来也没拿出来炫的意思,只是说明原帖发布出来的是一个骗人的版本,所谓的vista版的,其实就是以前的longhorn版的,被改了一下图标而已。岂有自己出来炫的意思?

[ 本帖最后由 大秦武士 于 2006-12-9 04:43 PM 编辑 ]
作者: qinjg8008    时间: 2006-12-9 16:19
那就是误会了,我去修改帖子,得罪之处请包涵
作者: 大秦武士    时间: 2006-12-9 16:35
呵呵,没事, 我这页上的一个回复,我也删改了。
关于xpeinit,并不是我对阁下不敬,出言相讽,我本人其实爱对技术进行一番反思与价值评判,纯粹是这样一种评论而已,并不曾涉及阁下人身。
现代的技术,一方面高度发达,一方面也大量被误用、滥用与浪费。这些大量被误用的,则是对人类社会劳动一种异化与贬低,比如电脑这种技术,我个人有很多想法与感想,也可以说是有一些反省与评判。也许我对电脑技术不及各位深入与精通,但我本人对技术的反思,则可能有独到与真切的见解。呵呵,以后多多交流吧。
作者: chouliu    时间: 2006-12-12 13:00
呵呵...现在对PE进行研究的人越来越多了,高手们纷纷出现。这是一件大好事情,也是正常的事情。
LZ把自己的一些独到想法与技法公开来,和大家一起分享。这真值得我们学习和尊重。希望LZ能多多发一些这样的帖子。
PE的发展与壮大,跟老九的辛苦劳动、老毛桃的大力精简与推广,是分不开的。前人之师,的确受用无穷。
其他人的不断完善、补充,将会使PE更好!
不打口水战,技术共享。大家努力啊!
呵呵...
作者: andrew3881    时间: 2006-12-17 17:03
优化后总内存占用没少啊?
作者: darkradx    时间: 2006-12-17 19:02
XP下好用, 不知2003下面是否确实有问题
作者: tanfb    时间: 2006-12-25 14:59
无私奉献
作者: vpgame    时间: 2006-12-28 16:25
下载使用,谢谢分享
作者: cchessbd    时间: 2007-1-9 02:00
下载后解压运行不了。
作者: jast    时间: 2007-1-9 09:48
感觉没什么用啊,用了没什么效果
作者: snr959    时间: 2007-1-9 16:56
我的SP2用不了啊
作者: asd321    时间: 2007-1-9 19:17
好东西,支持一个!!
作者: kncy    时间: 2007-1-9 20:33
不错
多谢分享。
作者: xiangsui    时间: 2007-1-9 22:04
XP ebmedded 补充完美版 无法运行


原版没修改的的这个管理器可以运行

Longhorn 任务管理器 完美版
http://www.orsoon.com/Software/4969.html


希望有人能解决。。另外一个
原版的任务管理器taskmgr 有内存管理功能的能照常运行
http://www.caicai.org/downinfo/23469.html

[ 本帖最后由 xiangsui 于 2007-1-9 11:12 PM 编辑 ]
作者: eblise    时间: 2007-1-10 02:10
果然强悍
但是内存一下就释放了,而且一点感觉都没有,好像有点怪怪的哦,以前用内存释放软件释放内存的时候,都会CPU100%一下,感觉卡几秒,LZ这个一点感觉也没有,回车一下立马释放!?!?!
作者: chowyu    时间: 2007-1-10 08:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: dava00    时间: 2007-1-10 11:44
支持好人呵呵
作者: 勇哥    时间: 2007-1-11 18:34
非常不错..谢谢楼主..
作者: yaoaijia    时间: 2007-1-12 20:39
感谢楼主的好东东,试试
作者: wweir    时间: 2007-1-13 00:06
好软件,支持分享了!
作者: sky3380    时间: 2007-1-13 19:51
楼主真乃强人,佩服!
作者: jxf268    时间: 2007-1-13 22:17
下一个玩玩
作者: ljm008    时间: 2007-1-15 09:13
好冬冬,定一下
作者: bigsna    时间: 2007-1-31 16:19
支持原创!虽然我不会用 !
作者: gangdou1998    时间: 2007-4-11 17:26
那个映像路径我觉得挺实用的.在查毒杀毒方面挺方便的.
作者: wpz    时间: 2007-4-29 13:52
呵呵。支持一下。支持哪无私奉献的人!
作者: ok123456    时间: 2007-5-3 13:36
脱壳了,换上VISTA的图标了.重新加了层壳,体积有点提升,150K!(自己水平太烂咯,虽然体积方面还是有点遗憾,但总算完成自己一个拥有内存整理功能longhorn管理器的心愿)
为了有这个带内存整理功能的longhorn管理器,而又忍受不了这难看的图标界面.期间曾经试着用oHuangKeo的方法给longhorn管理器增加内存整理代码,但没有成功,.一直很遗憾(我有点太完美主义了),终于在这找到了,非常开心.
PS:脱壳目的不是为了盗用,而做了XX特别版,纯粹是闲原来的界面难看.
作者: cfgs    时间: 2007-5-3 14:51
楼上能共享吗?希望能替换XP安装盘的。
作者: ok123456    时间: 2007-5-3 16:37
可以啊,不过,请注意这个软件不是我的作品,请注意版权.
我把他改了下,改成绿色版的了,无需替换系统文件.
要的可以进我网盘下载:vidvervy.ys168.com
在网盘的"新建文件夹"里
作者: weyes    时间: 2007-5-3 18:03
楼主是高手哦 以前看过这个任务管理器 一直都没找到下载 原来在这里:lol
作者: tdkj1247    时间: 2007-6-18 13:55
我的没有任何错误啊,挺好的,谢谢了
作者: amazingosp    时间: 2007-7-18 14:55
谢谢,研究
作者: 988668    时间: 2007-7-25 21:14
强,如果能加入自动和定制释放功能就完美了:lol
作者: asionwu    时间: 2007-8-4 10:34
支持一下 好东东:) :)
作者: yzxiaowu    时间: 2007-8-4 15:46
超过512的内存机不需要这个了吧,^_^!
作者: zzqw    时间: 2007-8-5 13:16
呵呵。支持一下。支持哪无私奉献的人!
作者: zhangyuok    时间: 2007-8-5 15:33
请求楼主做一个xp sp1的,
作者: 濁酒半壺    时间: 2007-8-22 17:02
这是个好东西呀,下载试用一下,省得查程序还得用其他工具
:victory: 来半壶酒 :victory:
作者: curclew    时间: 2007-9-27 16:51
在我的机子上,只要重复运行,必然出错。
作者: wfccsqk    时间: 2007-11-9 21:48
爽 建议楼主再增加一个功能

只要当前用户是管理员权限 就直接提权为系统权限运行 哈哈哈
作者: kamanya    时间: 2007-11-16 01:40
还真的不错用耶...

可以选单个程式释放^^

不错^^
作者: haiou327    时间: 2007-11-16 02:10
功能扩展得很好!!!!!!!!!!!!!!
作者: tercel0624    时间: 2009-10-26 10:58
不错,下来研究下!  
作者: w30    时间: 2010-3-13 17:08
这么好的东西,一定要支持
作者: adic    时间: 2010-3-18 08:30
好东西一定要支持。多谢分享
作者: xujunhua    时间: 2010-3-30 13:05
多谢了 可以优化内存啦
作者: ziyouren    时间: 2010-11-29 13:25
xpsp3可以用吗?可以的冒泡。
作者: ziyouren    时间: 2010-11-29 13:26
xpsp3可以用吗?可以的冒泡。
作者: holl784    时间: 2010-12-26 16:22
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3