【发布时间】:2011-01-10 17:57:14
【问题描述】:
我试图“破解”一个控制台程序,迫使它显示一些东西。问题是我无法打印换行符 (\r\n)。
使用 disassebler 我找到了这个地方并编辑了二进制文件:
push 4ad0eb46 ; the string (let's pretend "Hi guys")
push 4ad0eb80 ; and the format ("%s")
call near ds:[<&msvcrt.printf>] ; call printf
jmp 4ad0eb4f ; skip data
; now here I coded the strings
mov ds:[4ad289ec],eax ; and here the program resumes
正如我所说,我无法打印换行符。我尝试在格式字符串中编码"\r\n"(所以它变成"%s\r\n",就像我在C中所做的那样)并打印"Hi guys\r\n",然后在
字符串本身(使其成为"Hi guys\x13\x10")并得到"Hi guys"和两个奇怪的字符,可能是0x13和0x10的ASCII表示。
【问题讨论】:
-
你得到的“奇怪字符”到底是什么?你觉得奇怪的东西可能对其他人有用。
-
一种“!!”和一个三角形,类似于'|>'
标签: string newline printf format-string hardcode