프로그래밍

 3198, 1/160 회원가입  로그인  
   milkily
   http://www.cyworld.com/91204795
   디버깅이란? 쌩초보라 ㅠㅠ

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3180 [복사]


레벨문제를 풀다보면, 소스를 보잖아요 그다음 여의치않으면 디버깅을하잖아요

디버깅을 할려면 바이너리 파일?? 소스파일이 잇어야만 디버깅을 할수잇는건가요?

리눅스의 경우 대부분 오픈소스 이다보니 그런가보다하지만

윈도우경우 *.exe *.dll이런파일들도 디버깅 할수잇나요?

물론 디버깅 툴다운받아서 해보면 되겟지요..

근데 워낙 쌩초보라.. 개념부터 힘드네요.. 수고하세요

  Hit : 6881     Date : 2011/10/12 09:26



    
$Zero 어떤 언어로 작성되든 컴퓨터는 결국 0,1과 같은 이진수로 연산을 합니다.
그리고 이 0과 1의 연산들을 사람이 보기 쉽게 바꾸면 어셈블리어가 되겠지요 ?

디버거가 바로 이 0과 1의 연산들을 어셈블리어로 바꿔 사람에게 보여주는 툴입니다.
프로그램의 동작방식이야 중간에 가상머신이 끼던 어떤 언어로 했던 다 똑같잖아요 컴퓨터라면, 그 근원부터 추적하는걸 리버싱이라고 하며 디버깅한다라고도 할 수 있습니다.
다만, 사람이 알아보기 힘들게 안티디버깅이나 여러 트릭을 첨가하기도 하지요 . 프로그램 데이터를 모두 암호화 시켜놓고 실행하면 첫 헤더나 중간부분에서 스스로 암호를 해독해 해당 데이터로 실행하는 등.. 여러가지 언팩기술이나 안티디버깅 기술들이 있습니다. 이것도 역시 사람이 알아보기 힘들게 할 뿐 내부적으론 0과1의 연산뿐이니까요 .
결국 오픈소스가 아니어도 프로그램의 동작방식을 알아낼 순 있다는소리입니당.

리버스엔지니어링을 배워보시면 신세계가 열립니다.
2011/10/12  
BrokenPipe 제로님이 잘 설명해주신거같으니
질문에만 답할게요

디버깅시에는 소스파일은 필요없고 디버깅 바이너리만 있으면 가능합니다
*.exe도 바이너리니 물론 디버깅 할수 있고요
*.dll도 물론 가능합니다.
2011/10/12  
phpmyadmin 디버깅 툴
gdb
objdump
IDA
OLLYDBG
등
2011/10/13