본문 바로가기

전체 글81

il2cppdumper 사용법 il2cppdumper를 사용하기 위해서는 apk를 디컴파일 시켜야한다. 방법은 아래 링크에서 확인할 수 있다. https://lyk00331.tistory.com/26 apk 디컴파일 후 mono와 il2cpp 구분 법 1. apk를 다운받는다. 2. apktool을 이용해서 디컴파일을 시킨다. apktool은 구글에 검색하면 다운받을 수 있다. 3. 디컴파일 시키면 아래 사진과 같이 각 apk마다 폴더가 나온다. 4. apk폴더 → lib폴더 &ra.. lyk00331.tistory.com il2cppdumper를 실행 후, 디컴파일한apk폴더/lib/armeabi-v7a에서 해당 apk의 libil2cpp.so파일을 선택한다. 이어서 디컴파일한apk폴더/assets/bin/Data/Managed/M.. 2020. 3. 23.
apk 디컴파일하지 않고 쉽게 mono와 il2cpp 확인하는 방법 이전 포스팅에서 apktool을 이용해 디컴파일 후 mono와 il2cpp를 확인하는 방법을 소개했다. 이번엔 디컴파일하지 않고, mono와 il2cpp를 확인하는 방법에 대해 포스팅하겠다. 우선 이 방법을 따라오기 위해서는 HxD라는 프로그램이 필요하다. HxD는 구글에 검색하면 다운받을 수 있다. apk를 준비한다. apk파일을 우클릭 후, 연결프로그램을 HxD로 지정하여 열어준다. 아래 사진과 같이 떴다면, 컨트롤+F를 통해 문자열을 찾는다. libil2cpp.so 를 검색했을 때 존재하면, il2cpp방식이다. libmono.so 를 검색했을 때 존재하면, mono방식이다. 위 방식처럼 굳이 디컴파일 후, 폴더에 들어가서 찾지 않아도, apk파일과 HxD 프로그램만으로 mono와 il2cpp를 확.. 2020. 3. 22.
apk 디컴파일 후 mono와 il2cpp 구분 법 1. apk를 다운받는다. 2. apktool을 이용해서 디컴파일을 시킨다. apktool은 구글에 검색하면 다운받을 수 있다. 3. 디컴파일 시키면 아래 사진과 같이 각 apk마다 폴더가 나온다. 4. apk폴더 → lib폴더 → 아무폴더 경로로 들어가면, 1) mono인 경우, libmono.so파일이 존재한다. 2) il2cpp인 경우, libil2cpp.so파일이 존재한다. 위와 같은 방법으로 mono와 il2cpp를 구분할 수 있다. 2020. 3. 22.
해쿨핸드북 / 2.버퍼 오버플로우(Buffer overflow)의 뜻이 뭔가요? 보호되어 있는 글 입니다. 2020. 1. 2.
해쿨핸드북 / 1.프로그램을 공격한다!? 버퍼 오버플로우 공격 기술의 효과: 일반 사용자 권한을 최고 권리자 권한으로 상승시킬 수도 있고, 원격 상의 다른 PC의 접근 권한을 획득할 수도 있으며, 문서파일, 이미지파일 등 실행파일 형태가 아닌 것을 마치 실행파일인 것처럼 조작해서 실행시킬 수도 있다. 버퍼 오버플로우 공격의 대상이 되는 프로그램들의 특징: 그들은 사용자로부터 어떠한 입력을 받는다. 그 입력 내용에 따라 프로그램의 실행 결과가 달라진다. 만약 비정상적인 내용(ex.아주 긴 내용)을 입력하면, 프로그램 역시 비정상적인 결과를 보여준다. 위와 같이 비정상적으로 긴 문자열을 입력하게 되면 Segmentation fault라는 정체를 알 수 없는 에러가 나타난다. 이제 알아야 할 것은 "왜, 어떤 원인으로 인해 에러가 발생했는가?” 이다.. 2020. 1. 2.
코딩도장 / Unit 26. 세트 사용하기 1. 세트 만들기 - {}, ,(콤마) 구분 * 세트는 요소의 순서가 없음. 출력할 떄마다 순서가 다르게 나옴. * 세트에 들어가는 요소는 중복될 수 없음. 1) set 이용 ex) a = set('apple') print(a) 결과) {'e', 'l', 'a', 'p'} #순서 무작위. 'l'은 2개라서 하나만 나옴. * 세트 안에 세트 생성 안 됨. 2. 세트 조작 1) add(요소) #요소 추가 2) remove(요소) #특정 요소 삭제. 요소 없으면 에러 3) discard(요소) #특정 요소 삭제. 요소 없으면 그냥 넘어감. 4) pop() #임의의 요소 삭제하고 반환함. 5) clear() #모드 요소 삭제 6) len(세트) #요소 개수(길이) 구하기 2020. 1. 1.
코딩도장 / Unit 25. 딕셔너리 응용하기 1. 조작 1) 키-값 쌍 추가 - setdefault: 키-값 쌍 추가 - update: 키의 값 수정 2) setdefault에 키만 저장하면 값에는 None이 저장됨. 3) update(키=값) #키의 값 수정 ※setdefault와 update 차이: setdefault는 키-값 쌍 추가만 가능. 키의 값 수정은 불가능. 2. 딕셔너리 메서드 1) items() #키-값 쌍을 모두 가져옴. 2) keys() #키를 모두 가져옴. 3) values() #값을 모두 가져옴. 3. 리스트, 튜플 → 딕셔너리 1) dict.fromkeys(키리스트) 2) dict.fromkeys(키리스트, 값) 2020. 1. 1.
코딩도장 / Unit 24. 문자열 조작하기 1. 문자열 바꾸기 1) .replace('바꿀문자열', '새문자열') 2. 문자 바꾸기 table = str.maketrans('aeiou', '12345') print('apple'.translate(table)) 결과) 1ppl2 3. 문자열 분리 1) split() 2) split('기준 문자열') 4. join(리스트) 5. 소문자→대문자: upper() 6. 대문자→소문자: lower() 7. 공백 삭제 1)왼쪽: lstrip() 2)오른쪽: rstrip() 3)양쪽: strip() 8. 정렬 1)왼쪽: ljust(길이) 2)오른쪽: rjust(길이) 3)가운데: center(길이) 9. zfill(길이): 지정된 길이에 맞춰서 문자열 왼쪽에 0을 채운다. 10. fine('찾을 문자열'): .. 2020. 1. 1.
코딩도장 / Unit 23. 2차원 리스트 1. 2차원 리스트 1) 만들기 · 리스트 = [[값, 값], [값, 값], [값, 값]] →가로 2줄, 세로 3줄의 2차원 리스트 2) 요소 접근 · 리스트[세로 인덱스][가로 인덱스] · 리스트[세로 인덱스][가로 인덱스] = 값 →새로운 값 지정 2. 반복문으로 2차원 리스트 만들기 (for문) ex) a=[]#빈리스트 생성 for i in range(3): line=[]#안쪽 리스트로 사용할 빈 리스트 생성 for j in range(2): line.append(0)#안쪽 리스트에 0추가 a.append(line)#전체 리스트에 안쪽 리스트 추가 print(a) 결과) [[0, 0], [0, 0], [0, 0]] 3. 리스트 표현식으로 2차원 리스트 만들기 ex) a = [[0 for j in r.. 2020. 1. 1.
코딩도장 / Unit 22 리스트, 튜플 응용 리스트 추가 append: 요소 하나 추가 extend: 리스트 확장 insert: 특정 인덱스에 요소 추가 insert(0, 요소): 리스트의 맨 처음에 요소를 추가 insert(len(리스트), 요소): 리스트 끝에 요소를 추가 삭제 pop: 마지막 요소 또는 특정 인덱스 요소 삭제 remove: 특정 값을 찾아서 삭제. →같은 값이 여러 개인 경우 처음 찾은 값 삭제 특정 값의 인덱스 구하기 index(값) 특정 값의 개수 구하기 count(값) 리스트 순서 반대로 뒤집기 reverse() 리스트 요소를 오름차순으로 정렬 sort() sort(reverse=False) / 내림차순 정렬 - sort(reverse=True) 리스트 모든 요소 삭제 clear() 리스트에서 가장 작은 값, 가장 큰 값.. 2020. 1. 1.
코딩도장 / Unit 16~18. 반복문 for문 (→는 들여 쓰기를 의미) for 변수 in range(횟수): →(반복할 코드) ex) for i in range(10): print('Hi',i) 결과) Hi 1 Hi 2 Hi 3 Hi 4 Hi 5 Hi 6 Hi 7 Hi 8 Hi 9 Hi 10 ex) a=[1, 2, 3] for i in a: print(a) 결과) 1 2 3 break ex) 0~9999까지 반복하는데 i가 100을 만나면 빠져나옴. for i in range(10000): print(i) if i=100 break continue i가 짝수면 print를 건너뛰고, 홀수면 출력. for i in range(100): if i%2==0: continue print(i) while문 (→는 들여 쓰기를 의미) i=0#초기식 .. 2019. 12. 26.
코딩도장 / Unit 13~15. if문 if문 (→는 들여쓰기를 의미) if(조건): →(수행 명령어) elif(조건2): →(수행 명령어2) else: →(수행 명령어3) if문 안의 조건은 참/거짓 판단이 가능해야 함. '=' 오류남. '==' 오류 안 남. 수행 명령어에 들어갈 명령어는 단순해도 됨. ex) a=30 else 뒤에는 조건이 불일치할 경우 수행할 명령이기 때문에 조건을 생략할 수 있음. 중첩 if조건문 (→는 들여쓰기를 의미) if(조건1): →if(조건2): →→(수행 명령어) 2019. 12. 26.