Jump to content

[Solved] ASM Dos


Ramzes
 Share

Recommended Posts

Hello,

I'm again programing with ASM in AutoIt. Now I've problem with DOS functions.

I want to create the easiest function - console output.

My code:

#include <Memory.au3>
 
Global Const $pRemoteCode = _MemVirtualAlloc(0, 512, $MEM_COMMIT, $PAGE_EXECUTE_READWRITE)
Global Const $tCodeBuffer = DllStructCreate("byte[512]", $pRemoteCode)
 
$Text = "Hello"
$tString = DllStructCreate("char[" & StringLen($Text) + 1 & "]")
$pString = DllStructGetPtr($tString)
DllStructSetData($tCodeBuffer, 1, _
  "0x" & _
  "66BA" & Hex(Binary($pString))  ; mov dx, string ptr
  "B409" & _       ; mov ah, 9
  "CD21" & _       ;int 0x21
  "C3" _           ; ret
  )
$Ret = DllCall("user32.dll", "int", "CallWindowProcW", _
  "ptr", $pRemoteCode, _
  "int", 0, _
  "int", 0, _
  "int", 0, _
  "int", 0)
MsgBox(32, "", $Ret[0])
Edited by Ramzes

Sorry for my bad English but nobody is perfect. [font=arial, helvetica, sans-serif]Ramzes[/font]

Link to comment
Share on other sites

Last I checked, AutoIt is for Windows. To run 'int 21h' you'd need to be running in DOS or a DOS emulator, and the code would need to be in a compiled 16-bit program (or 32-bit with DOS/4gw extensions).

*edit: confusing sentence

Edited by Ascend4nt
Link to comment
Share on other sites

'Confusing sentence' was the reason for the edit. It's not possible. You are probably confusing Windows Console applications with DOS programs.

Link to comment
Share on other sites

Thanks for reply.

So commands like copy, run etc. aren't working too?

I don't understand how AutoIt uses standard functions like FileRead, FileCopy or Run.

Sorry for my bad English but nobody is perfect. [font=arial, helvetica, sans-serif]Ramzes[/font]

Link to comment
Share on other sites

DOS-style commands work in the Console, but they are running under Windows, the same as AutoIt. With a compiled 16-bit DOS program, it can run under a DOS-emulator or VM, or even under NTVDM for that matter (which only operates under 32-bit O/S's). But again, for all these environments, the code has to be executed from a compiled DOS program.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...