能力值:
( 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
就是这段代码?? 大哥你看有错误码的地方吗??
|
能力值:
( 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
|
能力值:
( LV3,RANK:20 )
|
-
-
28 楼
原来是这样的啊,楼主真是高人!
可是我那是在OD里面直接写的, 那句为什么是6个字节,OD里面写的时候没有扩展成6个字节??
在下无知,让楼主见笑了.
|
能力值:
( LV9,RANK:850 )
|
-
-
29 楼
你有选中"用nop填充"么?
|
能力值:
( LV3,RANK:20 )
|
-
-
30 楼
谢谢楼主.
我选中的.
可能是机器码的问题, 我下了本 <Intel80x86 Opcodes大全> 去看看, 谢谢楼主的耐心!!
|
能力值:
( LV9,RANK:850 )
|
-
-
31 楼
嗯``不用,加油哈
|
能力值:
( 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
|
能力值:
( LV9,RANK:850 )
|
-
-
33 楼
我的机器``没问题``
call有问题,大概是参数,不过我看你参数没什么问题``
你看见代码前面有一个?没有`为什么有一个?,自己想想就知道`你把那个nop改回来就行了``
那个call也不会有错了
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
大菜~剁你J8毛~
|
能力值:
( LV9,RANK:850 )
|
-
-
35 楼
楼上那家伙真低级呀``
|
能力值:
( 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 我觉得比楼主的写法要好一些.
再次谢谢楼主.
|
能力值:
( LV9,RANK:850 )
|
-
-
37 楼
错误解决得越多,经验值越高```
|
能力值:
( LV9,RANK:850 )
|
-
-
38 楼
``````````````````````
|
能力值:
(RANK:410 )
|
-
-
39 楼
他写的也没问题的
pushad和popad后eax已经恢复为原来的句柄了。
|
能力值:
( LV9,RANK:850 )
|
-
-
40 楼
哦``是哦,原来popad在前面`
|
能力值:
( LV2,RANK:10 )
|
-
-
41 楼
嘿嘿 原来大菜也会糊涂呀
难得糊涂啊
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
我也觉得pushad和popad这样写比较合理.
|
能力值:
( LV2,RANK:10 )
|
-
-
43 楼
又学了一招~~~谢谢!
|
能力值:
( LV2,RANK:10 )
|
-
-
44 楼
交个朋友加QQ 987241
|
能力值:
( LV2,RANK:10 )
|
-
-
45 楼
其实每次OnDraw的时候SetWindowPos(hWnd, NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER)不就可以了吗
|
能力值:
( LV2,RANK:15 )
|
-
-
46 楼
不错,等着看看能不能把浏览器置顶,看电影,呵呵
|
能力值:
( LV2,RANK:10 )
|
-
-
47 楼
有意思,学习了。。
|
能力值:
( LV9,RANK:310 )
|
-
-
48 楼
能不能在标题栏右键菜单加上一个置顶选项,我用exescope找不到右键菜单的资源,这个是不是窗口的标准资源?如何改?我看见有软件有这个功能,是怎么弄出来的???
|
能力值:
( LV13,RANK:357 )
|
-
-
49 楼
恢复覆盖代码 最好放到 popad后面去.这样不会因为call
USER32.SetWindowPos 对原来程序的产生影响
|
能力值:
( LV3,RANK:20 )
|
-
-
50 楼
试了一下感觉call [<&USER32.SetWindowPos>]这里会出问题
在OD 中直接写成call [<&USER32.SetWindowPos>]或者call dword ptr [<&User32.SetWindowPos>]
od均会提示语法错误
而写成call dword ptr [101301A]则不会出问题。
|
|
|