'reversing/리버싱'에 해당하는 글 11건

#define WIN32_LEAN_AND_MEAN

#include <windows.h>

#include <stdio.h>


BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)

{

TCHAR windowName[MAX_PATH] = {0,};

TCHAR className[MAX_PATH] = {0,};


if(!GetWindowText(hwnd, windowName, sizeof(windowName)) && 

GetLastError() != ERROR_SUCCESS)

return FALSE;



if(!GetClassName(hwnd, className, sizeof(className)) && 

GetLastError() != ERROR_SUCCESS)

return FALSE;


DWORD exStyle = GetWindowLong(hwnd, GWL_EXSTYLE);

BOOL isVisible = IsWindowVisible(hwnd);

BOOL isToolWindows = (exStyle & WS_EX_TOOLWINDOW);

BOOL isAppWindow = (exStyle & WS_EX_APPWINDOW);

BOOL isOwned = GetWindow(hwnd, GW_OWNER) ? TRUE : FALSE;


if(isVisible &&(isAppWindow || (!isToolWindows && !isOwned)))

{

printf( "Window name = %s\n",windowName);

}


return TRUE;

}


int main(int argc, char* argv[])

{

EnumWindows(EnumWindowsProc, 0);

return 0;

}







저작자 표시
신고

'reversing > 리버싱' 카테고리의 다른 글

작업관리자 응용프로그램 목록 열거  (0) 2014.12.19
wget .wgetrc 적용 및 robots.txt 대하여.  (0) 2012.12.07
OllyDbg 다운로드 및 설정  (2) 2011.12.11
abex CrackMe 5  (0) 2010.08.16
abex CreackMe 4 어렵네;;  (0) 2010.08.15
abex CrackMe3  (0) 2010.08.14

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret

영화 "소셜네트워크" 에서 주인공이 페이스매칭 프로그램을 만들기 위해서 사진을 구할려고 쓴 프로그램.

신기하다 싶어서 이것저것 해보다가 재미있는것을 발견해서 적는다.



먼저 .wgetrc 파일 적용 방법.

wgetrc 파일이 폴더 c:\wget_1.10b 안에 있다는 가정하에 입니다. (폴더 이름/경로는 사용자 설정에 따라 다를수 있습니다.) 


콘솔 화면에서 명령어는 다음과 같습니다.

>set wgetrc=wgetrc 파일 위치


에러메시지가 나오지 않았다면 정상적으로 적용된것입니다.




두번째. robots.txt (검색 로봇 배제 표준 설정 파일) 에 대해서  여러 블로그등에서 robots.txt에서 


User-agent: *

Disallow: /

설정해주면 wget이 않먹는다고 했는데.. 사실 이것때문에 몇일을 고생했는데 결론은 아닙니다.

wget 잘 됩니다. 물론 막았는데 퍼가는건 불법이긴 하지만(트래픽 점유율도 그렇고. 저작권도 그렇고.)

실제로 몇개 사이트 테스트 결과에서도 잘 나오더군요.(제 개인 사이트에 대하여 테스트 하였습니다.)

아마 기본적인 방법으로 wget을 한다면 500 에러가 나오는 곳이 있을겁니다. 확인해 보면 robots.txt 에 설정되어 있고요. 안되는 곳은 java로 wget과 비슷한 기능을 작성해 보세요. 문제가 무엇인지 보이실겁니다.(c 나 c#으로 작성하셔도 상관없습니다.)

- windows 에서 wget을 사용했다고 가정입니다.(리눅스나 mac 에서도 같습니다.)


- 일단 대부분의 옵션(wgetrc 포함) 적용및 사용법은 구글링만 해도 알수 있으니 적지 않습니다.



저작자 표시
신고

'reversing > 리버싱' 카테고리의 다른 글

작업관리자 응용프로그램 목록 열거  (0) 2014.12.19
wget .wgetrc 적용 및 robots.txt 대하여.  (0) 2012.12.07
OllyDbg 다운로드 및 설정  (2) 2011.12.11
abex CrackMe 5  (0) 2010.08.16
abex CreackMe 4 어렵네;;  (0) 2010.08.15
abex CrackMe3  (0) 2010.08.14

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret
해당 싸이트에서 파일을 다운 받습니다.

OllyDbg : http://www.ollydbg.de/ 

1. 다운 받은 파일의 압축을 풉니다.
   폴더가 생성이 않되어있기 때문에 폴더 두개를 생성합니다.(UDD , plugin)

 


2. OllyDbg를 실행합니다. 
    Options ->Appearnce 를 클립니다. (플러그인과 UDD에 대한 경로 설정입니다.)
   

 
3. 생성한 폴더에 맞게 경로를 변경하고 OK버튼을 눌러줍니다.


4. OllyDbg를 종료 후 같은 폴더에 있던 *.dll파일을 plugin 폴더로 옮겨주고 OllyDbg를 다시 실행시켜 줍니다.(그러지 않으면 설정값이 적용이 안됩니다.)
   



5. ollydbf를 재실행을 하면 메뉴창에 plugin 메뉴가 새롭게 생긴것을 볼수 있습니다.
    가장 중요한 옵션인 entry point를 자동으로 잡아주는 옵션을 설정해 주어야 합니다.
    메뉴바의 options->Debugging options 를 선택합니다.


6. Event 탭에서 Entry point of main module 를 선택하고 OK 버튼을 눌러줍니다.
 



+ 이제부터 리버싱의 시작입니다.ㅎ 

 

저작자 표시
신고

'reversing > 리버싱' 카테고리의 다른 글

작업관리자 응용프로그램 목록 열거  (0) 2014.12.19
wget .wgetrc 적용 및 robots.txt 대하여.  (0) 2012.12.07
OllyDbg 다운로드 및 설정  (2) 2011.12.11
abex CrackMe 5  (0) 2010.08.16
abex CreackMe 4 어렵네;;  (0) 2010.08.15
abex CrackMe3  (0) 2010.08.14

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글  2개가 달렸습니다.
  1. 버전 어느걸로 다운 받으셨나요?? 저렇게 안뜨던데 ;; 저는 201로 받았어요
  2. 저도 201 버전으로 받았습니다.
    사람들이 많이 있는것은 110버전이지만 기능상 크게 차이는 없습니다.
secret
머냐;; 왜케 쉬운겨;; 약간의 함정을 파놓았지만 트레이서 한번만 해봐도 답이 보인다;;

저작자 표시
신고

'reversing > 리버싱' 카테고리의 다른 글

wget .wgetrc 적용 및 robots.txt 대하여.  (0) 2012.12.07
OllyDbg 다운로드 및 설정  (2) 2011.12.11
abex CrackMe 5  (0) 2010.08.16
abex CreackMe 4 어렵네;;  (0) 2010.08.15
abex CrackMe3  (0) 2010.08.14
abex CrackME2  (0) 2010.08.13

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret
머냐;; 왜케 쉬운겨;; 약간의 함정을 파놓았지만 트레이서 한번만 해봐도 답이 보인다;;

저작자 표시
신고

'reversing > 리버싱' 카테고리의 다른 글

wget .wgetrc 적용 및 robots.txt 대하여.  (0) 2012.12.07
OllyDbg 다운로드 및 설정  (2) 2011.12.11
abex CrackMe 5  (0) 2010.08.16
abex CreackMe 4 어렵네;;  (0) 2010.08.15
abex CrackMe3  (0) 2010.08.14
abex CrackME2  (0) 2010.08.13

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret
완전 노가다였다;; 사실 해법들 보면 너무나 쉽게 하는데 아직 그정도 실력은 안되서 차근차근 알아 갈려고 했는데;; 어렵다;;ㅎㅎ

이번 문제도 시리얼 문제! 하지만 버튼이 활성화가 안되어있다. 즉 문자열이 들어올때마다 체크하여 시리얼이 맞다면 버튼이 활성화 된다는거.

스트링으로 찾아보려 했지만 뚜렷한 스트링이 없다. 결국 하나한 돌려서 하는 수밖에;;

첨에 브레이크 포인트를 어디에 걸지를 몰라서 위에서 부터 하나하나 걸어버렸다;;(엄청난 노가다의 향연~)
대충 하루동안 노가다로 겨우겨우 찾아갔따;

EDIT창에 무엇인가를 쓰면 위에 보면은 00402280에 걸리게 된다. EDIT창의 확인 부분인거 같다.
브포가 결렸으니 트레이서를 해보았다. (F7로 하면 재앙을 볼것이다.)

계속 내려가다 보면은 00402305 에 현재 EDIT창의 스트링을 가져오는 부분을 찾았다. 
아래 유니코드를 보면 지금 쓴 글자를 볼수 있다.

그리고 바로 아래에 드이어 찾은것이다! 답은 매일 바뀐다고 한다.(시간이나 날짜로 바뀌는듯하다.)

노가다의 향연으로 하루종일 지친다;;-0- 어제저녁부터 했는데 이제서야 하다니;;

TIP)다른 해법들을 보면은 VB툴을 이용해서 에디터창의 위치를 쉽게 알수 있다.
정신건강을 위해서 정말 쉬운 길이 있따면 쉬운길을 가는게 좋은것이다.

신고

'reversing > 리버싱' 카테고리의 다른 글

OllyDbg 다운로드 및 설정  (2) 2011.12.11
abex CrackMe 5  (0) 2010.08.16
abex CreackMe 4 어렵네;;  (0) 2010.08.15
abex CrackMe3  (0) 2010.08.14
abex CrackME2  (0) 2010.08.13
CFF CrackMe 3 4 번 -0- 쉽네.  (0) 2010.08.12

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret
아놔...답 앞에 두고 헤맸네;;쿠쿠;;

이게 소스 전부다! 아주 간단하게 필요한곳만 JMP로 간단하게 끝낼수도 있다. 하지만! 그러면 재미가 없잔아?!
리버싱을 통해서 어떻게 돌아가는가를 보고 해보는 재미도 있다.ㅋ

처음에 나오는 메시지박스. 소스상에서도 가장 위에 있다. 두번째 메시지박스에서 파일을 못찾는다고 나온다.
소스상에서 두번째 박스가 나오기 전을 보면 CreateFileA 파일이 있는지 확인하는 함수이다.(만들수도 있다) 
FileName를 보면 abex.l2c 로 되어있다. 만들어보자. 그리고 실행해보자.
흠...이젠 키파일을 찾는다. 머지??

소스상에서 다음을 보면 파일함수 다음에 GetFileSize이다. 요건 파일의 용량을 보는 함수.
그다음에 어셈이 CMP EAX, 12 이다. EAX와 12를 비교해서 0이 나와야한다
그래야 다음줄인 JNZ에서 점프를 않하고 다음 메시지 박스로 넘어간다.

근데 16진수로 12니까 10진수로는 18이 되어야 한다. (아니면 EAX를 보면서 12가 될때까지 한다.)
이만큼써야 한다. (적거나 많으면 에러 표시로 넘어간다. 정확히 16진수로 12!)
이제 실행해볼까?



끝! 다른 사람들은 2번보다 쉽다는데;; 살짝 해멨다..쿠쿠
신고

'reversing > 리버싱' 카테고리의 다른 글

abex CrackMe 5  (0) 2010.08.16
abex CreackMe 4 어렵네;;  (0) 2010.08.15
abex CrackMe3  (0) 2010.08.14
abex CrackME2  (0) 2010.08.13
CFF CrackMe 3 4 번 -0- 쉽네.  (0) 2010.08.12
CFF CrackMe2 시리얼 문제 해봅시다~  (0) 2010.08.10

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret


흠햐.... cff CrackMe4번과 비슷한 문제다. 4번을 푸셧다면 이것도 쉽게 풀수 있다.
사실 푸는덴 3분정도 걸렸지만 name 에 따른 시리얼이 어떻게 바뀌는지가 궁금해서 몇시간을 했다.
딱히 패킹도 걸려있찌 않은데 VB의 구조를 파악하기엔 좋은가 보다;(아직거기까진 모르겠따)


-힌트
1. 메시지가 뜨는 곳을 찾는다 - Search for -> All referenced text strings 로 찾는다.
2. 뜨기전의 어셈블러에 브포(브레이크포인트)를 건다. - 점프와 call 부분을 유심히 보면 된다.
3. 스택과 레지스터를 잘 본다.


-답
쫌이상하다고 생각했는데 4글자 이하의 이유는 답이 4글자를 표현한 값이기 떄문이다.
실제로 모든 답은 8글자일것이다. 앞 4글자만 변환해서 시리얼키로 사용한다.
대문자 A~Z는 A5~BE 소문자 a~z는 C5~DE까지의 16진수와 대응한다.
 
신고

'reversing > 리버싱' 카테고리의 다른 글

abex CreackMe 4 어렵네;;  (0) 2010.08.15
abex CrackMe3  (0) 2010.08.14
abex CrackME2  (0) 2010.08.13
CFF CrackMe 3 4 번 -0- 쉽네.  (0) 2010.08.12
CFF CrackMe2 시리얼 문제 해봅시다~  (0) 2010.08.10
패커, 패킹, 언패킹  (0) 2010.08.09

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret
왜케 쉽지; 3번은 1분, 4번은 5분정도 걸렸네;; 

패킹되어있으며 UPX도 동봉했다.
3번은 시리얼찾는 문제이고(정말 쉽다.) 


4번은 name에 따른 시리얼이 달라지는 문제이다.(답은 간단하며 공식은 조금만 생각하면된다.)

신고

'reversing > 리버싱' 카테고리의 다른 글

abex CrackMe3  (0) 2010.08.14
abex CrackME2  (0) 2010.08.13
CFF CrackMe 3 4 번 -0- 쉽네.  (0) 2010.08.12
CFF CrackMe2 시리얼 문제 해봅시다~  (0) 2010.08.10
패커, 패킹, 언패킹  (0) 2010.08.09
나의 첫번째 디버깅 Hello world!  (2) 2010.08.08

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret

하나는 원본. 하나는 전 포스팅에서 언패킹한 exe파일입니다.

일단 실행한다음 (F9) 

아무거나 에디트박스에 넣고 버튼을 눌러줍니다. 그러면 You are a bed cracker!라는 문구가 뜹니다.
우리는 이 메시지 박스가 어디에 위치하는가를 알아야 하는겁니다. exe파일에서 text는 한곳에 올라오기 때문에 메시지 박스에 들어가는 텍스트와 시리얼키가 같이 있다는거죠. 잘 모르시겠으면 PE구조를 공부하세요.

위의 상태에서 F12를 해서 Paused 상태에서 alt+F9를 눌러준다. 그다음 위의 메시지 박스의 확인을 눌러준다.
그러면 지금 상태의 메모리를 보여준다. 위로 살짝 올려주면 메시지 박스의 원형을 보여준다.

위에 빨간글씨로 MessageBoxA로 써져잇는 함수가 보인다. 그리고 매개변수인 style, title, text 가 보이는데 title,text가 어디있는지를 알면된다. 어셈블러로 보면은 PUSH EDI, PUSH ESI 로 되어있다.
레지스트리 부분을 보자

ESI, EDI 부분에 텍스트가 올라온거이 보이는데 주소를 따라가 보자. (ctrl+g)

텍스트가 쭉 한눈에 보인다. 아하!  이상하게 보이는 문자가 있군.
쳐볼까?

끝-_-;

내가 푼 방법) 정말 어처구니 없게 쉽게 풀렸는데;;
언패킹할 경우 string 이 보입니다. 당연히 시리얼키도 보일꺼라 생각했죠.
search for -> All referenced text strings 를 해보면 프로그램의 스트링이 다 보입니다.
여기서 수상한 글자를 보니..-0- 끝;; ㄷㄷㄷㄷ
신고

'reversing > 리버싱' 카테고리의 다른 글

abex CrackMe3  (0) 2010.08.14
abex CrackME2  (0) 2010.08.13
CFF CrackMe 3 4 번 -0- 쉽네.  (0) 2010.08.12
CFF CrackMe2 시리얼 문제 해봅시다~  (0) 2010.08.10
패커, 패킹, 언패킹  (0) 2010.08.09
나의 첫번째 디버깅 Hello world!  (2) 2010.08.08

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret

패커(Packer)에 대해 다시 한번 간단히 정리


패킹(packing)은 실행파일 포장이라는 개념으로 쉽게 이해하시면 될 것 같습니다.

아래 그림은 파일이 패킹되어 메모리에 올라가는 일괄의 과정을 표현한 것으로서 패킹된 파일은 메모리 할당시 재배치(Relocation) 과정을 하지 않기 위해 target 프로그램과 동일한 위치에 .txt 섹션을 배치 합니다. 
Uninitialized data section은 언패킹 후 메모리에 올릴 장소입니다. 

언패킹을 하기 위해서는 먼저 Packer Detection(탐지)을 통해 패커를 확인하는 작업이 선행되어야 합니다.
패커를 확인하는 가장 손쉬운 방법은 잘 알려진 패커 탐지 tool을 이용하는 것이며 탐지 tool로는 PEID, DIE, RDG, exeinfo PE 등 이 있습니다.


아래는 PEID를 통한 패킹의 확인하는 방법입니다.


일반적으로 압축을 얘기합니다만 리버싱 계열에서는 보통 압축과 함께 암호화 및 코드 재배치 등을 의미 합니다.

패킹된 프로그램은 PIED로 쉽게 확인할수 있습니다 . 안될수도 있지만요

아래그림을 보다싶이 UPX로 패킹되어있습니다.

빨간 부분이 UPX로 패킹되었다는 거~


언패킹이란 보호를 목적으로 암호화 및 압축된 실행파일을 원상태로 해제 하는 것을 의미합니다.

언패킹을 하는 이유는 대상 실행파일을 원상태의 정상적인 코드로 언패킹을 하여 프로그램을 패치 한다던가 수정을 한다던가 크랙을 한다던가 하는데 있습니다. 아래그림은 언팩된 프로그램입니다. 언팩이 안된프로그램은 수정이가능하며 만든언어가 나와있습니다.



이제 풀어 보기로 할까? 
 

참고로 도스용 프로그램이다. 

프롬포트 창으로 가서 UPX라 치면 관련 옵션이 나온다.


보이는 옵션중에서 사용할 옵션은 -d

언팩할 exe파일과 같은 폴더로 옮긴다음 upx -d *.exe 를 해주면 언팩이 된 화면을 볼수 있다.




언패킹 한 결과 델파이로 프로그램이 만들어졌다는것을 알수 있다.


낼은 언패킹한걸로 크랙하는걸 해야징~(언패킹하는법을 몰라서 하루를 날렸따;;ㅡ,.ㅡ;)


출처 : 쿨소프트2.0 [ http://coolsoft2.com], 안철수 연구소 ASEC 대응팀[http://core.ahnlab.com/136]

신고

'reversing > 리버싱' 카테고리의 다른 글

abex CrackMe3  (0) 2010.08.14
abex CrackME2  (0) 2010.08.13
CFF CrackMe 3 4 번 -0- 쉽네.  (0) 2010.08.12
CFF CrackMe2 시리얼 문제 해봅시다~  (0) 2010.08.10
패커, 패킹, 언패킹  (0) 2010.08.09
나의 첫번째 디버깅 Hello world!  (2) 2010.08.08

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret