Monday, June 11, 2018

SprintDLL - Linebreak escape characters

I realized today that it was virtually impossible to get a linebreak into a SprintDLL string. A literal linebreak in the command would be interpreted as the end of the instruction and would cause a syntax error. Passing a blockptr to a collection of short literals (for character code points) in place of an lpwstr works, but is of course supremely inconvenient. So today I adjusted the parser to recognize a few more escape sequences in quoted strings. \r and \n now become a carriage return and line feed, as appropriate, and \N becomes a CR/LF sequence.
call kernel32.dll!GetStdHandle /return native /into out (int -11)
call kernel32.dll!WriteConsoleW (slotdata out, lpwstr "Hello world!\N", int 14, nullptr, nullptr)

No comments:

Post a Comment