반응형

점점 답에 가까워지고있습니다 .. .근데 점점 풀기싫어지는게 함정 .. 


FSC_Level3.exe


처음엔 패킹도 안되있고 바로 congratulation이 보이길래 ..  개나소나 취직하는 곳이나 싶었는데 ... 

소스 보다보면 아시겠지만 시리얼추출 관련루틴이 코빼기도 보이지가 않습니다 ...ㅇㄴ.. 

어케할 수가 없더군요 그래서 step in으로 쑥쑥 들어가 보았습니다

그렇게 삽질하던 도중 .. 

말도안되게 쨤프를 해버립니다  뭔가 수상해요 냄새가 납니다(애초에 이프로그램 자체가 용량도 그렇게 큰편이 

아니라서 보통 프로그램이라면 이렇게 말도안되게 멀리 쨤프를 할리가 없죠) 어디로 쨤프하는지 가봅시다

헬게이트 오픈입니다 .. 

코드를 보면 뭔가 억지스러운 코드도 있긴한데, 잘보면 정상적인 코드도 존재하네요 

그러니까 생각을 정리해보면 연산코드(시리얼 추출 관련 루틴)는 다 여기서 수행되는거라 보면 됩니다

다시말하면, 초기화 부분에서 각종 Allocate 구문이 가동되고, 중요 연산코드가 모두 이곳에서 수행되는 겁니다 

이런 기법을 사용하는건 보통 패킹에서 사용하는 기법인데, 

이 프로그램에서 패킹이 되있는건 확인할 수 없었죠.. 

"자체패킹" ... 

그리고 이 문제는 리다이렉트까지 걸려있어서 분석하는데 애좀먹었습니다 

결과부터 말해보면 코드 하나 알아내고 따른동네로 넘어가고 방정식도 써야되고 이런식입니다 

우선 첫번째 코드입니다 (풀고나서 주소만 메모장에 적어놔가지고 각레지스터에 어떤값이 들어있는지는 잘라버렸습니다 ) 


허벌나게 리다이렉트 되있어서  쨤프를 하다보면 이런문이 나옵니다 (이 소스가나오기전에 ecx 에는 0x10이 들어갑니다) 

괄호쳐놓고 설명했듯 ecx에는 결과적으로 0x10이란 값이들어가고,

 우리가 찾아야할 문자열은 16글자라는 흰트를 얻게됩니다. 여기까지 진행한거로 봐서는 뒤에 내용이 확실하게 

어떤식으로 진행할지 감이안오죠 또 허벌나게 쨤프하다보면 다음과 같은 소스가 나옵니다

 (리다이렉트가 너무많아요 .. 필요한 부분만 긁어오겠습니다 뒤에가다보면 리다이렉트를 몇백번을 해논거도 있어서,,, 하 .. 양해부탁드립니다) 


0041288F    BA8B 68000000            MOV CL, BYTE PTR DS: [EBX+68] 

00412896    388B 64000000            CMPB BYTE PTR DS: [EBX+68],%CL

0041289C    75 01                    JNE $0041289F

0041289E    40                       INCL %EAX

0041289F    8883 64000000            MOVB %AL,%DS:64(%EBX)

004128A5    E9 F6150000              JMP $00413EA0

004128AA    00C7                     ADDB %AL,%BH


~> BYTE PTR DS: [EBX+68]에 'S'가 들어있는지 검사

자 그러면 이제 한문자 알았네요

S - - - - - - - - - - - - - - -
 
이런방식으로 두문자를 더얻게 됩니다 해당 코드는 각각 0x4108A7 , 0x4107A0에 존재하니 따라가보시길 .. 

결과적으로 


S a - j - - - - - - - - - - - -


줄인다고 줄이고있는데 암에 걸릴것만 같습니다 13문자나 남았잔아.. 











반응형
,