sub_20c 를 본격적으로 분석하기 시작했다.


0x23A 까지 실행하였을 때, 0xAD3(AD4가 아니였음)으로 입력한 패스워드 문자열 8개를 복사했다.



그 아래에 있는 베이직블록에서 진행한것은 r19,r18,r03,r21,r20 에 AD3에 복사한 1,2,3,4,7 번째 문자 이다.
Y+5,Y+4,Y+3 에 5,6,8 번째 문자를 복사 했다.


loc_24C 에 진입하기 직전 r24 = 0xFF , r30 = 0x76 , r31 = 1 이었는데
loc_251 로 진입하면서 모두 0으로 되었다.

한줄 한줄 분석하고 있는데, 넘나 피곤하다. Hex ray의 위대함을 실감하고 있다.
대략 알 수 있는 것은
(1) 0x23B ~ 0x302 까지의 코드가 8번 반복이 될 것이라는 점과
(2) and를 하고 있는 친구는 0xAE4 부터 하나씩 가져오는 문자인데, 매 루프 마다 증가할 예정이다. 0xAE4 ~ ... 의 값이 매번 고정이었던거같은데 확실하지는 않음.
(3)sub_1DC에 의해서 가져오는 값은 0x00, 0x02, 0x03 세 종류이다. 따라서 XOR 하게되는 r24 친구는 0x100, 0x102, 0x103 셋 중 하나로 결정된다. 
(4)일련의 반복과정으로 0xAD2 ~ 0xADB 번지에 차곡차곡 갱신된다. 

이런식으로 끝까지 블럭을 분석하였다.

얼핏보면 길지만 결국에는 입력한 여덟문자를 토대로 어떤문자열과 연산하여 열개의 문자열을 생성해내는 것이었다.

나머지 아랫부분의 긴 블럭 또한 위쪽처럼 열문자에 대해 어떤 변화를 줄 것이다.
그래프뷰의 아랫쪽에 긴 블럭 이후에도 AD2~ ADB가 영향을 받는지 확인하고 싶었다. 정확히는 0x3D4 까지 코드가 실행 된 이후에도 영향을 받는지 확인하고싶었다. 영향을 안 받는다면 그 이후 것은 해석할 필요가 없기 때문
(1) 0x3D4 까지 실행된 직 후

(2)0x3F7 까지 실행된 직 후



AD2~ ADB 전체는 아니지만 일부는 영향을 받는다.

'reversing.kr' 카테고리의 다른 글

AVR reverse engineering (6) CustomShell  (0) 2018.08.06
reversing.kr CRC1  (0) 2018.02.07
AVR reverse engineering (4) CustomShell  (0) 2018.02.05
AVR reverse engineering (3) CustomShell  (0) 2018.02.05
AVR reverse engineering (2) AVR ATmega128  (0) 2018.01.30

+ Recent posts