能力值:
( LV2,RANK:10 )
|
-
-
2 楼
这一条 Sleep(8000) 语句用汇编怎么写语句?先谢谢了!
----我要让一个程序停几秒后才执行。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
Sleep() 是API函数.
|
能力值:
(RANK:350 )
|
-
-
4 楼
建议你用delphi或VC写几句指令,然后反汇编对比看。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
谢谢,我试过了,写了一条简单的 sleep(8000);反汇编弄出来太复杂了。我想看看真正的汇编语句是怎么样的?
就这条 sleep(8000) 汇编语句怎么表达达?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
在OD里看到的:
PUSH 1F40 ; /Timeout = 8000. ms
CALL <JMP.&kernel32.Sleep> ; \Sleep
是这个吧?
Sleep初值可以用PE查到,1F40是8000毫秒了吧?
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
我用OD的分析代码查到了:
push IF40 是8000毫秒
push 1000 是4096毫秒
......
应该是这样了!
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
请坛主看看,全部完整的代码对不对?
MOV EAX,EAX
PUSH EBX
MOV EBX,EAX
PUSH 1F40 ; /Timeout = 8000. ms
CALL <JMP.&kernel32.Sleep> ; \Sleep
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
全部源代码:
0043E225 00 DB 00
0043E226 8BC0 MOV EAX,EAX
0043E228 . 68 401F0000 PUSH 1F40 ; /Timeout = 8000. ms
0043E22D . E8 8E7EFCFF CALL <JMP.&kernel32.Sleep> ; \Sleep
0043E232 . C3 RETN
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
终于改好了:
一定要改delphi程序的起始入口语句:Application.CreateForm(TForm1, Form1)的位置(这个位置是要打开主窗口),用dede找到它的jmp点地址,并记住这个值(复制)jmp xxxxxx,然后打开OD,从键盘上修改这个jmp,把它指向自己在一个空白地址上的第一个语句地址,比如是jmp 0043E228,从这里写下面的延时语句(可以预先写好放着):
0043E228 PUSH 1F40 ; /Timeout = 8000. ms
0043E22D call dword ptr[503456] ; \Sleep
0043E22E: jmp xxxxxx ;返回到原来的jmp值
保存文件,即可使程序按自己的意愿暂时挂起几秒钟后才继续执行^_^这样改造,对于那些开机就需要启动的网络登陆程序很有必要(否则容易发生网络登陆出错的窗口)
注:sleep的取值ThunkRVA要用PE去查找,找到后(比如是103456)再加基址400000,调用语句则为:call dword ptr[503456]
【本帖从不会到会,自我学习,结果供大家分享。本帖到此结束。】
|
|
|