能力值:
( LV9,RANK:190 )
2 楼
呵呵,学习了...
能力值:
( LV2,RANK:10 )
3 楼
严重支持一下大菜兄弟
学习 支持
能力值:
( LV9,RANK:170 )
4 楼
支持大头菜!!!!!!!
能力值:
( LV2,RANK:10 )
5 楼
基本上看不懂。。。。。。。。。。。
能力值:
( LV2,RANK:10 )
6 楼
verygood……
能力值:
( LV9,RANK:490 )
7 楼
大菜又出手了,支持哈~
能力值:
( LV2,RANK:10 )
8 楼
不错的说,收起来先。。。
能力值:
( LV2,RANK:10 )
9 楼
谢谢大菜一号,大菜万岁万岁万万岁!
能力值:
( LV9,RANK:850 )
10 楼
那我系不系该改口叫自己"朕"了``
哈哈,开玩笑开玩笑
不知道你把记事本置顶有啥用?
能力值:
( LV2,RANK:10 )
11 楼
大菜老师我想用置顶的记事本替换windows下的notepad.exe为什么只能运行一次有效?
替换后头一次运行有效,刷新一下第二次运行就不能置顶了,这是什么道理。
当然不替换系统的记事本是可以正常置顶的。
能力值:
( LV9,RANK:850 )
12 楼
呵呵,这也是正常的,记事本程序是系统的,大概系统会自动还原,重启之后进入安全模式,再替换吧!
能力值:
( LV2,RANK:10 )
13 楼
学习 学习 ......
能力值:
( LV2,RANK:10 )
14 楼
谢谢楼主,辛苦了,学习中。
能力值:
( LV3,RANK:20 )
15 楼
楼主您好: 我把调用SetWindowPos中的代码中的NOP去掉了,改成了这样,却不能运行了!
0100874E > \60 pushad
0100874F . 8BD0 mov edx, eax
01008751 ? 3BD3 cmp edx, ebx
01008753 ? 8915 30980001 mov [1009830], edx
01008759 ? 6A 03 push 3
0100875B . 6A 00 push 0 ; /Flags = 0
0100875D . 6A 00 push 0 ; |Height = 0
0100875F . 6A 00 push 0 ; |Width = 0
01008761 . 6A 00 push 0 ; |Y = 0
01008763 . 6A FF push -1 ; |X = FFFFFFFF (-1.)
01008765 . 52 push edx ; |InsertAfter
01008766 ? E8 AFA80000 call <&USER32.SetWindowPos>
0100876B ? 61 popad
0100876C ?^ E9 33BFFFFF jmp 010046A4 却无法运行,为什么?? 我只不过去了两个NOP?
我一直想不通.
能力值:
( LV2,RANK:10 )
16 楼
学习中,lz加油!!!!
能力值:
( LV4,RANK:50 )
17 楼
呵呵果然够帅,写的够详细,支持
能力值:
( LV2,RANK:10 )
18 楼
老大你对Windows的函数很了解!佩服!
能力值:
( LV2,RANK:10 )
19 楼
游戏外挂上又有新玩法了,(*^__^*) 嘻嘻……
能力值:
( LV9,RANK:850 )
20 楼
呵呵,nop是在写入汇编指令时,选中"用nop填充",所以会出现的一个字节的机器码,也就是0x90
我们能改的只是机器码,因为机器码和汇编指令一一对应,所以也可以直接改汇编指令,但我们不可以改变原程序的大小,所以要选中"用nop填充",你去掉了两个nop,等于去掉了两个字节,改变了原程序的大小,不能运行也是正常的!
比如 mov ax,0123h
这句指令有五个字节,nop的话,od中会出现五个nop,也就是五个0x90,绝不会出现两个或不等于五个的0x90
同理``呵呵
mov ax,0123h<-----这句在Od中nop之后,就变成下面这样
005A54CB 90 nop
005A54CC 90 nop
005A54CD 90 nop
005A54CE 90 nop
005A54CF 90 nop
五个0x90
能力值:
( LV3,RANK:20 )
21 楼
谢谢楼主的回复:
可是我并没有删除任何字节:
0100874F . 90 nop <-----------我用下面的mov edx,eax.....把这个覆盖掉了
01008750 8BD0 mov edx, eax //恢复上面被盖掉的代码
01008752 3BD3 cmp edx, ebx
01008754 8915 30980001 mov dword ptr [1009830], edx
0100875A 90 nop <-------------------这一句也是这样,用下面的.....
我知道NOP的意思为空操作 可为什么去了掉我的程序却运行不起来.
能力值:
( LV9,RANK:850 )
22 楼
不太清楚你的意思
你是说
0100874F . 90 nop <-----------这改为mov edx,eax?
01008750 8BD0 mov edx, eax //恢复上面被盖掉的代码
01008752 3BD3 cmp edx, ebx
01008754 8915 30980001 mov dword ptr [1009830], edx
你看一下,pushad这指令有一字节,
能力值:
( LV3,RANK:20 )
23 楼
pushad 有两个指令?? 60 90??
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
我现在的跳转是这个样子的,程序运行不起来,我跟踪了一下,在调用SetWindowPos中出错了,
程序被中止, 我察看了一下堆栈:
这是执行到: 01008767 . E8 AEA80000 call <&USER32.SetWindowPos>
一句的. EIP=01008767
0006FDE8 00000000
0006FDEC 0069060E
0006FDF0 FFFFFFFF
0006FDF4 00000000
0006FDF8 00000000
0006FDFC 00000000
0006FE00 00000000
0006FE04 00000003
0006FE08 77D19D69 USER32.LoadCursorW
F8执行说是异常,然后就中止了. 不知为什么?
能力值:
( LV9,RANK:850 )
24 楼
不好意思,我搞错,
是一个字节,0x60
能力值:
( LV9,RANK:850 )
25 楼
请把你改的代码贴出来`