京峰安卓IOS移動端安全逆向課程(加殼脫殼APP破解病毒分析)
二進制安全
看下面代碼
str = "1234\0123"// c語言:strlen(str)=4// redis:strlen(str)=7
所以,簡單來說,二進制安全就是,字符串不是根據(jù)某種特殊的標志來解析的,無論輸入是什么,總能保證輸出是處理的原始輸入而不是根據(jù)某種特殊格式來處理。
比如這邊redis通過len
來表示字符串長度,不會因為中間插入了\0
就返回錯誤結(jié)果。
再舉個例子:(展示非二進制安全)
main(){ ?
? ?char ab[] = "Hello"; ?
? ?char ac[] = "Hello\0Hello"; ?
? ?/*返回0, 由于是非二進制安全,誤判為相等 */
? ?strcmp(ab, ac);
}
標簽: