"리버싱 핵심 원리" 2쇄를 찍었습니다~ 

성원해 주신 독자 여러분들께 감사드립니다~ ^^~


많은 독자분께서 블로그와 이메일을 통해 "리버싱 핵심 원리"에 대해 격려와 조언을 해주셨습니다.

정말 감사드립니다~~~



+---+



기억에 남는 이메일들이 많이 있는데요.

의외로 초/중/고 학생중에서 리버싱에 관심을 가지고 열심히 공부하시는 분들이 계시더군요.


어린 학생분들이 인생의 목표를 세우고 한 걸음씩 실천하는 모습을 보면서 가슴이 뭉클하고 절로 숙연해 졌습니다.

새삼 제 자신에 대해 돌아보게되고 삶의 자세에 대해 많이 생각할 수 있었습니다.

덕분에 많이 배웠습니다.



+---+



제 주변에도 제 책으로 공부하시는 분들이 계신데요.

1/3 분량 정도부터 어려움을 느끼시더군요. 

생소한 Win32 API 설명이 나오면서 그 부분이 좀 힘드셨나봐요.


Windows 리버싱이란 API 위주로 프로그램의 동작을 파악해가는 과정의 연속이기 때문에...

API 공부를 피할 수는 없습니다.


한 가지 팁을 알려드리자면 책과 구글 검색을 통해 API에 대한 대략적인 설명을 접한 후 디버깅 실습까지 진행해 보세요.

하나하나 디버깅 하면서 해당 API 의 기능을 익혀 보시기 바랍니다. 억지로 외울 필요 없습니다.

자주 반복해서 나타나기 때문에 나중에 가면 저절로 외워진답니다.


이렇게 하나씩 장애물을 넘어가다보면 자연스럽게 '리버서'가 되는 것입니다.


그리고 어려울땐 질문을 해보세요~

같이 고민하다보면 꼭 해결할 수 있을겁니다~



모두 화이팅 하세요~~~

여러분의 꿈이 다 이루어지길 기원합니다~ ^^



저작자 표시 비영리 변경 금지
신고
    이전 댓글 더보기
  1. 2013.01.22 11:22 신고 댓글주소 | 수정 | 삭제 | 댓글

    어제 책 주문했어요 !!ㅋㅋ

  2. 퐈니아 2013.02.03 22:17 신고 댓글주소 | 수정 | 삭제 | 댓글

    드디어 책을 구매했습니다.
    열심히 보겠습니다..ㅎㅎ

  3. 탄마지 2013.02.21 21:44 신고 댓글주소 | 수정 | 삭제 | 댓글

    축하드립니다^^ 리버싱 처음접하는데 많은 도움되길 기대하고있어요

  4. 매지구름 2013.02.23 11:40 신고 댓글주소 | 수정 | 삭제 | 댓글

    도서 제목이 리버싱 핵심 원리: 악성 코드 분석가의 리버싱 이야기였군요.. ^^
    제가 사정이 있어서 초판에는 구입못하고 오늘 2쇄를 구입했네요.. 구입못한 사정은 뭐...개인적인...
    페북하면 친추나 합시다.
    요즈음 AhnLab 분위기는 어떤지요? 제가 존경하는 안철수교수님의 횡보가 궁금하군요..
    엘다드에일람(리버스엔지니어 비밀을 파헤치다)도 아직다 마스터 못했는데.
    또 리버스코어님이 내 신책이라 반가운 마음에 바로 충동?구매했네요.
    먹고 살기 바빠서... 돈만 많으면 ㅎㅎ
    이승원님 저두 독서와 공상을 좋아하고, 늘 새로운 도전을 꿈꾸고 있습니다.
    댓글이나 페북친추 부탁드립니다. ^^
    근데 님 블로그에 트랙백이 안가는지요? 저 차단 하셨는지? ㅡ,.ㅡa

    • reversecore 2013.02.25 22:16 신고 댓글주소 | 수정 | 삭제

      안녕하세요~

      페북 계정이 있기는 한데요~ 그냥 회사 사람들 근황을 보는 수준이고 그나마 잘 들여다 보지도 않는답니다. ^^

      블로그 트랙백 차단이요? 아뇨~ 사실 그런거 할 줄도 몰라요~ ^^

      감사합니다.

  5. 2013.02.25 10:18 댓글주소 | 수정 | 삭제 | 댓글

    비밀댓글입니다

    • reversecore 2013.02.25 22:14 신고 댓글주소 | 수정 | 삭제

      안녕하세요.

      선행학습에 대한 제 의견은 이렇습니다.

      C, Win32 API, Assembly, Windows 내부구조, 디버거 동작 원리, PE 파일 등을 미리 잘 알고 있다면 선행 학습이 잘 되어 있는 것입니다. 근데 이미 리버싱도 잘 알고계신 상태인거죠. 이정도 선행학습이 되어 있다면 그 다음은 실전만 남은겁니다. ^^

      저 모든 것을 공부하는 것이 리버싱을 배우는 과정이라고 생각합니다. 그런데 프로그래머보다 더 전문적으로 C, Win32 API, Assembly 를 공부하기도 어렵고... 커널 드라이버 개발자보다 Windows 내부구조, 디버거 동작 원리 를 공부하기도 어렵습니다.

      보통 리버싱 초보자들은 선행학습만 하다가 그 엄청난 양에 지쳐서 포기한답니다. 그래서 저는 리버싱의 재미를 맛본 다음에 필요한 것을 필요한 정도 만큼만 찾아 공부하는 방식을 권해드립니다.

      체계가 약간 없어 보일 수 도 있지만... 어느정도 수준으로 올라가면 스스로 알아서 필요한 부분을 찾아서 깊이 공부하게 된답니다. 저와 제 주변의 모든 리버서들은 다 이런식으로 배웠습니다. ^^

      감사합니다.

  6. joon 2013.02.25 12:00 신고 댓글주소 | 수정 | 삭제 | 댓글

    2쇄 구매자입니다. ㅋ
    공부 할겸 겸사겸사 검색하다보니 이곳까지 왔네요. ㅎㅎ
    좋은 정보 많이 보고 갑니다. 종종 올께요 ^^

  7. 매지구름 2013.02.26 16:07 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요 드뎌 오늘 도서가 왔네요...^^
    저두 티스토리 블로그 오픈한지 얼마 안되어서, 사실 밤벌레로 활동하다가 접고 다시 아는 지인에게서 초대장부탁하여 티스토리 블로그 재오픈하였네요..^^
    제 블로그에 도서구입받은 사진 올렸어요.. 댓글이래도 부탁..^^
    저두 블로그에 좋은 컨덴츠를 많이 올릴예정이구 주가가 우상향으로 갈 블로그에요..ㅎㅎ
    꼭 들러주셔서 댓글이래두 남겨 주셨으면 고맙겠습니다. ^^
    오늘도 행복하시구요. 자주 와서 괴롭혀드릴께요,,ㅎㅎ

  8. ㅎㅎ 2013.03.03 18:36 신고 댓글주소 | 수정 | 삭제 | 댓글

    존경해요

    꼭 살겁니다!

  9. hans 2013.03.06 17:24 신고 댓글주소 | 수정 | 삭제 | 댓글

    시스템 엔지니어에서 보안파트로 업무를 변경되고
    악성코드를 찾다보니 백신벤더만으로 한계가 있어서
    책을 구입한지 3개월째...

    대다수 악성코드가 DLL Injection 방식이라 text 결과물로 맨날 쳐다보니 눈도 아프고
    마음도 지치고 편하게 하고자 툴을 만들고 있느라 책을 못보고 있네요 ㅠㅠ

    어여 마무리하고 책을 봐야겠네요 ㅠㅠ

    ps 툴이 어느정도 만들어지면 시험삼아 한번 봐주셨으면 감사하겠습니다. ^^

  10. REng 2013.03.07 20:05 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요?

    승원님 블로그 글을 자주 찾다가 오늘 드디어 책을 샀습니다.^^

    책이 두껍고 내용이 많아 좀 비싸더군요. ㅎㅎ ( 가치에 비해서 비싸다는 뜻이 아닙니다 오해하지 마세요^^)

    감사히 열심히 잘 보겠습니다! 궁금한 점 있으면 자주 들를께요~

  11. Ksg12 2013.04.02 23:12 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요.!!
    리버싱 잘보고있습니다.
    아직 첫장이라서 제가 잘못생각하는걸 수도있는데
    더좋은 IDA 같은 디버깅 프로그램을 갔고
    꼭 올리디버거를 추천하시는게 이유가 있나해서요.

    그리거 어셈블리언어 강의는 없나요 ㅠㅠ

    책 잘보고있습니다.
    두꺼워서 약간 겁을 먹긴했는데 열심이 화이팅해서 보고있습니다 !!
    이런책 써주셔서 감사합니다.

  12. hansu9911 2013.04.25 23:06 신고 댓글주소 | 수정 | 삭제 | 댓글

    C언어 포인터까지 공부하고 바로 이책을 들어갈려고 하는데, 어셈블리어를 하나도 몰라도 진행하는데 문제가 없을까요?
    서점에서 초반부를 봤더니 윈도우 환경이다보니 API 도 나오고 하던데 API 라도 하고 봐야 정상적인 공부가 가능할까요?

  13. BoN 2013.05.20 22:42 신고 댓글주소 | 수정 | 삭제 | 댓글

    후킹이라는 기법을 우연히 알게되어
    간간히 리버스코어님의 블로그에서 이것저것 도전해보고 시도하다가
    포기했었는데
    책이 나왔다는 소식을 듣고 구매했습니다!
    2판 축하드려요 ^^

    목표, 열정 그리고 구글!! :)

  14. 이정욱 2013.05.31 18:39 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요... "리버싱 핵심원리" 책을구매해서 공부하는학생입니다.
    "PE 헤더" 에서 "IAT" 에서 제가 이해를 잘한건지 안한건지를 알고싶습니다..
    기술 자체에는 이해는 가지만.
    DLL 부분에서 a.dll/b.dll 저걸 예시로 들어서 설명을햇는데 그부분이 이해가안갑니다...

  15. 김낙현 2013.06.04 21:42 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요... 이 책을 구매해서 공부하는 학생입니다.
    30페이지에서 all referenced text strings 메뉴에 들어갔는데도 불구하고 어떠한 것도 화면에 출력되지가 않네요... api 검색도 마찬가지입니다.. 이 문제를 어떻게 해결해야 할까요?

  16. 최찬희 2013.06.13 23:48 신고 댓글주소 | 수정 | 삭제 | 댓글

    아 저도 컴퓨터 수리하는것과 프로그램 분석하는게 취미인데
    책이 너무 비싸요 ㅠㅠ

    지금은 c언어배우고있긴한데 c언어보단 리버싱을좋아하는터라..

    언능 돈모아서 사야겠네요 ㅋㅋ

  17. 최찬희 2013.06.19 19:15 신고 댓글주소 | 수정 | 삭제 | 댓글

    책샀어요 괜찮고 좋은 지식배우고있습니다 ㅎㅎ

  18. 최찬희 2013.06.19 19:15 신고 댓글주소 | 수정 | 삭제 | 댓글

    책샀어요 괜찮고 좋은 지식배우고있습니다 ㅎㅎ

  19. Lim 2013.11.08 18:03 신고 댓글주소 | 수정 | 삭제 | 댓글

    열심히 리버스 핵심원리를 읽으며 공부하고 있는 학생입니다. 좋은 책 감사합니다. ^^

  20. katarn 2014.01.02 13:51 신고 댓글주소 | 수정 | 삭제 | 댓글

    축하드립니다. 오랜만에 와봤는데 출판하셨군요. 지름신 발동해서 질러야겠다 ㅋㅋ



가상 인터뷰 형식을 빌려 저와 책에 대한 소개를 합니다. 그리고 블로그와 책의 독자님들께 받은 질문들에 대한 답변을 정리하였습니다.



- 안녕하세요? 본인 소개를 부탁 드립니다.


안녕하세요~ 리버스 엔지니어 '리버스코어' 입니다.    

대학 시절부터 컴퓨터 프로그래밍에 매력을 느껴 공부를 했던 계기로 IT 에 입문하였구요.

소프트웨어 업체에서 3년 동안 네트워크 솔루션을 개발하였습니다.

그 후 보안회사로 이직하여 그때부터 쭉 악성 코드 분석업무를 하고 있습니다.

몇 년 전부터 리버스 엔지니어링 전문 블로그(ReverseCore.com)를 운영하고 있지요.



- 이번에 리버스 엔지니어링 분야의 책을 쓰셨는데요, 간단한 책 소개를 부탁 드릴께요.


'리버싱 핵심 원리' 라는 소프트웨어 리버스 엔지니어링 입문용 기술 서적입니다.


컨셉은 다음과 같습니다.


1) 쉽게 쉽게 쉽게

2) 기술 동작 원리의 이해

3) 흥미와 도전 욕구를 자극


이를 위하여 방대한 분량(1,020 페이지), 풍부한 그림(889개), 실습 예제 및 관련 파일(114개), 소스 코드(62개)를 제공하였습니다. 



대부분의 리버싱 기술은 기초적인 동작 원리를 이해하고 나면 그 뒤부터는 변형과 응용의 연속입니다. 따라서 원리를 이해하기 위한 개념 설명과 실습 예제 분석에 대부분의 지면을 할당하였습니다. 



그리고 리버스코어 블로그를 운영하면서 받았던 질문 중에서 초보자에게 유용한 질문과 답변들을 추려서 FAQ 형식으로 각 장의 뒤쪽에 배치 했고요. 리버스 엔지니어링을 처음 배울 때의 어려움과 고민에 대한 제 생각을 곳곳에 넣어 두었습니다.



- 책을 쓰게 된 계기가 있으실 것 같은데요.


리버스 엔지니어링이라는 기술을 처음 접한 이후 그 매력에 완전히 빠져 들었습니다.


실행 파일(PE File)의 구조와 프로세스의 동작 원리를 공부한 후 다른 프로그램의 내부 구조와 동작 원리를 파악할 수 있다는 사실에 엄청난 희열을 느꼈지요. 처음에는 악성 코드를 분석하여 악의적인 행위를 파악하는 일을 주로 하였습니다. 다양한 악성 코드의 기발한 리버싱 기법들을 보고 배우면서 정말 즐거웠습니다. 


하지만 이렇게 획기적이고 가능성이 무궁무진한 기술들이 주로 나쁜 의도를 가진 사람들에 의해 악용되고 있었습니다. 즉, 리버싱 기술 자체는 매우 쓸모가 많은데 그걸 나쁘게 사용한 사람들에 의해서 '어둠의 기술'로 저평가 되고 있고 별다른 활용 방안이 없다는 사실이 매우 안타까웠습니다.


그때부터 이 리버스 엔지니어링 기술을 좋은 쪽으로 활용할 수 없을까 궁리하게 되었지요. 그러다가 프로그램의 내부 동작 원리를 '분석'하는 차원을 뛰어 넘어 프로그램에 존재하는 버그를 수정하고, 새로운 기능을 추가하는 '패치' 작업까지 관심이 확대되었습니다. 리버스 엔지니어링 기술이 반드시 IT 산업에 큰 도움을 줄 수 있을 거라는 확신이 들었습니다.


제 나름대로 리버스 엔지니어링 기술을 전파시키고 싶어서 블로그 활동을 시작하였습니다. 그러던 중 많은 분들께서 체계적인 학습 방법에 대해 목말라 한다는 것을 알게 되었죠. 그래서 리버스 엔지니어링 입문용 기술 서적을 써보자고 마음먹게 되었습니다.



- 리버싱 기술을 배우면 뭘 할 수 있는지 얘기해 주시겠어요?

    

다른 프로그램의 내부 구조와 동작 원리를 파악할 수 있습니다.

예를 들어 악성 코드의 동작 원리를 파악하여 감염 경로, 악의적인 행위를 알아내고, 진단 및 치료 방법에 대한 아이디어를  얻을 수 있습니다. 특히 다른 파일을 감염 시켜 실행 파일 형태를 바꿔 버리는 기능을 가진 Virus 류의 악성 코드는 상세한 분석이 이루어져야만 진단과 치료 코드를 작성할 수 있습니다.


프로그램의 버그를 수정하고 새로운 기능을 추가 시킬 수도 있습니다. 

예를 들면 제작자가 업데이트를 중단한 유틸리티의 버그를 수정할 수 도 있고, 자신만의 독창적인 아이디어를 적용해 새로운 기술을 추가 시킬 수 도 있는 것이죠. (실제로 개발 업무를 담당하시는 분들께서 자신들의 프로젝트에 DLL Injection 과 API Hooking 기술을 활용하는데 조언을 구해오시는 경우가 종종 있습니다.)


제가 최초로 패치시킨 유틸리티는 출시된지 오래된 fhred 라는 이름의 hex editor 였습니다. 마우스 휠 스크롤 기능이 없어서 매우 불편했습니다. 그래서 마우스 메시지 후킹 기법을 사용하여 휠 스크롤 기능을 추가시켰습니다. 



사실 이때 이미 최신 버전의 frhed 에서는 마우스 휠 기능이 지원되고 있었습니다. 제가 가진건 아주 옛날 버전이었던 겁니다. 그냥 최신 버전을 사용하면 되는 거였지요. 


하지만 제가 배운 기술을 활용하여 제 손으로 직접 패치하고 싶었습니다. 결과적으로 이 작업을 계기로 리버스 엔지니어링 기술의 '패치' 활용 가능성에 대해 눈을 뜨게 되었습니다.



- 리버스 엔지니어링 분야의 진로에 대해서 소개해 주시겠어요?


최근에는 국내 기준으로 보안업체, 게임업체, 게임퍼블리싱업체, 대기업/금융업, 국가 행정 부서, 국가 연구 기관 등이 있습니다. 리버스 엔지니어로써 파일을 상세 분석하는 업무를 하시려면 보안업체, 게임업체, 사이버수사대 등을 고려하시면 될 것입니다. 각 업체별로 다양한 업무 직군으로 세분화되기 때문에 사전에 자신이 원하는 분야의 일을 맡을 수 있을지 확인하셔야 겠지요.


참고로 하드웨어 분야(자동차, 모바일, 반도체, 기타)에서는 리버스 엔지니어링의 역사가 오래 되었습니다. 경쟁사에서 신제품을 출시하면 바로 구입하여 상세 분석에 들어갑니다. 치수를 측정하고, 재질을 조사하고, 회로 기판 구조를 파악하는 등의 작업을 하지요. 기구의 설계 관점과 제품의 성능 관점에서 다양한 분석과 테스트가 이루어 집니다. 소위 말해서 벤치 마킹 작업입니다. 


향후 소프트웨어 분야에서도 전문 리버스 엔지니어가 이런 식의 벤치 마킹 업무를 수행하지 않을까 조심스레 예상해 봅니다. 



- 책 얘기로 돌아가서요, 책 출시 후 반응은 어떻습니까?


너무나 감사하게도 반응이 좋습니다. 인상 깊었던 점은 비슷한 시기에 출시된 리버싱, 디지털 포렌직, 해킹 관련 보안 서적들이 골고루 판매 순위 상위권에 자리잡고 있다는 것입니다. 아마 국내에서도 리버싱, 해킹, 보안에 관한 관심이 그만큼 커진게 아닐까 하고 생각해 봅니다. 


기술서적의 저자들은 자신들이 가장 자신있는 부분에 대해서 아주 자세하고 쓰게 됩니다. 따라서 책마다 저자들의 강점과 개성이 녹아있을 수 밖에 없습니다. 앞으로 더 다양한 리버스 엔지니어링 기술 서적들이 출시되어 전반적인 리버싱 기술 수준이 올라가길 희망합니다. 



- 이 책의 장점에 대해서 알려주시죠.


장점으로는 앞에서 소개한 쉬운 설명, 기술 동작 원리의 이해에 초점, 독자의 흥미와 도전 욕구를 자극하는 것입니다. 


추가적인 장점과 특징에 대해 알고 싶으시다면 책의 서문을 참고하시면 될 것 같습니다.


[리버싱 핵심 원리] 서문



- 책의 세부 내용에 대해서 좀 더 구체적으로 알려주실 수 있을까요?


좀 더 정리해서 다음 포스팅에 올릴께요~



- 기술 서적을 집필하면서 여러가지 에피소드가 많았을것 같은데요. 몇 가지만 소개해 주시겠어요?


어쨌든 집필 과정, 에피소드, 시행착오 등에 대해서 한번은 정리하고 싶었는데요. 

이것도 따로 올리는게 좋겠네요... ^^



- 인터뷰에 응해주셔서 감사합니다. 저자님의 향후 계획은 어떠신지요?


"리버싱 핵심 원리"의 AS (질문/답변)를 하면서 계속 지켜보고 싶습니다. 이 책은 제가 쓰긴 했지만 이제 정식으로 출시되어 제 손을 떠나 독자님들의 손으로 보내어졌습니다. 앞으로 독자님들에 의해서 얼마나 흥미진진한 일이 펼쳐지게 될지 저자로서 너무 궁금하고 설레입니다. (마치 책이 살아서 움직이며 자신의 운명을 개척해 나가는 것처럼 생각됩니다. ^^)


그리고 ReverseCore 블로그에 새로운 컨텐츠를 올릴 예정입니다. 일단 hxdhook 연재를 잘 마무리하고, 그 다음에는 64bit API 후킹에 대해 다뤄볼 생각입니다. 그 이후는 바이러스 파일 분석이 될지, 다이알로그 리소스 패치가 될지 아직 결정하지 않았습니다. (둘 다 너무 재미있는 주제입니다~ ^^)



- 마지막으로 리버스 엔지니어를 목표로 열심히 공부하시는 독자분들께 한 말씀 해주세요~


초반에 어려움을 느끼시는 분들께 이야기를 하나 들려드릴께요~ ^^

정지 마찰력(static friction)과 운동 마찰력(kinetic friction)의 얘기입니다.

정지한 물체를 밀어서 움직이게 하려면 처음에는 높은 저항력(정지 마찰력)때문에 힘이 많이 듭니다. 그런데 일단 물체가 '움찔'하고 움직이기 시작하면 그때부터 저항력(운동 마찰력)은 많이 낮아지면서 훨씬 수월하게 밀고 갈 수 있습니다. (주차장에서 차를 밀어본 경험이 있으시다면 금방 이해하실 겁니다. ^^*)

즉, 정지 마찰력 > 운동 마찰력 의 관계가 성립합니다.

Wiki : 마찰력
Google 이미지 검색 : 정지 마찰력

뭐든지 마찬가지라고 생각합니다. 처음에는 힘들지만 일단 시작하고 나면 탄력을 받아 일이 쉬워집니다. "시작이 반이다" 라는 속담은 정말 정확한 표현이었던거죠.

리버스 엔지니어링도 마찬가지입니다. 처음에는 힘들지만 그 정지마찰력 시기를 잘 넘기고 운동마찰력 영역으로 들어가면 속도가 붙고 재미도 생깁니다. 

저도 똑같이 그 과정을 거쳐왔답니다. 그러니 모두들 용기를 내세요~ ^^*


ReverseCore


저작자 표시 비영리 변경 금지
신고
    이전 댓글 더보기
  1. DarkByte 2012.11.08 23:04 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요. 어렵지만 꿋꿋히 책을읽는 초보입니다. 혹시 언제 날잡아서 오프라인 질문답변이나 강의가 가능할련지요? 싸인회도 한번열어주시면 좋은기회가 될거라생각합니다 ㅎㅎ

    • reversecore 2012.11.10 00:20 신고 댓글주소 | 수정 | 삭제

      안녕하세요~ ^^

      오프라인 만남이 확실히 도움이 될 것입니다만, 제 개인 사정때문에 어려울 것 같습니다.

      대신 이곳에 질문을 올려주시면 답변해 드릴께요~ ^^

      감사합니다.

  2. ssongil 2012.11.11 00:27 신고 댓글주소 | 수정 | 삭제 | 댓글

    리버싱에 관심만 가지다가 책을 찾다보니 딱 제가 찾고 있던 책이 떡하니!!!
    바로 구매해서 열심히 보고 있습니다.

    어서 공부해서 질문을 올릴 수 있었으면 좋겠네요^^

  3. R 2012.11.11 12:05 신고 댓글주소 | 수정 | 삭제 | 댓글

    포맷하면서 이왕이면 리버싱에 최적화된 운영체제로 다시 설치하고 싶은데
    어떤걸 추천하시나요? XP 32비트?

  4. set 2012.11.12 14:01 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요 이번에 좋은책이나왔다고해서 구매하고 공부중인데
    정말 좋은책이네요 ㅎ
    그런데 저자님의 올리디버거 설정파일은 어디있나요?
    홈페이지에 있다고 나왔는데 찾기어렵네요 ㅠ

    • reversecore 2012.11.12 22:58 신고 댓글주소 | 수정 | 삭제

      안녕하세요.

      소스코드 압축을 해제하시면

      01_기초_리버싱\02_Hello_World!_리버싱\etc\ollydbg.ini

      위 경로에 존재합니다.

      OllyDbg 설치 경로에 복사해주시면 됩니다.

      감사합니다.

  5. 양동표 2012.11.17 12:08 신고 댓글주소 | 수정 | 삭제 | 댓글

    기다리고 기다렸는데 드디어 나왔군요!

    밖에서 보고 싶었는데 군대 입대 후 오랜만에 들어와보니 책이 나와있네요.

    그래서 싸지방에서 바로 구매했습니다!

    군생활 동안 열심히 공부하겠습니다!!

    • reversecore 2012.11.20 12:56 신고 댓글주소 | 수정 | 삭제

      안녕하세요.

      와~ 군생활도 힘드실텐데... 리버싱 공부까지... ^^~
      의욕이 대단하십니다.

      공부하시다가 질문 있으시면 올려주세요~

      감사합니다.

  6. 송혜영 2012.11.19 21:56 신고 댓글주소 | 수정 | 삭제 | 댓글

    129p에 add명령어는 3바이트 call명령어는 5바이트 라고 나와있는데
    여기서 사용하는 바이트와 스텍의 크기와는 아무 상관이 없는건가요?
    그리고 각각의 명령어가 사용하는 바이트를 어떻게 알수있나요?

    • reversecore 2012.11.20 12:55 신고 댓글주소 | 수정 | 삭제

      안녕하세요~

      네, Instruction 명령어의 길이는 스택과는 상관이 없습니다.
      명령어의 바이트(내용), 길이는 OllyDbg 에서 직접 보셔도 되고요.
      그 해석 원리를 이해하시려면 49장 IA-32 Instruction 을 참고하시면 됩니다~

      감사합니다.

  7. 송혜영 2012.11.21 18:27 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요 132p목표(2)에서

    registration code를 찾는 부분에서 입력스트링과 정답을 한번 비교해서
    맞으면 정답부분으로 틀리면 틀린 부분으로 가면 되는데
    왜 여기선 입력스트링과 정답을 정답부분에서도 하고 틀린부분에서도하는지 잘모르겠습니다.

    • reversecore 2012.11.25 00:53 신고 댓글주소 | 수정 | 삭제

      안녕하세요.

      ^^ 크랙미를 만드신 lena 님께서 그렇게 프로그래밍을 하셨다고 밖에는 설명드리기 어렵겠습니다.

      저라면 말씀하신 대로 한번만 비교하도록 프로그래밍 했을 것 같습니다.

      감사합니다.

  8. 임영철 2012.11.28 16:00 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요 리버싱 핵심원리 p384 그림 27.2 의 내용과
    본문의 내용이 상이 하다고 생각되어 질문을 드립니다.

    코드 인젝션 단원 부분 인데요
    그림 27.2 에서
    10001002 주소에서는 PUSH 1000781C
    10001007 주소에서는 PUSH 10007828
    1000100E 주소에서는 CALL DWORD PTR DS:[100060E4]

    이렇게 되어있는데 본문 설명과 그림 27.3, 27.4 에서는
    10001002 주소 PUSH 10009290
    10001007 주소 PUSH 1000929C
    1000100E 주소 CALL DWORD PTR DS:[100080F0]

    이렇게 기입 되어 있습니다.
    그림과 본문이 달라서 몇번을 봐도 잘 이해가 되지 않습니다.
    제가 놓친 부분이 있는 걸까요? ㅠ_-

    • reversecore 2012.11.29 00:15 신고 댓글주소 | 수정 | 삭제

      안녕하세요.

      매우 죄송하게도 그림이 잘 못 되었습니다.
      errata 페이지에 정확한 그림을 올려두었으니 참고하시기 바랍니다.

      불편을 끼쳐 드려 죄송합니다~

      추가적인 질문있으시면 또 올려주세요~

      감사합니다.

  9. 2012.11.30 21:08 댓글주소 | 수정 | 삭제 | 댓글

    비밀댓글입니다

    • reversecore 2012.12.02 19:01 신고 댓글주소 | 수정 | 삭제

      안녕하세요.

      ㅎㅎㅎ 지금 하신 방법이 올바른 방법이라고 생각됩니다.

      어떤 드라이버라도 XP ~ 7, 32/64bit 를 모두 지원할 수 는 없답니다.
      그 OS 에 맞는 전용 드라이버를 사용하는 것이 원칙입니다.

      감사합니다.

  10. 2012.12.03 23:55 댓글주소 | 수정 | 삭제 | 댓글

    비밀댓글입니다

    • reversecore 2012.12.04 21:23 신고 댓글주소 | 수정 | 삭제

      안녕하세요.

      1. Themida 는 프로텍터 중에서도 지존이기 때문에 다양한 안티 디버깅 기법이 적용되어 있습니다. 어떤 식으로 왜 튕기는지에 대해서는 저도 답변 드리기 어렵습니다.

      2. 설치 프로그램(Installer)에서 각 OS 버전별로 가지고 있다가 해당 OS 에 맞는 드라이버를 설치합니다. 프로그램에서 매번 하는게 아니라 인스톨러에서 최초 설치 시 한번 수행하는 거라고 생각하시면 됩니다.

      감사합니다.

  11. null0305 2012.12.04 23:37 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요
    오늘 리버싱핵심원리 를 구입하여 읽어보앗더니
    제가 아는거와 모르는 방법이 있어서.
    열심히 공부하기로 다짐하고 악성코드 분석쪽으로 도전할려고합니다.
    (사실은 처음부터 분석쪽 이 어릴적 꿈이여서 인터넷을 통해 공부를 하엿습니다)
    좋은책 을 써주셔서 정말로 감사합니다 ㅠㅠ
    악성코드 분석쪽 으로 일을 갈려면
    궁금한게 있습니다.
    자격증(?) 하고 무엇이 필요한가요?
    악성코드 분석한걸 모아서 포트폴리오 로 하여도 가능할까요?
    긴댓글 읽어주셔서 감사합니다^^~ 좋은하루 되세요~ㅎㅎ

    • reversecore 2012.12.12 06:50 신고 댓글주소 | 수정 | 삭제

      안녕하세요.

      악성코드 분석 꿈나무를 뵙게 되서 반갑습니다. ^^~

      좋은 분석 문서를 많이 작성해서 그걸로 포트폴리오를 만든다면 확실히 면접에서 좋은 인상을 줄 수 있다고 생각됩니다. 실력과 열정을 보여줄 수 있는 확실한 방법이 되겠네요~ ^^

      제가 아는 신규직원들 중에는 그러한 포트폴리오를 가지고 있는 친구들은 없었습니다.

      언제 제가 한번 블로그에 분석 문서를 공개하면 좋겠네요~ ^^
      (악성코드는 민감한 사항이라서 일반 파일을 대상으로 해야죠.)

      감사합니다.

  12. 12ㄴㄴ 2012.12.05 10:17 신고 댓글주소 | 수정 | 삭제 | 댓글

    책이 분량이 너무 많은 것 같은데..
    한권을 2~3권으로 분(分)권 되어잇으면..
    훨씬 좋을 것 같습니다..

    • reversecore 2012.12.12 06:46 신고 댓글주소 | 수정 | 삭제

      안녕하세요.

      분권을 하면 휴대성은 좋아지는데요.
      가격이 같이 오르더라구요. ^^

      다음번 2nd Edition에서는 한번 고려해 보도록 하겠습니다.

      감사합니다.

  13. 2012.12.05 23:52 댓글주소 | 수정 | 삭제 | 댓글

    비밀댓글입니다

    • reversecore 2012.12.12 06:44 신고 댓글주소 | 수정 | 삭제

      안녕하세요~

      Driver 파일은 크게 9X계열의 vxd 와 NT계열의 sys 파일 두 종류가 맞습니다. 그러나 특정 OS 에 특화된 기능(추가된 기능)들을 쓰기 위해서는 각 OS 별로 전용 Driver 를 만들어서 사용합니다. (저희 제품만 봐도 각 OS 별 Driver 를 별도로 제작합니다.)

      물론 간단한 기능의 Driver 라면 어찌어찌 공용으로 쓸 수 도 있겠죠~

      * 질문은 좋은 것입니다. 많이 해주세요~ ^^

      감사합니다. ^^

  14. -_-;; 2012.12.11 11:00 신고 댓글주소 | 수정 | 삭제 | 댓글

    요즘 책 잘보고 있습니다.
    해외 나가기 전에 가져가고 싶었지만 조금의 차이로 해외에서 받게되었네요.
    두께와 내용과 정성에 만족합니다.

    좋은 책 감사합니다.

  15. 매지구름 2013.02.20 18:28 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요, 예전에 밤벌레 아이디로 티스토리 운영하다 다시 닉네임을 바꾸었어요, 매지구름으로요...^^ 책 드뎌 나온건가요? 얼릉 구입해야 겠습니다. 전 요즘 주식에 빠져있어가지고요..
    데이트레이딩으로 수익본다고요... 리버싱관련 도서와 요번에 신설 자격증 정보보안기사.산업기사 자격증이 나왔죠... 쭉 해오던터라 별로 생소한 건 못느끼고요...빨랑 따야죠..ㅎㅎ 님 도서구입링크좀 부탁드려요. 재가 귀찮으니즘에 빠져서,,,,,ㅎ ㅈㅅ 리버스코어님 블로그 제링크에 추가했습니다. *^^*
    앞으로 자주 왕래했으면 싶습니다........^^ 주식하시면 저랑 더욱더 친해질수도..*^^*

  16. 껌나무 2013.03.09 08:27 신고 댓글주소 | 수정 | 삭제 | 댓글

    책 구매해서 잘 보았습니다. 책에 보니까 64bit 디버깅하려면 Windbg, IDA pro툴을 이용하라고 하시던데 제가 필요한 기능이 되는 지 알고 싶습니다.
    32bit dll을 ollydbg에서 assembly code jnz-> jump로 변경해서 패치를 하였습니다. 64bit dll파일도 Windbg나 IDA Pro에서 assembly code 변경이 가능한가요? 조언 부탁드립니다.

  17. sdfkj 2014.07.20 03:23 신고 댓글주소 | 수정 | 삭제 | 댓글

    혹시 컬러 책으로 출판안하나요???

  18. 2014.07.31 00:09 댓글주소 | 수정 | 삭제 | 댓글

    비밀댓글입니다

  19. Charliedelo 2015.06.07 12:45 댓글주소 | 수정 | 삭제 | 댓글

    관리자의 승인을 기다리고 있는 댓글입니다

  20. Chrisphibeni 2015.08.15 13:14 댓글주소 | 수정 | 삭제 | 댓글

    관리자의 승인을 기다리고 있는 댓글입니다


어플리케이션 후킹(Application Hooking) 설계(디자인)에 대한 설명입니다. 후킹 방법을 결정하고, 검증하는 과정을 보여드립니다. 



후킹 방법 결정 - 무엇을? 어떻게? 후킹 할 것인가?


우리의 목표는 [HxD.exe 프로그램에서 PE 파일을 열었을 때 상태바의 "Offset: XXXX" 문자열에 "RVA: YYYY" 문자열을 추가하기]  입니다.


기존 어플리케이션에 어떤 기능을 추가(혹은 수정) 하려고 마음을 먹었다면 그 다음에는 구체적인 방법에 대해 고민을 해야 합니다. 즉, 후킹 설계 과정으로 들어가야 합니다.


윈도우즈 OS의 대표적인 후킹 기법은 "메시지 후킹(Message Hooking)""API 후킹(API Hooking)" 입니다. 둘 중에서 목표 달성에 더 적합하고 구현이 편리한 방법을 사용하는 것이 좋을 것입니다.


일반적으로는 메시지 후킹 기법이 더 간단하고 더 안전하다고 볼 수 있습니다. 대신 경우에 따라(특히 GUI 관련) 더 많은 고려사항이 필요한 경우가 있습니다. 따라서 실전에서는 후킹 설계 단계에서 메시지 후킹 방법이 더 편리할지 확인해 보는 것이 좋습니다.



메시지 후킹 기법 검증


우리 목표에 메시지 후킹 기법이 잘 어울릴지 검증해 보도록 하겠습니다. 


Windows OS 는 어플리케이션 윈도우의 GUI 처리 작업을 위해 윈도우 메시지를 이용합니다. HxD.exe 의 상태바도 일종의 윈도우입니다. 프로그램 내부에서 상태바에 특정 문자열을 쓰기 위해 관련된 윈도우 메시지를 전달할 것입니다. 


* 참고 


GUI 관련 API 를 호출하면 GUI 작업 처리를 할 수 있기 때문에 마치 윈도우 메시지를 사용하지 않고도 작업이 가능한 것처럼 생각될 수도 있습니다. 그러나 실제로는 API 내부에서 윈도우 메시지를 보내는 것입니다. 일반적인 GUI 작업은 메시지 기반으로 동작한다는 것을 기억하시기 바랍니다.


HxD.exe 의 상태바에 있는 "Offset: XXXX" 문자열이 변경될 때 상태바 윈도우 프로시저(Window Procedure)에서 처리하는 윈도우 메시지들을 확인해 보겠습니다. 먼저 HxD.exe 프로그램을 실행 하신 후 적당한 PE 파일을 열어 주세요.


그리고 윈도우 메시지를 모니터링 하기 위해 Spy++ 유틸리티를 실행합니다.



<그림 3 - Spy++ 실행화면>


* 참고


윈도우 메시지 확인에 있어서 Spy++ 은 최고의 유틸리티입니다. 기본 동작 원리는 윈도우 메시지 후킹입니다. 모니터링 대상 프로세스에 DLL 을 인젝션 시켜서 사용자가 원하는 메시지를 모니터링 합니다. Spy++ 은 Microsoft Visual Studio 패키지에 포함된 유틸리티 입니다. 


Spy++의 툴바에서 "Log Messages... (Ctrl+M)" 버튼을 선택합니다. (또는 "Spy - Log Messages..." 메뉴를 선택하셔도 됩니다.)



<그림 4 - Log Messages... (Ctrl+M) 툴바 버튼>


Message Options 다이알로그가 나타납니다.



<그림 5 - Message Options 다이알로그>


Windows 탭의 Finder Tool 을 이용할 것입니다. Finder Tool 아이콘을 마우스 버튼을 누른 채로 드래그 하면 마우스 포인터가 과녁 모양으로 바뀝니다. 이 과녁 모양의 마우스 포인터를 HxD 의 상태바 윈도우에 위치시킨 후 마우스 버튼에서 손을 떼면 Spy++ 의 타겟(Target) 윈도우로 설정됩니다. (과녁 모양의 마우스 포인터 밑에 있는 윈도우는 두꺼운 검은색 테두리가 생겨서 잘 알아 볼 수 있습니다.)



<그림 6 - Finder Tool 로 상태바 설정>


이제 Spy++ 의 Message Options 다이알로그의 "Selected Object" 섹션에 지금 선택된 HxD 의 상태바 윈도우에 대한 정보들이 표시됩니다.



<그림 7 - HxD 의 상태바 윈도우 정보>


각 정보들이 나타내는 의미는 <표 1>과 같습니다.


 항목

 의미

 

 Window

 윈도우 핸들

 001B0362

 Text

 윈도우 텍스트

 Offset: 0

 Class

 윈도우 클래스 이름

 TXmStatusBar

 Style

 윈도우 스타일

 54000100

 Rect

 윈도우 위치와 크기

 (15, 663)-(589, 684) 574x21

 Thread ID

 윈도우를 생성한 스레드 ID

 00000150

 Process ID

 윈도우가 속한 프로세스 ID

 00000F30


<표 1 - Selected Object 항목들의 의미>


* 참고


Spy++ 에서 보여주는 상태바 윈도우의 정보는 나중에 메시지 후킹을 구현할 때 좋은 참고자료가 됩니다.


윈도우 클래스 이름이 "TXmStatusBar" 인 걸로 봐서 윈도우 기본 상태바(StatusBar)를 서브클래싱(SubClassing) 한 것으로 추정됩니다. 그렇다면 기본 동작은 윈도우 기본 상태바와 비슷할 것이라고 예상해 봅니다.


Message Options 다이알로그의 [확인] 버튼을 선택하면 이제부터 Spy++ 은 HxD 의 상태바 메시지를 모니터링하기 시작 합니다. 시험 삼아서 마우스 포인터를 상태바 위에서 이리저리 이동해 보시기 바랍니다. Spy++ 화면에 마우스 관련 메시지가 많이 나타날 것입니다.



<그림 8 - 마우스 이동 메시지>


Spy++ 의 메시지 캡쳐 옵션을 디폴트인 'ALL' 로 설정하였기 때문에 상태바로 전달되는 모든 메시지가 표시되는 것입니다. 우리가 진짜 궁금한 내용은 상태바에 문자열이 써지는 순간에 어떤 메시지를 받느냐 하는 것입니다. 


Spy++ 툴바의 'Clear Log (Del)' 버튼을 선택하여 지금까지 쌓인 로그를 지워버립니다. 그리고 HxD.exe 의 메인 화면 내의 아무 부분을 마우스로 클릭하시기 바랍니다. 마우스가 선택한 파일의 옵셋을 상태바에 출력하기 위해 메시지가 전달될 것입니다.



<그림 9 - 문자열 출력 메시지>


HxD 메인 윈도우에서 마우스 클릭을 한번 하면 정확히 9개의 메시지 로그가 출력됩니다. (제가 보기 편하게 들여쓰기를 하였습니다.)


<00001> 001B0362 S message:0x040A [User-defined:WM_USER+10] wParam:00000000 lParam:0012FA84

<00002> 001B0362 R message:0x040A [User-defined:WM_USER+10] lResult:00000001


<00003> 001B0362 P WM_PAINT hdc:00000000


<00004> 001B0362 S message:0x0401 [User-defined:WM_USER+1] wParam:00000000 lParam:01A06768

<00005> 001B0362 S   WM_PAINT hdc:00000000

<00006> 001B0362 S     WM_ERASEBKGND hdc:33010BC2

<00007> 001B0362 R     WM_ERASEBKGND fErased:True

<00008> 001B0362 R   WM_PAINT

<00009> 001B0362 R message:0x0401 [User-defined:WM_USER+1] lResult:00000001


1번 로그의 메시지는 WM_USER(0x400)+A 이고 그 때의 lParam 값은 0012FA84 입니다. lParam 값이 마치 스택의 주소를 가리키는 것으로 추정됩니다. 그리고 4번 로그의 메시지는 WM_USER(0x400)+1 이고 lParam 값은 01A06768 입니다. 이 값 또한 메모리 주소를 표시한다고 추정해 볼 수 있겠습니다. 


마우스(또는 키보드)를 이용하여 HxD 메인 윈도우의 커서를 다른 옵셋으로 이동시키면 기본적으로 이와 동일한 9 개의 메시지 로그가 기록됩니다. 그리고 4 번째 로그의 lParam 값은 계속 바뀌는 것을 알 수 있습니다. (아마 동적 할당 메모리로 추정됩니다.)


따라서 상태바 윈도우는 사용자 정의 메시지인 WM_USER+1 또는 WM_USER+A 메시지를 받아서 lParam 이 가리키는 주소의 문자열을 상태바 윈도우에 쓴다고 추정해 볼 수 있겠습니다. 그 중에서도 4번 로그 메시지 WM_USER+1 을 받은 직후 WM_PAINT 와 WM_ERASEBKGND 메시지가 연속해서 나타나는 걸로 봐서는 WM_USER+1 메시지가 상태바 윈도우에 실제 값을 쓰라는 명령으로 보입니다.


디버거를 이용하여 lParam 이 가리키는 주소를 확인해보면 앞에서 추론한 내용이 맞는지 알 수 있겠지요.


* 참고


WM_PAINT 는 윈도우를 다시 그릴 때 발생되고, WM_ERASEBKGND 는 윈도우 배경을 지울 때 발생됩니다. WM_USER (0x400) 이후부터는 사용자 정의 메시지로서 프로그래머가 마음대로 지정해서 사용할 수 있습니다. 물론 메시지를 받는 윈도우 프로시저에서 사용자 정의 메시지를 잘 처리할 수 있도록 구현해야 합니다. 해당 메시지에 대한 더 자세한 설명은 MSDN 을 참고하시기 바랍니다.



디버깅


OllyDbg 를 실행하여 HxD.exe 프로세스에 Attach 시킵니다. 디버거는 ntdll.dll 메모리 영역의 System Break Point 위치에서 멈춥니다. 디버거를 실행[F9] 시켜 줍니다. 


윈도우 메시지를 디버깅 할 때는 주의사항이 있습니다. 그건 바로 디버기 프로세스(HxD.exe)의 윈도우를 가리면 안된다는 것입니다. 즉 OllyDbg 나 Spy++ 윈도우에 의해 HxD 윈도우가 가려졌다가 나타났다가 하게 되면 불필요한 로그가 Spy++ 에 쌓이게 됩니다. (물론 Spy++ 옵션을 고쳐서 모니터링 메시지를 필요한 것 만으로 제한해도 됩니다.) 


작업 편의상 각 윈도우들을 독립적으로 배치 시켜 주시기 바랍니다.



<그림 10 - 윈도우 배치>


다시 Spy++ 의 로그를 깨끗이 지우신 다음 마우스로 HxD 메인 윈도우 아무 곳이나 선택해 주세요. 제 경우에 Spy++ 의 WM_USER+1 로그의 lParam 주소는 01A0BA28 입니다. 



<그림 11 - 새로운 lParam 값>


이 주소를 OllyDbg 의 메모리 윈도우에서 검색해 보겠습니다.



<그림 12 - OllyDbg 에서 확인한 lParam 내용>


HxD 의 상태바에 나타난 것과 동일한 문자열이 ASCII 형태로 표시되어 있습니다. (이 경우에는 운좋게 예상과 잘 맞아서 쉽게 발견할 수 있었습니다.) 이 WM_USER+1 메시지를 후킹해서 lParam 이 가리키는 문자열("Offset: XXXX")을 읽은 후 RAW -> RVA 변환하여 표시해 주면 목표를 완수 할 수 있을 것 같습니다.


결론적으로 메시지 후킹 방법은 우리 목표에 잘 들어맞는 방법입니다. 다음 포스트에서 실제 메시지 후킹을 구현해 보도록 하겠습니다.


* 참고


사실 제가 처음 떠올렸던 아이디어는 단순한 마우스 메시지 후킹이었습니다. HxD.exe 상태바의 문자열이 바뀌려면 먼저 마우스로 커서 위치를 바꿔줘야 했으니 마우스 훅 프로시저에서 상태바의 문자열을 읽고 쓸 수 있지 않을까 하고 말이죠. 그러나 조금 더 생각해보니 좋은 아이디어가 아니라서 접었습니다. 이유는 키보드로도 커서 위치를 바꿀 수 있으니 키보드 메시지도 후킹 해야 할 테고, 상태바 윈도우가 다시 그려져야 하는 모든 상황(윈도우 이동, 윈도우가 가려졌다가 다시 나타나기, HxD 에서 다른 파일 열기, 기타)을 고려했을 때 후킹해야 할 메시지가 많아 질 것 같았기 때문입니다. 

따라서 덮어놓고 후킹을 시도하기보다는 먼저 차분히 생각을 정리해보고, 아이디어를 검증하는 단계가 매우 중요하다고 볼 수 있겠습니다.




ReverseCore

저작자 표시 비영리 변경 금지
신고
    이전 댓글 더보기
  1. Lr라 2013.03.04 14:48 신고 댓글주소 | 수정 | 삭제 | 댓글

    어렵군요..ㅎㅎ;;
    그냥 이정도 자료로도 저에겐 벅찹니다..

    • reversecore 2013.03.04 20:17 신고 댓글주소 | 수정 | 삭제

      ^^ 네, 처음 접하시면 분명히 어려운게 사실이지요.

      뭐든지 그렇지만 자꾸 보면 할만해져요~

      리버서들이 천재도 아니고 그냥 평범한 사람들이거든요. 그런데요 자꾸 보다보면 괜찮아요~ ^^

      감사합니다.

  2. supras shoes 2013.04.27 02:40 신고 댓글주소 | 수정 | 삭제 | 댓글

    내가 성공을 했다면 오직 천사와 같은 어머니의 덕이다.Topics related articles:


    http://azza.tistory.com/116 新建文章 11

    http://color114.tistory.com/68 新建文章 6

    http://mycite.tistory.com/78 新建文章 2

    http://bfhopestore.tistory.com/206 新建文章 5

  3. lunettes carrera 2013.04.28 04:22 신고 댓글주소 | 수정 | 삭제 | 댓글

    희미한 달빛이 샘물 위에 떠있으면, http://noq.botasugger.com/ botas ugg online,나는 너를 생각한다.

  4. nike free run shoes 2013.04.29 06:27 신고 댓글주소 | 수정 | 삭제 | 댓글

    노동은 생활의 꽃이요, 삶의 보람이요, 마음의 기쁨이다.Topics related articles:


    http://sma14u.tistory.com/70 新建文章 3

    http://ianbuffet.tistory.com/44?nil_openapi=search 新建文章 12

    http://eshita.tistory.com/120 新建文章 2

    http://starspalace.tistory.com/53 新建文章 6

  5. 현빈지배인 2015.04.25 16:40 댓글주소 | 수정 | 삭제 | 댓글

    관리자의 승인을 기다리고 있는 댓글입니다

  6. TM이태임 2015.05.19 01:00 댓글주소 | 수정 | 삭제 | 댓글

    관리자의 승인을 기다리고 있는 댓글입니다

  7. TM이태임 2015.05.19 04:07 댓글주소 | 수정 | 삭제 | 댓글

    관리자의 승인을 기다리고 있는 댓글입니다

  8. TM이태임 2015.05.20 01:25 댓글주소 | 수정 | 삭제 | 댓글

    관리자의 승인을 기다리고 있는 댓글입니다

  9. TM이태임 2015.05.20 23:38 댓글주소 | 수정 | 삭제 | 댓글

    관리자의 승인을 기다리고 있는 댓글입니다

  10. 하대표 2015.06.08 05:49 댓글주소 | 수정 | 삭제 | 댓글

    관리자의 승인을 기다리고 있는 댓글입니다

  11. 하대표 2015.06.08 08:34 댓글주소 | 수정 | 삭제 | 댓글

    관리자의 승인을 기다리고 있는 댓글입니다

  12. 하대표 2015.06.08 21:22 댓글주소 | 수정 | 삭제 | 댓글

    관리자의 승인을 기다리고 있는 댓글입니다

  13. 하대표 2015.06.08 23:23 댓글주소 | 수정 | 삭제 | 댓글

    관리자의 승인을 기다리고 있는 댓글입니다

  14. 하대표 2015.06.10 17:33 댓글주소 | 수정 | 삭제 | 댓글

    관리자의 승인을 기다리고 있는 댓글입니다

  15. 하대표 2015.06.10 21:01 댓글주소 | 수정 | 삭제 | 댓글

    관리자의 승인을 기다리고 있는 댓글입니다

  16. 하대표 2015.06.11 16:48 댓글주소 | 수정 | 삭제 | 댓글

    관리자의 승인을 기다리고 있는 댓글입니다

  17. 하대표 2015.06.11 20:15 댓글주소 | 수정 | 삭제 | 댓글

    관리자의 승인을 기다리고 있는 댓글입니다

  18. 하대표 2015.06.12 22:03 댓글주소 | 수정 | 삭제 | 댓글

    관리자의 승인을 기다리고 있는 댓글입니다

  19. 하대표 2015.06.13 01:34 댓글주소 | 수정 | 삭제 | 댓글

    관리자의 승인을 기다리고 있는 댓글입니다

  20. 하대표 2015.06.15 21:24 댓글주소 | 수정 | 삭제 | 댓글

    관리자의 승인을 기다리고 있는 댓글입니다



안녕하세요. ReverseCore 입니다. 

책 원고 작성을 완료하였습니다.

모든 컨텐츠 작성을 마치고 자체 퇴고(8회)를 완료하였습니다.

이제 출판사에 넘겨줄 수 있겠네요. ^^~



<퇴고 작업을 도와준 아이패드>


분량


8섹션, 61챕터, A4 기준 1000 페이지 입니다.
885 개의 이미지와 65 개의 소스파일이 담겨있습니다.
책 이름도 결정 하였습니다. (나중에 공개할 께요~ ^^)


내용


기존 블로그의 내용 60% + 새로운 컨텐츠 40% 로 구성하였습니다.

블로그에 있는 내용들은 Windows XP + Visual C++ 6.0/2008 환경에서 작업했었습니다. 이를 최신 Windows 7 32bit + Visual C++ 2010 환경으로 재작업을 하였구요. 컨텐츠들의 순서 조정에 많은 고민을 하였습니다.

새로 추가된 내용들은 아래와 같습니다.


64 bit Computing / Debugging
고급 리버싱 (TLS, TEB, PEB, SEH, IA-32 Instruction 해석)
Anti-Debugging (Static, Dynamic, Advanced)
디버깅 실습 (Service, Self-Creation, PEImageSwitching, DebugBlocker)
 



일정


2010년 5월 1일 책을 쓰기로 마음 먹고 2011년 12월 3일 원고를 마감하였네요. 원고 작업만 19 개월 소요되었군요. (블로그 시작한날인 2009년 2월부터 따져보면 벌써 약 33 개월이 지났네요.)

아직까지는 제 인생 최대의 프로젝트라고 말할 수 있겠습니다. ^^

2011년 6월말쯤 8장 마지막 챕터를 끝내고 책에 뭐 빼먹은게 없나 살펴보니, 문득 제가 애초에 기획했던 모든 컨텐츠 작성을 끝냈다는 사실을 깨달았습니다.

약간 멍~ 했죠. 조금 재충전을 하고 퇴고 작업에 들어갔습니다. 노트북으로 들고 다니며 보는데 한계가 있어서 문서를 출력해서 보다가 분량이 너무 많아서 힘들었습니다. 그래서 아이패드에 문서를 전부 입력하고 PDF Viewer 앱과 터치펜으로 퇴고 작업을 했습니다. (퍼포먼스가 확 향상되더군요.) 약 5 개월간의 기나긴 퇴고 작업 끝에 드디어 원고를 탈고 할 수 있었습니다.

마침 아내가 아기와 외출한 시간(12월 3일 토요일 오후 6시)에 제가 계획한 8 단계 퇴고작업의 마지막 작업을 끝마칠 수 있었네요. 


소감


일단 기분이 몹시 좋습니다. 몸과 마음이 날아갈듯 하네요. ^^ 
마치 오랜 여행을 마치고 집에 돌아온 느낌이 드네요. 기쁜 마음에 이렇게 블로그에 글을 올려 봅니다. 


# 작업 속도

책을 쓸 때는 생각보다 작업 속도가 너무 느려서 도대체 언제쯤 책이 완성될 수 있을까 싶었습니다. 하루에 그림 하나 또는 캡쳐 두개 정도 밖에 못 할 때도 많았거든요. 하지만 그런 날들이 하루 이틀 쌓이니까 어느 순간부터는 "내가 언제 이렇게 많은 일을 했지?" 라는 생각이 들면서 목표 지점이 희미하게나마 보이기 시작했습니다. 


# 재작업

책을 쓰면서 가장 힘들었던 순간은 이미 한번 쓴 글을 두번 세번 다시 쓸 때 였습니다. 독자분들께 최신의 리버싱 경험을 드리기 위해 개발도구를 Visual C++ 2010 으로 바꾸고 작업환경을 Windows 7 으로 바꾸었습니다. 그러다보니 기존 문서를 그에 맞게 다시 캡쳐하고 변경된 주소를 찾아 고치는 작업들이 많았습니다. 지금와서 뒤돌아보니 그런 작업들이 가장 기억에 많이 남습니다. 


# 슬럼프

10 여회의 크고 작은 슬럼프를 경험하였습니다. 수많은 재작업과 검증, 생각대로 나오지 않는 글쓰기, 예상보다 훨씬 오래 걸리는 시간, 개인적인 외부 요인 등으로 인해서 글을 쓰지도 못하고 글쓰기 자체가 싫어지는 상황이 몇 번 닥쳤었죠. 스트레스가 쌓인 겁니다.

제가 새벽에 일어나 글을 쓰는 책상이 있는데요, 어느 순간에는 그쪽을 쳐다보기도 싫어지더군요. 그리고 저녁에는 퇴근 후 글을 쓰러 찾아가는 도서관이 있습니다. 한때는 그쪽으로 발길이 도저히 떨어지지 않는 날도 많았습니다.

다행인것은 그때마다 제 자신이 슬럼프 상황인걸 인식하고 극복하려고 노력했다는 것입니다.


# 응원

가끔 블로그에 방문해서 댓글에 답변도 달아드리고 제 책을 응원하는 글을 보면서 힘을 얻곤 했습니다. 그리고 부모님, 아내, 친구들, 회사 동료들까지 많은 분들께서 관심을 가져주시고 격려를 해주셨습니다.

이 자리를 빌어서 모든 분들께 감사 드립니다.

그리고 제가 좋아하는 독서도 많이 하고 사람들과 많이 어울려 다니면서 다시 용기를 얻어서 작업을 이어나갈 수 있었습니다. 그러다 결국 여기까지 올 수 있었구요.

"포기하기 전까지 실패란 없다. 시행착오가 있을 뿐이다. 시행착오를 거듭하다보면 언젠가 결국 성공하게 된다."

위 명언을 계속 새기면서 포기하지 않고 꾸준히 작업했더니 결국 원고가 완성되었습니다.


# 앞으로...

출판사와의 일정이 잡히면 블로그에 다시 공지해 드리겠습니다.

원고 작업을 한번 성공하니 자신감이 충만해 지는게 느껴집니다. 이번에 많은 경험과 시행착오를 겪어보니 두 번째 책도 금방 쓸 수 있을 것 같은 기분입니다. (2 탄을 기획 중인데요. 구체적으로 정리되면 알려드릴께요~)


다시 한번 모든 분들께 감사 드립니다. ^^~


ReverseCore
신고
    이전 댓글 더보기
  1. 지나가다 2012.02.29 17:42 신고 댓글주소 | 수정 | 삭제 | 댓글

    휴.. 정말 대단한 사이트군요.
    .. 옛날.. 생각이 나긴하면서도 ... 다시 한번 이쪽을 공부해보고 싶다는 생각은 가끔했습니다. (지금은 그냥 평범한.. 코더입니다 :) )

    책을 내신다는데.. 필구해서 한번 읽어봐야겠군요. 아직 타오를지 확인해보고 싶어요 :)

  2. 책 언제나오나요 2012.03.01 02:10 신고 댓글주소 | 수정 | 삭제 | 댓글

    빨리 보고싶네요ㅎ
    3월 중반에 나올려나

  3. 나그네 2012.03.02 19:23 신고 댓글주소 | 수정 | 삭제 | 댓글

    오오 정말 기대됩니다. 꼭 사서 보도록 할게요 ㅠ.ㅠ)b

  4. 지름신 2012.03.05 08:53 신고 댓글주소 | 수정 | 삭제 | 댓글

    바쁜 직장인이 단시간에 많은 기술을 습득할 수 있는 책일 듯.
    나오면 바로 사아겠군요.
    수고하셨습니다.

  5. 뿡뿡대마왕 2012.03.06 15:17 신고 댓글주소 | 수정 | 삭제 | 댓글

    드뎌 나오는거군요!!!
    너무 기대됩니다!!
    언제쯤 출간될려나..ㅠㅠ

  6. reversecore 2012.03.06 23:37 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요. ReverseCore 입니다.

    먼저 제 책에 관심을 가져주셔서 대단히 감사합니다. ^^~

    현재 출판사에서 제 원고를 편집/교정/디자인 작업중이며 여름 출간을 목표로 열심히 작업하고 계십니다. 일단 책의 분량도 많고, 책의 완성도를 위해서는 충분한 시간이 필요합니다.

    제가 원고를 더 빨리 완성시켰다면 그만큼 더 빨리 출간되었을텐데요...
    일정과 완성도 중에서 완성도를 선택한 결과입니다.
    그런데 기다리시는 분들이 너무 많으셔서 제가 정말 죄송스럽네요.

    책의 60%는 블로그의 컨텐츠들로 채워지기 때문에 그동안 이곳에서 공부하시는 것도 좋겠습니다.
    그리고 앞으로 블로그에 새로운 컨텐츠를 꾸준히 포스팅 할 계획이니 재밌게 봐주시기 바랍니다.

    감사합니다.

  7. Genesis 2012.03.09 22:10 신고 댓글주소 | 수정 | 삭제 | 댓글

    시간 나시면 카테고리를 분류해서 정리해주시면 안되나요? PE, 후킹 이런씩으로 말이죠.
    제가 리버싱에 입문한지 얼마 안되서 무슨 기술이 있는지 몰라서 어떤 걸 검색 해야할지도 잘 모르겠습니다. 글이 워낙 많아서 어떤 걸 봐야할지도 잘 모르겠구요.

  8. windofme 2012.03.14 05:08 신고 댓글주소 | 수정 | 삭제 | 댓글

    책 출간 열기가 후끈 하군요..
    한국에 이런 책이 얼마나 부족했는지 실태를 보여주는것 같아 매우 아쉽고
    다행이도 여름 출간이라니 기쁘기 까지 복잡 미묘한 심정입니다.

    예쁘게 출간 하시면 싸인회도 하시나요? 커버에 사인한장 받고 싶습니다

  9. TOD 2012.03.21 03:14 신고 댓글주소 | 수정 | 삭제 | 댓글

    아~ 드디어 기다리고 기다리던 책이 나오겠군요.

    1년 넘게 기다린 기분이네요. ㅋㅋ

    어서 빨리 보고 싶어요~ 책 주세요~

  10. 김성겸 2012.04.04 22:47 신고 댓글주소 | 수정 | 삭제 | 댓글

    가격은 대략 정하셨나요?

    그간 많은 책들을 사왔고 보았는데

    몇몇 책은 정말 내용에 비해 책값이 정말 저렴했습니다

    이 블로그의 내용을 대략 살펴보았는데 매우 고가로 책정하셔도 불티나게 팔릴것 같습니다

    그냥 그렇다구요 ㅎㅎ

  11. binish 2012.04.07 15:08 신고 댓글주소 | 수정 | 삭제 | 댓글

    제대로 된 리버싱 책 한 권 나오겠네요! 멋지십니다.. 진정.. ^^

  12. 남현욱 2012.04.10 14:38 신고 댓글주소 | 수정 | 삭제 | 댓글

    무지막지한 노가다를 즐기셨군요...
    읽으면서 전율을 느낍니다. 등에서부터 뒷목까지 짜르르....
    존경합니다. 본받겠습니다.
    본디 책 구매를 꺼리는 저입니다만, 반드시 구매하고 싶어집니다.

  13. lotzelon 2012.04.22 22:04 신고 댓글주소 | 수정 | 삭제 | 댓글

    ^^꼭 사겠습니다!!!
    완전 기대하고 있습니다.
    화이팅화이팅!

  14. 지나가다 2012.05.30 18:03 신고 댓글주소 | 수정 | 삭제 | 댓글

    아웅... >_<);;
    책소식 들어왔나~ 싶어서 간만에 들렀는데 아직이로군요..ㅋㅋ
    기다리다가 목빠지겠어욤_!

  15. 키위는제스프리 2012.06.08 18:26 신고 댓글주소 | 수정 | 삭제 | 댓글

    어서나와라어서~

  16. 2012.06.10 23:17 신고 댓글주소 | 수정 | 삭제 | 댓글

    여름 쯤에 출판 된다고 하는데 아직 소식이 없군요 ㅠ_ㅠ

  17. reversecore 2012.06.14 01:21 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요. ReverseCore 입니다.

    제 책은 지금 에디터 분께서 열심히 작업중이십니다.

    몇 달내에 볼 수 있을꺼라 생각합니다. ^^~

  18. 컴공학생 2012.07.06 11:06 신고 댓글주소 | 수정 | 삭제 | 댓글

    지금까지 누구의 도움도 없이 혼자서 리버싱을 공부하다보니
    너무나도 많은 벽이 느껴졌는데, 정말 좋은 책을 쓰셨군요!!
    감사합니다^^

  19. Jayden. 2012.08.30 23:51 신고 댓글주소 | 수정 | 삭제 | 댓글

    수고하셧습니다! 감사드려요!

  20. yrmfpnwshu 2013.04.29 02:11 신고 댓글주소 | 수정 | 삭제 | 댓글

    Hi there, what's up you guys???



기존 InjDll.exe 유틸리티를 업그레이드(Ver. 1.1.1) 하였습니다.

  1. 64bit 지원

  2. <dll path> 의 상대 경로 지원


☞ InjDll.exe - DLL Injection/Ejection 전용 도구


Windows 7 64bit OS 가 보급됨에 따라 리버싱 분야에도 점차 64bit 지원 여부가 중요한 이슈가 되고 있습니다. 저 또한 최근에 64bit 관련 내용을 공부하면서 흥미로운 내용을 많이 접하였습니다. (이번에 작업 중인 리버싱 책에 64bit 리버싱 챕터를 추가시켰습니다.)

각 플랫폼(32/64bit) 별로 Dll Injection 을 하실 때 다음의 내용을 주의해 주시기 바랍니다.

- Target 프로세스가 32bit 인 경우 : Injector & Dll => 모두 32bit (PE32 포멧)
- Target 프로세스가 64bit 인 경우 : Injector & Dll => 모두 64bit (PE32+ 포멧)

* 64bit OS 에서는 32/64bit 프로세스가 모두 실행 가능하므로, Target 프로세스의 PE 포멧을 확인 하신 후 적절한 Injector(InjDll32/InjDll64) 와 DLL 을 사용하시면 됩니다.

* PE32+ 포멧의 파일을 생성하시려면 Visual C++ 2010 Express & Windows SDK 를 설치하시면 됩니다.


ReverseCore

저작자 표시 비영리 변경 금지
신고
    이전 댓글 더보기
  1. RUIN 2010.12.03 13:01 신고 댓글주소 | 수정 | 삭제 | 댓글

    도대체 책 언제 나와요 ㅠ_ㅠ
    책 Part 1 // Part 2로 나눠서 Part 1부터 먼저 내주셧으면 ㅠㅠ

    • reversecore 2010.12.03 16:14 신고 댓글주소 | 수정 | 삭제

      안녕하세요.

      Part 1/2 를 생각해 봤는데요.

      현재로서는 한권에 다 넣는게 좋다고 생각중입니다.

      제 책을 기다려주셔서 감사합니다. ^^

      힘내서 열심히 작업할께요~

    • RUIN 2010.12.03 18:20 신고 댓글주소 | 수정 | 삭제

      네ㅠㅠㅠ........

      최대한 빨리 써주신다면 감사 감사^_^

      감기 조심하세요^^

    • 두둥 2010.12.05 01:31 신고 댓글주소 | 수정 | 삭제

      저도 책 기다리고 있어요..ㅜ.ㅜ

      요새 사이트에 자주 못들어 왔는데 다양한 정보를
      책으로 볼수있는 기회가 빨리 오기를 바랍니다.

    • reversecore 2010.12.10 11:55 신고 댓글주소 | 수정 | 삭제

      네, ^^

      항상 신경써 주시는 두분께 감사드립니다.

  2. Saeglo 2010.12.24 17:48 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요.
    여기서 배운게 정말 많고 항상 잘 보고 있습니다.

    혹시 윈도우가 아닌 다른 OS에서의 리버싱은 다룰 생각이 없으신지 궁금합니다.

    예를 들어 리눅스의 시스템 콜 후킹 같은 -

    실은 제가 최근에 Mac에 대해 공부를 하고 있는데
    국내에서 Mac에 대한 정보는 찾기가 힘들어서
    혼자 공부하기 쉽지 않네요 ㅠㅠ

  3. kaka 2010.12.27 20:39 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요.
    좋은 글 매일와서 보고 따라해 보고..ㅋㅋ 있습니다.
    일단 책을 좀더 기다려야 한다니..아쉽습니다.
    화이팅~하세요.

    질문인데요..
    올려 놓으신 소스로 win7(32비트) IE8에서 DLL 인젝션을 실행하면 인젝션은 잘됩니다.
    그런데 인젝션된 dll의 DLL_PROCESS_ATTACH 이벤트가 수행되지 않는건
    머가 문젠가요? IE를 관리자 권한으로 실행하면 원하는데로 되던데요...
    직접 인젝션을 시키거나 NewZwResumeThread()을 수행하나 마찬가지네요.

    이것저것 해봐도 DLL_PROCESS_ATTACH 이벤트가 실행되질 안네요 T___T;;

    • reversecore 2010.12.31 00:38 신고 댓글주소 | 수정 | 삭제

      안녕하세요.

      어떤 소스 코드를 사용하셨나요?

      제 블로그에 몇 가지 버전의 InjDll 소스가 있습니다. @@~

      제가 http://www.reversecore.com/76 에 있는 InjDll64.exe 와 dummy64.dll 을 가지고 테스트 해보면 잘 되는데요.

      dummy64.dll 소스에 OutputDebugString() 을 추가해서 DbgView 로 확인하면 DLL_PROCESS_ATTACH 가 정확히 뜹니다.

      테스트하신 소스(혹은 실행파일)을 제게 보내주시면 확인해 드리겠습니다.

      감사합니다.

    • kaka 2011.01.03 09:52 신고 댓글주소 | 수정 | 삭제

      새해 복 많이 받으세요..

      아.. 죄송합니다.
      정확히 질문을 하지 못했네요.
      iexplore.exe부모는 DLL_PROCESS_ATTACH가 말씀하신데로 정확히 뜨는데,
      자식 iexplore.exe에게는 DLL_PROCESS_ATTACH나 DLL_THREAD_ATTACH 이벤트가 발생하질 안습니다.

      인젝터는 reversecore님께서 올려놓으신 파일로 했습니다.

    • reversecore 2011.01.07 05:38 신고 댓글주소 | 수정 | 삭제

      아~ iexplore.exe 의 child process 말씀이시군요.

      Global API Hooking 을 써야 하는데요.
      인젝션 시키는 DLL 에 global API Hooking 코드가 준비되어 있어야 합니다. 위 댓글에서 소개한 dummy.dll 에는 그런 기능이 없지요.

      http://www.reversecore.com/79 <- 요기 있는 redirect.dll 파일이 바로 그 파일입니다.

      redirect.dll 을 인젝션 하신 후 IE 의 탭을 마구 띄워서 child process 가 생성되는 순간 자동으로 인젝션이 되면서 DLL_PROCESS_ATTACH 가 뜹니다.

      DbgView 로 확인할 수 있도록 OutputDebugString() 으로 로그를 찍었습니다.

      * Win 7 32bit/64bit 에서 테스트 하였습니다.

      kaka 님께서도 새해 복 많이 받으세요~~~

      감사합니다.

  4. kaka 2010.12.30 17:51 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요.
    InjDll64.exe와 dummy64.dll로 win7 64 OS에서 테스트해보니
    notepad에 inject(dll_process_attach)후 자동으로 dll_process_detach되던데
    왜그럴까요?

    • reversecore 2010.12.31 00:41 신고 댓글주소 | 수정 | 삭제

      역시 제 환경에서는 잘 되는데요.

      notepad 에 injection 성공하면 DLL_PROCESS_ATTACH 가 뜨고 바로 이어서 DLL_THREAD_DETACH 가 뜹니다. (원격 스레드가 종료되면서 뜨는거죠.)

      메일 주소를 알려주시면 OutputDebugString() 을 추가한 dummy64.dll 을 보내드리겠습니다. 다시 한번 확인해 보시기 바랍니다.

      * 간혹 보안 모듈에서 DLL Injection 을 막는 경우가 있습니다. 근데 그건 인젝션 자체를 막는 거라 올려주신 증상하고도 맞지 않네요.

      감사합니다.

  5. Reversing_H 2011.01.14 10:22 신고 댓글주소 | 수정 | 삭제 | 댓글

    항상 잘보고 잘 배우고 있습니다.
    여기서 질문하나 드릴게요 ~

    제가 리버싱쪽으로 취업을 하고 싶은데,,
    리버싱쪽에서 뽑는거는 잘 못본듯 하고
    다른기술도 같이 병행해야하는 업무인지;

    이쪽에 대해 아는게 없어서 말이죠;;

    조언 부탁드립니다 ^^

    • reversecore 2011.01.14 11:50 신고 댓글주소 | 수정 | 삭제

      안녕하세요.

      관리자가 아닌 리버싱 엔지니어를 말씀하시는 거라면...

      제가 알기로는 보안 분야뿐입니다.
      (AV 업체, 온라인 게임 업체...)

      간혹 보안 컨설팅 분야에서 리버싱 관련 지식에 대해 가산점을 부여한다는 얘기만 건네 들은적은 있네요~

      감사합니다.

  6. Reversing_H 2011.01.14 11:01 신고 댓글주소 | 수정 | 삭제 | 댓글

    아,, 한가지더 ;
    보통 악성코드 분석에서 리버싱이
    쓰이는걸로 알고있는데

    그렇다면 악성코드 분석할때
    필요한게 리버싱과
    또 어떤분야가 필요한지
    알고싶습니다.

    질문여러개 드려서
    죄송합니다 ㅠ

    • reversecore 2011.01.14 11:54 신고 댓글주소 | 수정 | 삭제

      회사마다 다르겠습니다만...

      악성코드 분석은 리버싱 지식만 있으면 됩니다. (이것만도 쉽지 않습니다.)

      추가적으로 악성 코드 자체의 지식, 보안 지식 등을 갖춘다면 면접에서 좋은 점수를 받을 수 있겠지요.

      사실 회사마다 사람 뽑는 기준(신규직원의 경우) 은 다 틀려서 말이죠. 어디는 학력을 중시하고, 어디는 성격/기질을 중시하고, 어디는 순수한 실력을 보기도 하고... 그렇답니다. ^^

      감사합니다.

  7. Reversing_H 2011.01.15 20:07 신고 댓글주소 | 수정 | 삭제 | 댓글

    답변 정말 감사드립니다.
    그런데 한가지 더 질문드릴게요;;
    원래 제가 7년전쯤에 프로그래밍쪽이 너무 좋아서
    개발쪽으로 취업을 하려다가 우리나라의 개발직의 종사자분들의
    여러가지 이야기를 들어보니(뭐 IT쪽은 여건이 안좋은건 비슷하지만)
    흥미도 떨어지고 여차저차에서 아예 IT쪽에 손을 놓았다가
    보안쪽에 흥미를 갖고 다시 공부를 시작했습니다.
    하지만 보안이라는 분야에 대해 처음 접하고 보안자체도 워낙 종류가
    많더군요;; 그리고 신입이 바로 들어가기도 쉽지 않은 분야이구요.
    그래서 리눅스 계열의 서버쪽에 우선 취업을 해서 이직하려고 준비하던중에
    리버싱이라는 분야를 알게 됐고 매우 흥미를 가지게 되었습니다.
    정말 이건 충격자체였고, 바로 이거다라는 느낌을 받았습니다.
    하지만 이걸 알게된것이 얼마전이고 말 그대로 실력이 없습니다.
    목표는 리버싱 일을 하는게 제 목표이긴 하지만요.
    여기서 질문을 드리자면
    뭐 물론 제일 좋은것은 처음부터 리버싱 업무를 하는 곳에 취직하는게 제일
    좋겠지만,, 제가 여건상 돈을 벌어야 하기에;; 바로 들어가기에는
    시간적이 여유와 자금적 여유가 없어서 프로그래밍 쪽이나
    서버쪽에 먼저 취직을 해야 할듯 싶은데 ,
    추후 리버싱일을 하려면 개발직 쪽으로 가는것이 더 나을까요?
    또한 개발직 쪽으로 가더라도 개발직도 종류가 많은데
    보안솔루션 개발쪽으로 가는것이 더 좋은 선택인지
    많은 것이 고민됩니다.
    자꾸 질문드려서 죄송하구요;;
    그만큼 이곳을 알게되고 리버싱이란 것을 알게되서
    기쁘구요. 조언좀 주셨으면 좋겠습니다 .
    감사합니다 ^^

    • reversecore 2011.01.20 00:04 신고 댓글주소 | 수정 | 삭제

      안녕하세요.

      사실 리버싱일을 하시려면 말그대로 리버싱쪽으로 취직을 하시는게 좋습니다.

      제가 처음 리버싱으로 취업할 때만 해도 국내에 리버싱을 하는 사람들이 없어서 거의 대부분 경력 개발자들을 뽑았습니다. 몇 달을 교육시켜서 실무에 투입했지요.

      요즘은 리버싱 인구가 많이 늘어나서... 회사도 신입을 뽑더군요... 신입들의 리버싱 경험도 상당하더군요. 경력을 뽑을때도 동종 업계의 리버싱 경력자를 뽑구요...

      저와 저희 회사의 사례를 소개해 드린거라서요...
      참고만 하시기 바랍니다.

      제 개인적으로는 개발/리버싱 모두 경험을 가지고 있는 것이 좋다고 생각합니다. (실제로 제가 그렇구요.)

      감사합니다.

  8. 아침햇살 2011.02.07 16:24 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요^^ 맨날 눈팅만하고...책나오길를 기다리는 사람입니다;;
    매번 조용히 글만읽고 댓글하나 없이 가다가....궁금한게 있어서 염치 없지만 이렇게 질문하나
    드리고 갑니다.

    32비트에서는 전역 후킹시에 ntdll!ZwResumeThread를 이용하면 앞으로 실행될 프로세스에 대해
    서도 모두 후킹이 가능한걸 알았읍니다.. 근데

    64비트에서는 실행되고 있는 프로세드들이 64비트 응용프로그램인지 32비트 응용프로그램인지를
    구분하여 따로 Injector와 DLL을 맞추서 인젝션을 해야 하더군요..

    예를 들어 저는 64bit OS에서 32비트 응용프로그램에만 인젝션을 시도할 예정인데요
    이게 앞으로 실행될 프로세스에 대해서 어떻게 인젝션을 해야 할지 좀 감이 안와서요;;
    쓰레드를 돌려서 새로 생성되는 프로세스를 감시하다가 32비트인지 64비트인지 구분해서 인젝션을 할까도 생각했지만 이건 왠지 아니다 싶은 생각이 들더군요;;
    64비트에서도 ntdll!ZwResumeThread 처럼 뭔가 핵심적인 함수 하나를 후킹해서 전역적으로 후킹할 수 있는 방법이 없을까 해서요.. 물론 저 함수를 64비트에서 후킹 할 수 있겠지만
    제가 돌리는 응용프로그램이 32비트이다보니 explorer.exe에 인젝션을 할 수 가 없는 상황입니다.
    다른 분들의 의견이나 reversercore님의 의견이 한번 듣고 싶네요..~ +.+
    구글링을 해봤지만 딱히 눈에 딱 보이는거 없어서요..(혹시 제가 놓친거 일 수도 있습니다..ㅋ)
    어떻게 생각하세요??

    • reversecore 2011.02.09 21:39 신고 댓글주소 | 수정 | 삭제

      안녕하세요.

      64bit 환경에서 32bit 프로세스만 global hooking(자동 인젝션) 을 하신다는 말씀이시죠~

      제가 직접 시도해 보기 전에는 뭐라 말씀드리기가 어렵군요.

      테스트 후 다시 답변 달아드리겠습니다.

      감사합니다.

    • 아침햇살 2011.02.14 11:34 신고 댓글주소 | 수정 | 삭제

      넵 답변 달아주셔서 감사합니다^^

      지금은 우선 쓰레드에서 프로세스를 감시하여 새로 생성된 프로세스
      를 탐지해 32bit일경우만 Injection하도록 작업하고 있습니다.^^

      좀더 좋은 방법이 나왔으면 좋겠네요~ ㅎ ~
      그럼 수고하세요^^

  9. baboha 2011.02.12 19:22 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요 리버스코어님 글 잘보고있습니다.

    질문이 하나있는데요

    프로세스가 실행중일때 Injection된 dll의 이름들을 얻을려면 어떻게 해야할까요?

    IAT에 써진것말고 프로세스가 LoadLibrary를 통해서 따로 Injection한 것까지 알고싶습니다

    마치 procexp 프로그램처럼요

    • reversecore 2011.02.18 22:44 신고 댓글주소 | 수정 | 삭제

      안녕하세요.

      말씀하신 그런 기능을 수행하는 API 가 있습니다. Injection 된 DLL 들을 Ejection 시킬 때 사용됩니다.

      CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID)
      Module32First()
      Module32Next()

      위 API 를 검색해 보시기 바랍니다.

      감사합니다.

  10. harrison 2011.04.16 06:37 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요.
    리버싱 관련 지식이 필요해서 검색을 하다가 이곳에 왔는데,
    굉장한 도움이 도움이 되었습니다.
    감사합니다.

  11. wordboss 2011.05.17 10:47 신고 댓글주소 | 수정 | 삭제 | 댓글

    안녕하세요.
    오늘 오랜만에 강좌에 와보니 새로운 내용 더 생겼네요.
    보 다 흥미로운 내용 더 많이 올려주세요
    자주 방문 하겠어요
    건강에 각별히 류의하시구요

  12. FreeAngel 2011.07.06 03:01 신고 댓글주소 | 수정 | 삭제 | 댓글

    궁금한점이있는데요.ㅠㅠ 글로벌 후킹에ㅓ 실행되는 프로그램, 앞으로 실행될 프로그램을
    제어 할 수 있다고했는데, 흰트조금만주세요.ㅠㅠ 크레이트 프로세스를 써서하는건지;;;;ㅠ

    • reversecore 2011.07.14 05:56 신고 댓글주소 | 수정 | 삭제

      안녕하세요.

      제 블로그에 있는 글이 도움이 되실 것 같습니다.

      Advanced Global API Hooking – IE 접속 제어 (1)
      (http://www.reversecore.com/77)

      API Hooking – '스텔스' 프로세스 (1)
      (http://www.reversecore.com/65)

      감사합니다.

  13. 2011.10.27 10:49 댓글주소 | 수정 | 삭제 | 댓글

    비밀댓글입니다

  14. 2011.10.28 12:51 댓글주소 | 수정 | 삭제 | 댓글

    비밀댓글입니다

  15. 2011.10.28 12:51 댓글주소 | 수정 | 삭제 | 댓글

    비밀댓글입니다

  16. 2012.01.09 02:04 댓글주소 | 수정 | 삭제 | 댓글

    비밀댓글입니다

  17. 따오기d 2012.02.01 10:45 신고 댓글주소 | 수정 | 삭제 | 댓글

    수고하십니다.!! 글잘봤어요
    질문이 있는데요
    Injector = 32bit process
    HookDLL = 64bit dll
    Target Process = 64bit Process
    OS 는 Windows 2008 R2 (64bit) 이구요
    이상황에서 Injector 가 wow 로 돌고있는 상황에서 가능한 방법이 있나요?

  18. 따오기 생각 2012.02.13 13:34 신고 댓글주소 | 수정 | 삭제 | 댓글

    따오기님
    수고하세요.
    오 그거 생각에 system disable wow비슷한 API가 있는데요.
    그걸 참고하시지요.

  19. 2012.05.25 16:16 댓글주소 | 수정 | 삭제 | 댓글

    비밀댓글입니다

  20. 2012.05.29 09:28 댓글주소 | 수정 | 삭제 | 댓글

    비밀댓글입니다





티스토리 툴바