PB编译器出现低概率的编译错误

在研究反编译的过程中(PB反编译大师从这里下载),发现PB 12.1 6875编译的一个文件,本意要实现如下代码

参数:encoding e

string s
long len

choose case  e

      case encodingansi!
            s = "xxxx"

      case encodingutf8! 

            s = "xxxx"

      case else

            s = "not support"

end choose

return s

在第三个case分支是,操作码应该是

get_var(s)                  //第三个case(case else)

get_string("not support")          //第三个case

convert_string("not support")         //第三个case

Assign_string(s = "not support")         //第三个case

get_var(s)     //返回语句

convert_string(s) //返回语句

return_var(s)  //返回语句

但是实际反编译发现,编译出的pbd中的代码有丢失和错乱,具体为:

get_string("not support")        //第三个case

get_var(s)         //返回语句

convert_string(s) //返回语句

return_var(s)  //返回语句

其错误在于丢失第三个分支,而且仅仅剩下get_string("not support") 一个操作码

这个导致运行时错误或者崩溃. 这个文件样本来自国外一个很出名的PB编写的软件。

 

过去的分析,也发现其他的版本中存在这样的低概率的莫名的错误。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值