분류 전체보기(168)
-
안드로이드 해킹대회 어플 문제 4
문제 http://codeengn.com/challenges/smartapp/04 서명을 하고 설치를 하면 키를 입력하는 에디트 부분이 나오고 확인 버튼이 있습니다.androlyze로 확인해보면 zFindKey와 MainActivity가 보입니다. zFindKey 부분은 지금 별 쓸모가 없는 것 같습니다. MainActivity를 보면 버튼에대한 클릭 메소드가 없습니다. 특별히 암호화된 문자열도 보이지 않습니다. 잘못된 입력을 쳤을 때 Wrong!! try~ 문자열을 보여주는데 이 문자열도 찾을 수 없습니다.strings 명령어로 classes.dex 파일을 살펴봅니다. 리눅스의 strings는 파일에 사용된 문자열을 보여줍니다.그럼 긴 문자열 2개가 보입니다. @0c9e...과 6a4989... 그 위..
2014.11.03 -
다차원배열 3
문제는 더블릿 7 다차원배열에 있는 aja입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/aja/aja.php?pname=aja 처음에는 인접한 수가 +모양 ㄴ모양으로도 될 줄 알고 좀 생각해봤는데 ㅡ 혹은 ㅣ 모양으로만 인접한 것만 신경쓰면 되는 것 같습니다.배열이 작아서 일일이 계산해줘도 시간초과가 뜨지 않습니다.가로, 세로로 5개씩 합해줘서 가장 큰 값을 출력해주면 됩니다.
2014.11.02 -
divide and conquer 1
문제는 더블릿 20 divide and conquer에 있는 b_lineup입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/b_lineup/b_lineup.php?pname=b_lineup divide and conquer는 분할정복이란 뜻인데... 이 문제는 특별히 이런거 생각안해도 풀 수 있는 것 같습니다.문제를 설명하면 입력이 첫 줄 말고 한 줄에 2개씩 들어올 때가 있습니다. 이게 하나씩 들어오는 입력의 위치를 말하는 거고 이 사이에서 가장 큰 수와 가장 작은 수를 찾아 그 차이를 출력하면 됩니다. 알고리즘이 특별히 없습니다. 위에 설명한대로 입력을 다 받고 각 그룹, 1 5에서는 받은 키들중에 1과 5사이에 있는 것 중 최대값과 최소값을 구해서 차를 출력합니..
2014.11.01 -
다중 반복문 1
문제는 더블릿 4 다중 반복문에 있는 make_square입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/make_square/make_square.php?pname=make_square 어떤 수에 x를 곱했을 때 제곱수(같은 수를 곱해서 나온 수)가 되는 가장 작은 x를 구하는 것이 문제입니다.처음에 2중 for문으로 했으나 시간초과가 났습니다. 다중 반복문이래서 그랬는데...math.h를 인클루드하고 sqrt를 쓰면 됩니다. x를 올려가며 sqrt 정수부분 제곱이 원래의 값과 같을 때의 x를 출력하면 됩니다.
2014.11.01 -
안드로이드 해킹대회 어플 문제 3
문제 : http://codeengn.com/challenges/smartapp/02 그냥 설치하려고하면 역시 안됩니다. zip파일로 만들어서 압축을 풀면 파일명은 정상인데 META-INF 폴더가 없습니다. 서명을 한 후 설치하면 FindKey :) 라는 화면만 보입니다. dex2jar, jd-gui로 디컴파일을 해보려고해도 확인이 안됩니다. androlyze를 이용합니다.볼만한게 MainActivity밖에 없습니다. keyString 메소드를 보면 또 긴 문자열이 Decrypt된다는걸 쉽게 알 수 있고 이는 onCreate에서 호출되고 있습니다.날짜와 볼륨이 맞을 때 실행하라고 되어있는데... 날짜는 맞을리가 없고 Volume메소드를 보면 return 33;이라고 되어있습니다.smali수정으로 고쳐줍니..
2014.10.30 -
smali 로그 코드 추가
* 틀린 내용이 있을 시 지적 부탁드립니다. 자바 코드로 디버깅 시 활용할 수 있는 로그를 작성할 때는 Log.v()메소드를 활용합니다. smali 코드를 수정하여 저 메소드를 추가할 때는 추가하고 싶은 부분에invoket-static {v1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I를 추가하면 됩니다. 마지막은 영대문자 i입니다. v1,과 v0는 변수로 const-string v1, "aaaa"const-string v0, "10.26"invoke-static {v1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I과 같이 사용하면 됩니다.
2014.10.29