首页
社区
课程
招聘
[网络漫步兄弟 求助贴(解决)] 把记事本置顶
发表于: 2007-8-3 15:06 21198

[网络漫步兄弟 求助贴(解决)] 把记事本置顶

2007-8-3 15:06
21198
收藏
免费 7
支持
分享
最新回复 (51)
雪    币: 245
活跃值: (469)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
26
0100874E   > \60               pushad
0100874F   .  90               nop
01008750   .  8BD0             mov     edx, eax
01008752   .  3BD3             cmp     edx, ebx
01008754   .  8915 30980001    mov     [1009830], edx
0100875A   .  6A 03            push    3
0100875C   ?  6A 00            push    0
0100875E   ?  6A 00            push    0
01008760   ?  6A 00            push    0
01008762   ?  6A 00            push    0
01008764   ?  6A FF            push    -1
01008766   ?  52               push    edx
01008767   .  E8 AEA80000      call    <&USER32.SetWindowPos>           ; |hWnd
0100876C   ?  61               popad
0100876D   ?  90               nop
0100876E   .^ E9 31BFFFFF      jmp     010046A4
01008773   ?  90               nop

就是这段代码?? 大哥你看有错误码的地方吗??
2007-8-7 11:55
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
27
也就是说你只改了
0100874E   > \60            pushad               
0100874F   .  90            nop
01008750      8BD0          mov     edx, eax                  
01008752      3BD3          cmp     edx, ebx
01008754      8915 30980001 mov     dword ptr [1009830], edx
0100875A      90            nop <-这句没了,这样你就少了一个字节了,上面那句是六个字节,这些补丁代码已经少了一个字节!前面有一个?,od模糊识别了
0100875B      6A 03         push    30100875D      6A 00         push    0
0100875F      6A 00         push    00
1008761      6A 00         push    0
01008763      6A 00         push    0
01008765      6A FF         push    -1
01008767      52            push    edx
01008768      FF15 1A300101 call    dword ptr [<&User32.SetWindowPos>;  USER32.SetWindowPos0100876E   .  61            popad               
0100876F   .^ E9 30BFFFFF   jmp     010046A4
2007-8-7 12:02
0
雪    币: 245
活跃值: (469)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
28
原来是这样的啊,楼主真是高人!
可是我那是在OD里面直接写的, 那句为什么是6个字节,OD里面写的时候没有扩展成6个字节??
在下无知,让楼主见笑了.
2007-8-7 12:14
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
29
你有选中"用nop填充"么?
2007-8-7 12:15
0
雪    币: 245
活跃值: (469)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
30
谢谢楼主.
我选中的.
可能是机器码的问题, 我下了本 <Intel80x86 Opcodes大全> 去看看, 谢谢楼主的耐心!!
2007-8-7 12:42
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
31
嗯``不用,加油哈
2007-8-7 14:09
0
雪    币: 245
活跃值: (469)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
32
楼主我已经发现我的错误的地方了:
并不是那两个NOP的关系

0100874F   .  90               nop
01008750   .  8BD0             mov     edx, eax
01008752   .  3BD3             cmp     edx, ebx
01008754   .  8915 30980001    mov     [1009830], edx
0100875A   .  6A 03            push    3
0100875C   ?  6A 00            push    0
0100875E   ?  6A 00            push    0
01008760   ?  6A 00            push    0
01008762   ?  6A 00            push    0
01008764   ?  6A FF            push    -1
01008766   ?  52               push    edx
01008767   .  E8 AEA80000      call    <&USER32.SetWindowPos>        <---------这一句CALL有问题, 你看看你的机器!!!!

0100876C   ?  61               popad
0100876D   ?  90               nop
0100876E   .^ E9 31BFFFFF      jmp     010046A4
01008773   ?  90               nop
2007-8-7 14:43
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
33
我的机器``没问题``
call有问题,大概是参数,不过我看你参数没什么问题``
你看见代码前面有一个?没有`为什么有一个?,自己想想就知道`你把那个nop改回来就行了``
那个call也不会有错了
2007-8-7 15:46
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
大菜~剁你J8毛~
2007-8-7 16:11
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
35
楼上那家伙真低级呀``
2007-8-7 16:14
0
雪    币: 245
活跃值: (469)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
36
楼主:  我说错了,不是你的机器的问题, 是我写的CALL有问题,看机器码就知道了.

call 0101301A                  我起初是这样的写的.

0100876C      E8 A9A80000         call    <&USER32.SetWindowPos>
01008771      90                  nop
01008772      0000                add     [eax], al

应该这样写.

call  [0101301A]    我看过不少资料上是这样的写 call dword ptr [0101301a],我想其实在32位系统中 dword ptr 可以不用,是系统默认的.

0100875E      FF15 1A300101       call    [<&USER32.SetWindowPos>]         ;  USER32.SetWindowPos

我把补丁代码写成如下:

0100874E   > \60            pushad     //先保存现象
0100874F   .  90            nop
01008750      6A 03         push    3
01008752      6A 00         push    0
01008754      6A 00         push    0
01008756      6A 00         push    0
01008758      6A 00         push    0
0100875A   .  6A FF         push    -1
0100875C      50            push    eax   //这是eax, 是CreateWindowsEx 的返回值,一般返回值放在eax中
0100875D      90            nop
0100875E   .  FF15 1A300101 call    [<&USER32.SetWindowPos>]         ;  USER32.SetWindowPos
01008764      61            popad    //恢复现场
01008765      90            nop
01008766   .  8BD0          mov     edx, eax
01008768   .  3BD3          cmp     edx, ebx
0100876A      8915 30980001 mov     [1009830], edx
01008770   .^ E9 2FBFFFFF   jmp     010046A4

我觉得比楼主的写法要好一些.    

再次谢谢楼主.
2007-8-8 10:27
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
37
错误解决得越多,经验值越高```
2007-8-8 10:35
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
38
``````````````````````
2007-8-8 10:38
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
39
他写的也没问题的
pushad和popad后eax已经恢复为原来的句柄了。
2007-8-8 11:02
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
40
哦``是哦,原来popad在前面`
2007-8-8 11:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
嘿嘿  原来大菜也会糊涂呀
    难得糊涂啊
2007-8-12 00:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
我也觉得pushad和popad这样写比较合理.
2007-8-12 00:51
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
又学了一招~~~谢谢!
2007-8-12 11:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
交个朋友加QQ 987241
2007-9-12 20:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
45
其实每次OnDraw的时候SetWindowPos(hWnd, NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER)不就可以了吗
2007-9-20 13:40
0
雪    币: 429
活跃值: (75)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
46
不错,等着看看能不能把浏览器置顶,看电影,呵呵
2009-8-5 09:25
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
47
有意思,学习了。。
2009-9-24 16:37
0
雪    币: 95
活跃值: (419)
能力值: ( LV9,RANK:310 )
在线值:
发帖
回帖
粉丝
48
能不能在标题栏右键菜单加上一个置顶选项,我用exescope找不到右键菜单的资源,这个是不是窗口的标准资源?如何改?我看见有软件有这个功能,是怎么弄出来的???
上传的附件:
2009-11-12 08:23
0
雪    币: 166
活跃值: (392)
能力值: ( LV13,RANK:357 )
在线值:
发帖
回帖
粉丝
49
恢复覆盖代码 最好放到 popad后面去.这样不会因为call
USER32.SetWindowPos 对原来程序的产生影响
2010-1-4 01:32
0
雪    币: 230
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
50
试了一下感觉call    [<&USER32.SetWindowPos>]这里会出问题
在OD 中直接写成call    [<&USER32.SetWindowPos>]或者call    dword ptr [<&User32.SetWindowPos>]
od均会提示语法错误
而写成call    dword ptr [101301A]则不会出问题。
2010-1-10 12:56
0
游客
登录 | 注册 方可回帖
返回
//