京峰安卓IOS移动端安全逆向课程(加壳脱壳APP破解病毒分析)
二进制安全
看下面代码
str = "1234\0123"// c语言:strlen(str)=4// redis:strlen(str)=7
所以,简单来说,二进制安全就是,字符串不是根据某种特殊的标志来解析的,无论输入是什么,总能保证输出是处理的原始输入而不是根据某种特殊格式来处理。
比如这边redis通过len
来表示字符串长度,不会因为中间插入了\0
就返回错误结果。
再举个例子:(展示非二进制安全)
main(){
char ab[] = "Hello";
char ac[] = "Hello\0Hello";
/*返回0, 由于是非二进制安全,误判为相等 */
strcmp(ab, ac);
}