能力值:
( LV3,RANK:30 )
|
-
-
2 楼
貌似可以把CMD的输出句柄替换为你的Edit
|
能力值:
( LV9,RANK:210 )
|
-
-
3 楼
呵呵,逆了一下RADASM,轻松解决,
下面是:RADASM里面关于编译链接处理的关键代码:
0042C336 . C745 F4 0C000>MOV DWORD PTR SS:[EBP-C],0C
0042C33D . C745 F8 00000>MOV DWORD PTR SS:[EBP-8],0
0042C344 . C745 FC 01000>MOV DWORD PTR SS:[EBP-4],1
0042C34B . 6A 00 PUSH 0 ; /BufSize = 0
0042C34D . 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C] ; |
0042C350 . 50 PUSH EAX ; |pSecurity
0042C351 . 68 5E774900 PUSH RadASM.0049775E ; |pWriteHandle = RadASM.0049775E
0042C356 . 68 5A774900 PUSH RadASM.0049775A ; |pReadHandle = RadASM.0049775A
0042C35B . E8 26A40100 CALL <JMP.&kernel32.CreatePipe> ; \CreatePipe
0042C360 . 0BC0 OR EAX,EAX
0042C362 . 75 0A JNZ SHORT RadASM.0042C36E
0042C364 . B8 0A000000 MOV EAX,0A
0042C369 . E9 6C010000 JMP RadASM.0042C4DA
0042C36E > C745 B0 44000>MOV DWORD PTR SS:[EBP-50],44
0042C375 . 8D45 B0 LEA EAX,DWORD PTR SS:[EBP-50]
0042C378 . 50 PUSH EAX ; /pStartupinfo
0042C379 . E8 D4A40100 CALL <JMP.&kernel32.GetStartupInfoA> ; \GetStartupInfoA
0042C37E . A1 5E774900 MOV EAX,DWORD PTR DS:[49775E]
0042C383 . 8945 EC MOV DWORD PTR SS:[EBP-14],EAX
0042C386 . 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
0042C389 . C745 DC 01010>MOV DWORD PTR SS:[EBP-24],101
0042C390 . 66:C745 E0 00>MOV WORD PTR SS:[EBP-20],0
0042C396 . 68 62774900 PUSH RadASM.00497762 ; /pProcessInfo = RadASM.00497762
0042C39B . 8D45 B0 LEA EAX,DWORD PTR SS:[EBP-50] ; |
0042C39E . 50 PUSH EAX ; |pStartupInfo
0042C39F . 6A 00 PUSH 0 ; |CurrentDir = NULL
0042C3A1 . 6A 00 PUSH 0 ; |pEnvironment = NULL
0042C3A3 . 6A 00 PUSH 0 ; |CreationFlags = 0
0042C3A5 . 6A 01 PUSH 1 ; |InheritHandles = TRUE
0042C3A7 . 6A 00 PUSH 0 ; |pThreadSecurity = NULL
0042C3A9 . 6A 00 PUSH 0 ; |pProcessSecurity = NULL
0042C3AB . 68 56734900 PUSH RadASM.00497356 ; |CommandLine = "C:\RadASM\Masm32\Bin\ML.EXE /c /coff /Cp /nologo /I"C:\RadASM\Masm32\Include" "C:\Te st\MyDrv.asm""
0042C3B0 . 6A 00 PUSH 0 ; |ModuleFileName = NULL
0042C3B2 . E8 D5A30100 CALL <JMP.&kernel32.CreateProcessA> ; \CreateProcessA
0042C3B7 . 0BC0 OR EAX,EAX
0042C3B9 . 75 20 JNZ SHORT RadASM.0042C3DB
0042C3BB . FF35 5A774900 PUSH DWORD PTR DS:[49775A] ; /hObject = 00000238 (window)
0042C3C1 . E8 A2A30100 CALL <JMP.&kernel32.CloseHandle> ; \CloseHandle
0042C3C6 . FF35 5E774900 PUSH DWORD PTR DS:[49775E] ; /hObject = 000001C4 (window)
0042C3CC . E8 97A30100 CALL <JMP.&kernel32.CloseHandle> ; \CloseHandle
0042C3D1 . B8 0B000000 MOV EAX,0B
0042C3D6 . E9 98000000 JMP RadASM.0042C473
0042C3DB > FF35 5E774900 PUSH DWORD PTR DS:[49775E] ; /hObject = 000001C4 (window)
0042C3E1 . E8 82A30100 CALL <JMP.&kernel32.CloseHandle> ; \CloseHandle
0042C3E6 . 68 00040000 PUSH 400 ; /Length = 400 (1024.)
0042C3EB . 68 56734900 PUSH RadASM.00497356 ; |Destination = RadASM.00497356
0042C3F0 . E8 CFA40100 CALL <JMP.&kernel32.RtlZeroMemory> ; \RtlZeroMemory
0042C3F5 . 33DB XOR EBX,EBX
0042C3F7 > 6A 00 PUSH 0 ; /pOverlapped = NULL
0042C3F9 . 8D45 AC LEA EAX,DWORD PTR SS:[EBP-54] ; |
0042C3FC . 50 PUSH EAX ; |pBytesRead
0042C3FD . 6A 01 PUSH 1 ; |BytesToRead = 1
0042C3FF . 8D83 56734900 LEA EAX,DWORD PTR DS:[EBX+497356] ; |
0042C405 . 50 PUSH EAX ; |Buffer
0042C406 . FF35 5A774900 PUSH DWORD PTR DS:[49775A] ; |hFile = 00000238 (window)
0042C40C . E8 A7A40100 CALL <JMP.&kernel32.ReadFile> ; \ReadFile
0042C411 . 0BC0 OR EAX,EAX
0042C413 . 75 0D JNZ SHORT RadASM.0042C422
0042C415 . 0BDB OR EBX,EBX
0042C417 . 74 05 JE SHORT RadASM.0042C41E
0042C419 . E8 C1000000 CALL RadASM.0042C4DF
0042C41E > EB 1D JMP SHORT RadASM.0042C43D
0042C420 . EB 19 JMP SHORT RadASM.0042C43B
0042C422 > 80BB 56734900>CMP BYTE PTR DS:[EBX+497356],0A
0042C429 . 74 08 JE SHORT RadASM.0042C433
0042C42B . 81FB FF010000 CMP EBX,1FF
0042C431 . 75 07 JNZ SHORT RadASM.0042C43A
0042C433 > E8 A7000000 CALL RadASM.0042C4DF
0042C438 . EB 01 JMP SHORT RadASM.0042C43B
0042C43A > 43 INC EBX
0042C43B >^ EB BA JMP SHORT RadASM.0042C3F7
0042C43D > 68 72774900 PUSH RadASM.00497772 ; /pExitCode = RadASM.00497772
0042C442 . FF35 62774900 PUSH DWORD PTR DS:[497762] ; |hProcess = NULL
0042C448 . E8 A5A30100 CALL <JMP.&kernel32.GetExitCodeProcess> ; \GetExitCodeProcess
0042C44D . FF35 5A774900 PUSH DWORD PTR DS:[49775A] ; /hObject = 00000238 (window)
0042C453 . E8 10A30100 CALL <JMP.&kernel32.CloseHandle> ; \CloseHandle
0042C458 . FF35 66774900 PUSH DWORD PTR DS:[497766] ; /hObject = NULL
0042C45E . E8 05A30100 CALL <JMP.&kernel32.CloseHandle> ; \CloseHandle
0042C463 . FF35 62774900 PUSH DWORD PTR DS:[497762] ; /hObject = NULL
0042C469 . E8 FAA20100 CALL <JMP.&kernel32.CloseHandle> ; \CloseHandle
0042C46E . A1 72774900 MOV EAX,DWORD PTR DS:[497772]
0042C473 > EB 65 JMP SHORT RadASM.0042C4DA
0042C475 > 83F8 01 CMP EAX,1
0042C478 . 74 05 JE SHORT RadASM.0042C47F
0042C47A . 83F8 02 CMP EAX,2
0042C47D . 75 5B JNZ SHORT RadASM.0042C4DA
|
能力值:
( LV9,RANK:140 )
|
-
-
4 楼
你在做IDE吗?支持```
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
在百度上搜一下 “cmd管道输出” 就可以看到很多了。
|
能力值:
( LV9,RANK:210 )
|
-
-
6 楼
是的,RadAsm正是这样用的:
...
0042C34B . 6A 00 PUSH 0 ; /BufSize = 0
0042C34D . 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C] ; |
0042C350 . 50 PUSH EAX ; |pSecurity
0042C351 . 68 5E774900 PUSH RadASM.0049775E ; |pWriteHandle = RadASM.0049775E
0042C356 . 68 5A774900 PUSH RadASM.0049775A ; |pReadHandle = RadASM.0049775A
0042C35B . E8 26A40100 CALL <JMP.&kernel32.CreatePipe> ; \CreatePipe
....
|