我正在调试旧的PC BIOS,它的大部分常量字符串直接直接插入代码中,例如:

将字符串作为参数,通过返回地址找到它!遍历字符串之后,它实际上对堆栈进行了修补以返回正确的值。 br />是否正在传递这样的常量参数,将它们放在调用之后,以任何方式(例如,这种低级(手写的?)代码的通用技术?您甚至更喜欢这样做,而不是在其他地方使用字符串表?

评论

出于好奇,具体是哪个PC BIOS?此外,根据BIOS的年代,还有一个专注于逆向计算的StackExchange网站,您可以查看

它是Phoenix的Toshiba T3200SX的BIOS版本3F,其自身标识为“ T3200SX V3.30”,还包含字符串“ 80386 ROM BIOS PLUS Version 1.10 07”。感谢您的指点!

#1 楼

由于没有对包含字符串的特定地址的明确引用,因此该技术允许代码与位置无关。取而代之的是,该调用指令会将当时的当前地址压入堆栈。根据用于生成代码的汇编器(如果有),这可能会简化某些事情。如果代码完全是通过输入十六进制值来手工制作的,则具有位置独立性可以插入其他指令,而无需重新计算地址。