Jump to content
Sign in to follow this  
Ramzes

[Solved] ASM Dos

Recommended Posts

Ramzes

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]

Share this post


Link to post
Share on other sites
Ascend4nt

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

Share this post


Link to post
Share on other sites
Ramzes

@Ascend4nt

You wrote 'confusing sentence' so I think it's possible, yes? If I'm wrong - correct me.


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

Share this post


Link to post
Share on other sites
Ascend4nt

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

Share this post


Link to post
Share on other sites
Ramzes

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]

Share this post


Link to post
Share on other sites
Ascend4nt

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.

Share this post


Link to post
Share on other sites
Ramzes

Thank you again. Now I understand everything.

Topic to close.


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

Share this post


Link to post
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
Sign in to follow this  

×