能力值:
( LV7,RANK:100 )
|
-
-
2 楼
嘿嘿,搞定了。
API不熟悉啊
方法:bp Shell_NotifyIconW
Atl+F9 如下:
008F8D78 52 push edx
008F8D79 57 push edi
008F8D7A FF15 D8BA2E01 call dword ptr [12EBAD8] ; SHELL32.Shell_NotifyIconW
008F8D80 85C0 test eax, eax
008F8D82 74 0A je short 008F8D8E
OD 直接改了:
008F8D78 |. 90 nop
008F8D79 |. 90 nop
008F8D7A |. B8 01000000 mov eax, 1
008F8D7F |. 90 nop
008F8D80 |. 85C0 test eax, eax
008F8D82 |. 74 0A je short 008F8D8E 这样程序正常启动了,桌面右下角的小图标也没了
效果达到了
不过个kx怎么呢?
###############################################################
谁抢到板凳,给谁kx
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
啦啦啦,我来了
|
能力值:
( LV7,RANK:100 )
|
-
-
4 楼
都给LS的哥们儿了
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
今天真幸运,学到知识还得到kx。
谢谢楼主!
|
能力值:
( LV7,RANK:100 )
|
-
-
6 楼
客气哈
互相交流,互相学习哦!
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
呵呵,这个有点用,偶也改个试试先!
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
能说说为什么吗?别的软件 一样不?
|
能力值:
( LV7,RANK:100 )
|
-
-
10 楼
SHELL32.Shell_NotifyIconW这个API的返回值为0则失败,非0则成功.
下面我们来猜测一下:
这个返回值标志成功与否,那我就让他返回成功,程序会对这个“小图标”做什么呢?
我们一般点击“小图标”都会弹出一个菜单操作,这些无非都是消息,那么如果隐藏了“小图标”,我们人为的就无法去触发消息,后面的操作就执行不了,这样出错的可能性就小了。
另一点,“小图标”创建成功了,想必他会创建“菜单”,创建的这个“菜单”应该是不需要引用“小图标”的一些东东。
这样想的话,他只是单独的一小模块,他的作用只是提供用户操作的一个接口,nop掉他也就没什么影响了。
上面的猜测,我这里是达到效果了,但是我在这样做的时候也只是报着一个试验的态度,因为不排除其他的程序里面有着千丝万缕的联系。
由于自己并非做c/c++这一块的,所以上面猜测中所说的也只是猜测,要逆向,正向则是必备的基础。而在c/c++这块我就没什么正向的底了
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
谢谢楼主!学习了。
|
能力值:
( LV7,RANK:100 )
|
-
-
12 楼
由于是猜测,所以多作一些测试
闲来就拿自己电脑上的迅雷试验一下了
如图:
未修改前代码:
004CAF98 56 push esi
004CAF99 6A 00 push 0
004CAF9B EB 23 jmp short Thunder.004CAFC0
004CAF9D 8B4E 20 mov ecx,dword ptr ds:[esi+20]
004CAFA0 83A6 98000000 00 and dword ptr ds:[esi+98],0
004CAFA7 C786 9C000000 02>mov dword ptr ds:[esi+9C],2
004CAFB1 898E 94000000 mov dword ptr ds:[esi+94],ecx
004CAFB7 81C6 90000000 add esi,90
004CAFBD 56 push esi
004CAFBE 6A 01 push 1
004CAFC0 FF15 246E5100 call dword ptr ds:[<&SHELL32.Shell_NotifyIco>; SHELL32.Shell_NotifyIconW
004CAFC6 5E pop esi
004CAFC7 C2 0400 retn 4
修改后的代码:(还是nop哈 )
004CAF98 56 push esi
004CAF99 6A 00 push 0
004CAF9B EB 23 jmp short Thunder.004CAFC0
004CAF9D 8B4E 20 mov ecx,dword ptr ds:[esi+20]
004CAFA0 83A6 98000000 00 and dword ptr ds:[esi+98],0
004CAFA7 C786 9C000000 02>mov dword ptr ds:[esi+9C],2
004CAFB1 898E 94000000 mov dword ptr ds:[esi+94],ecx
004CAFB7 81C6 90000000 add esi,90
004CAFBD 56 push esi
004CAFBE 6A 01 push 1
[COLOR="Red"]004CAFC0 90 nop
004CAFC1 83C4 08 add esp,8
004CAFC4 90 nop
004CAFC5 90 nop[/COLOR]
004CAFC6 5E pop esi
004CAFC7 C2 0400 retn 4
其它还有一些地方调用了这个api,就不管他做什么用了哈,修改这个就OK了
上图中也可以看到没有影响到迅雷的正常使用!
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
学习了,收藏下主题
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
学习,学习,真的学习,呵呵,太感谢了。改一下其他的,自己也去试下
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
Shell_NotifyIcon函数吧
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
nop 的时候为什么还要 add esp,8 呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
004CAFBD 56 push esi
004CAFBE 6A 01 push 1
004CAFC0 90 nop
004CAFC1 83C4 08 add esp,8
004CAFC4 90 nop
004CAFC5 90 nop
有两次 push ,所以加8平衡堆栈.去掉两个push就应该不用加了.
|
|
|