注册 登录
编程论坛 汇编论坛

这里stdin 是什么意思?

u332744 发布于 2012-08-21 17:27, 1852 次点击
   buffer   db 100 dup(?)
   .CODE
   START:
      invoke StdIn,addr buffer,sizeof buffer
13 回复
#2
u3327442012-08-21 17:27
这是全部代码: 没看到buffer初始化
   .386
   .model flat, stdcall
   option casemap :none

   include windows.inc
   include user32.inc
   include kernel32.inc
   include masm32.inc

   includelib user32.lib
   includelib kernel32.lib
   includelib masm32.lib
   include macro.asm

   .data?
      Handle1   dd   ?
      Handle2   dd ?
      buffer   db 100 dup(?)
   .CODE
   START:
     ;get the handle of the taskbar
   
    ; invoke FindWindow,CTXT('SciCalc'),NULL
      invoke FindWindow,CTXT('Shell_TrayWnd'),NULL         
      mov    Handle1,eax
     ;get the handle of the start button from the taskbar
      invoke FindWindowEx,Handle1,0,CTXT('Button'),NULL   
      mov     Handle2,eax
     ;set the text
      invoke SetWindowText,Handle2,CTXT('go')
     ;used to refresh the caption of the start button
    invoke SendMessage,Handle2,WM_MOUSEMOVE,0,0   
   
      ;????,?????
      invoke StdIn,addr buffer,sizeof buffer
      invoke ExitProcess,0   
   end START
#3
u3327442012-08-21 17:30
上面代码出自
http://www.
还有个问题:
文字被改动之后,什么情况下会恢复为原来的呢?

[ 本帖最后由 u332744 于 2012-8-21 17:31 编辑 ]
#4
zklhp2012-08-21 17:45
masm32.inc在这里面的 就是命令行下的输入函数

是以库形式提供的罢 没代码 可以逆向出来 反正也是汇编 你一看就明白了

0040105C    55              PUSH EBP
0040105D    8BEC            MOV EBP,ESP
0040105F    83C4 F8         ADD ESP,-8
00401062    6A F6           PUSH -0A
00401064    E8 6F000000     CALL <JMP.&kernel32.GetStdHandle>
00401069    8945 FC         MOV DWORD PTR SS:[EBP-4],EAX
0040106C    6A 07           PUSH 7
0040106E    FF75 FC         PUSH DWORD PTR SS:[EBP-4]
00401071    E8 74000000     CALL <JMP.&kernel32.SetConsoleMode>
00401076    6A 00           PUSH 0
00401078    8D45 F8         LEA EAX,DWORD PTR SS:[EBP-8]
0040107B    50              PUSH EAX
0040107C    FF75 0C         PUSH DWORD PTR SS:[EBP+C]
0040107F    FF75 08         PUSH DWORD PTR SS:[EBP+8]
00401082    FF75 FC         PUSH DWORD PTR SS:[EBP-4]
00401085    E8 5A000000     CALL <JMP.&kernel32.ReadFile>
0040108A    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
0040108D    C9              LEAVE
0040108E    C2 0800         RETN 8


比自己写容易一些


[ 本帖最后由 zklhp 于 2012-8-21 17:47 编辑 ]
#5
zklhp2012-08-21 17:45
以下是引用u332744在2012-8-21 17:30:17的发言:

上面代码出自
http://www.
还有个问题:
文字被改动之后,什么情况下会恢复为原来的呢?

文字被改动之后,什么情况下会恢复为原来的呢?

没明白。。
#6
u3327442012-08-22 09:13
上面代码运行后把开始菜单的START或者中文版的"开始" 改为 "GO"了,   怎么改回去
#7
zklhp2012-08-22 19:14
以下是引用u332744在2012-8-22 09:13:18的发言:

上面代码运行后把开始菜单的START或者中文版的"开始" 改为 "GO"了,   怎么改回去

最简单的方法 怎么设置的怎么改回来呗
#8
pangding2012-08-22 20:58
重启一下系统是不是也能改回来呀?
#9
u3327442012-08-23 09:21
过一段时间自动改回来了
可是我没看到有改回来的代码啊
#10
水哥2012-08-23 11:48
invoke SetWindowText,Handle2,CTXT('开始')
#11
u3327442012-08-23 17:57
invoke SetWindowText,Handle2,CTXT('开始')
我当然知道是这么写,我意思是没有这个代码,计算机怎么会自动改回来? 是不是系统每隔一段时间会自动调用恢复原形的API
#12
zklhp2012-08-23 18:16
可能重绘的时候会恢复回来 如果想知道可以拦截一下这个东西的消息看看
#13
u3327442012-08-24 09:30
可以拦截一下这个东西的消息? 可以拦截吗? hook代码怎么写?
#14
zklhp2012-08-24 11:33
以下是引用u332744在2012-8-24 09:30:03的发言:

可以拦截一下这个东西的消息? 可以拦截吗? hook代码怎么写?

不用自己写 spy++ 用这个软件 这个还是微软出的工具呢
1