꽤 다양한 결과가 나오기는 했는데 그 중에 하나가....

친구폰이 아이폰이어서 실험해 본 결과 맨 처음에 안 되는 줄 알고 메시지를 삭제했음..........

삭제하는 순간 아이폰에서 더 이상 메시지 기능을 못 쓰게 됐음....

친구가 보냈던 문자를 분석하고 싶다해서 코드를 알려줬고 주소들을 한번 분석을 해 본 결과.....




D9 84 D8 B5 
//3649362101

D8 A8 D9 84
//3634944388
 
D9 84 D8 B5 
//3649362101

D8 A8 D9 8B
//3634944395
 
20 E0 A5 A3 
//551593379

E0 A5 A3 68 
//3768951656

2E 20 E0 A5 
//773906597

0D 0A
//3338

이렇게 나온다.... 친구의 분석결과.... 4바이트씩 계속 잘라서 읽는 결과 계속 2바이트씩 뒤로 밀려서 결국 16바이트가 뒤로 밀린 결과가 나온다고 했다.....

다시 생각해보자면.....

원래 끝내야 할 주소값이 바뀌게 되버린것이라고 생각이 된다.

마치 DNA에서 DNA염기들이 T나 TT 이렇게 1~2개만 있으면 돌연변이 DNA로 취급되지만 TTT로 하면 염기들이 다시 재정립되면서 암호가 이어지듯이....

돌려보내줘야 하는 주소값이 어긋났다는 생각이 들었다.

리턴값이 어긋나서 사용자가 불편을 느꼈다.... -> 리턴값 변조를 이용한 오버플로우....






메시지로 전송시킨 내용의 부분이다.

애초에 손상된 유니코드라는 것.....

분명 손상되는 유니코드를 예외처리 시켜 줄 함수를 만들지 않았을리는 없다고 생각이 들었다.(컴퓨터에도 있는 건데 맥북까지 만드는 애플에서 이런 걸 안 만들리가 없다고 생각해서....)

만약 저 생각이 사실이라면, 예외처리를 담당한 사람이 가장 잘 알 수도 있다고 생각했다.

내부에서 뿌린걸까.... 아니면 실력이 대단한 개발자가 언패킹한 것을 알아낸것일까... 그것도 아니고 단순 우연이 맞을까....

더 알아봐야 할 것 같다.