나는_gosu_다
apk 디컴파일 쳐보니까 jadx로 깔 수 있다고 하길래 jadx로 까봤다.
딱봐도 MainActivity라고 적혀있으니 중요한거 같아서 보면
뭔지는 몰라도, 대충 check_val이 100이면 플래그 출력해주는거라고 충분히 추측할 수 있다.
Toast가 뭔지는 몰라도 검색해보면, makeText의 첫번째 이자로 getApplicationContext()를 받고, 그 다음으로 스트링 받고, 마지막으로 길이를 받는다는 것을 알 수 있었다.
그런데 R.string.form1을 보고 들어가봤더니 이상한 주소가 있었다.
잘 찾아보니까 어떻게든 찾을 수 있었다.
그런데, String.valueOf(stringFromJNI())가 있길래, 검색해보니까, C++ native 함수라고 한다.
그래서 구현된 소스 코드를 찾기 힘들다고 한다.
근데 여기 lib에서 찾을 수 있다고 하길래 이걸 save 해서 아이다로 열어봤다.
함수 이름부터 심상치 않다.
딱봐도 이건 플래그 연산하는 거다.
lib.so는 arm용으로 쓰는게 일반적인데, x86_64도 구현된건 비슷해보이길래 그걸로 가져왔다.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
unsigned int __strlen_chk(const char *s, size_t s_len)
{
size_t ret = strlen(s);
if (__builtin_expect(ret >= s_len, 0)) {
printf("error!");
abort();
}
return ret;
}
unsigned long sub_B10(char *a1, char *a2){
char v3;
v3 = *(char *)a1;
*a1 = *(char *)a2;
*a2 = *(char *)&v3;
return 0;
}
int main(){
int k;
int v3;
int v4;
int i;
int j;
int v7;
char v8[7];
long v9[3];
char v12;
char v13[520];
unsigned long v14;
v3 = 0;
strcpy(v8,"Sunrin");
v9[0] = 0xB495D00A8BDB2991LL;
v9[1] = 0x35C686D2A2E5E9ABLL;
v9[2] = 0x451A92195B9F;
v12 = 0;
for ( i = 0; i < 256; ++i )
{
v13[i + 256] = i;
v13[i] = v8[i % (unsigned long)__strlen_chk(v8, 7LL)];
}
for ( j = 0; j < 256; ++j )
{
v3 = ((unsigned char)v13[j] + (unsigned char)v13[j + 256] + v3) % 256;
sub_B10(&v13[j + 256], &v13[v3 + 256]);
}
v4 = 0;
v7 = 0;
for ( k = 0; k < (unsigned long)__strlen_chk(v9, 23LL); ++k )
{
v7 = (v7 + 1) % 256;
v4 = ((unsigned char)v13[v7 + 256] + v4) % 256;
sub_B10(&v13[v7 + 256], &v13[v4 + 256]);
*((unsigned char *)v9 + k) ^= v13[(unsigned char)v13[((unsigned char)v13[v4 + 256] + (unsigned char)v13[v7 + 256])% 256+ 256]+ 256];
}
printf("%s",(char *)&v9);
}
그냥 아이다 그대로 복사붙여넣기 했다.
__strlen_chk는 인터넷에 구현있길래 그거 가져다 썼다.
android 관련된 부분은 삭제했다.
컴파일하니까 잘 나온다.
Sunrin{Randroid?CraCK_raNDoM!}
'Layer7 동아리 과제' 카테고리의 다른 글
포너블 5차시 과제 (1) | 2022.10.18 |
---|---|
포너블 4차시 과제 (0) | 2022.10.05 |
포너블 3차시 과제 (0) | 2022.09.25 |
포너블 2차시 과제 (0) | 2022.09.21 |
포너블 1차시 과제 (0) | 2022.09.18 |