매크로

조회 수 4855 추천 2 댓글 19

심심풀이로

설마 저같은 4류 프로그래머가 뚫겠냐 싶어서 해보다가

언팩킹 후에 ge.smail 내부 몇개 if-nez 같은거 제끼고 리팩킹했더니

unlock key 없이 매크로 갯수 제한 풀리고 Screenshot  기능 활성화되고

해제 되는거 보고 깜놀했습니다만...

이런 글 쓰면 안되는거겠죠??

문제시 바로 삭제 하겠습니다.

ㅠㅠ


------------------------------------------------------------------------------------


여러 글을 둘러보면서

특히 바람처럼님 글 보면서 무엇보다 Frep 개발자가 너무 마음 아파 할거 같아 apk를 직접 올리지 않겠습니다.


다만 고쳐야 할 파일 여러개 중 한가지에 대해서 고치는 법을 좀 더 상세히 기술하겠습니다.

글구 다음번엔 개발자님께서 스크립트 언어처럼 코딩 기능이 지원 되게 만들어 줄 수 없는지 요청 하고 싶습니다;;;


취미 삼아 연구 하는 터라 틀린 점이 많을 수 있습니다. 잘못 된 점 지적 바랍니다.


웬지 모르게 이 루틴이 의심스럽다는 감각(?)에 따라 무식하게 고쳐보았습니다.


fm.smail 에서  Checking 하는 Routine 으로 보이는 구간입니다.


1. com.x0.strai.frepkey 이라는 unlock key 패키지명이 보입니다.

2. unlockstate 라는 주목할 만한 글자도 보입니다.

3. 저도 넘 어려워서 전혀 모르겠지만 Signature를 가져 오거나 Checking 하는 루틴으로 보이는  iget-object  어쩌구 signatures, 또는 checkSignatures 에 주목

4. if-eqz V1, : cond_0 => 만약 결과(V1)가 0이라면 cond_0: 로 Jump 하란 의미로 보임...

5. Signature 웬지 항상 가져 와야할거 같은 느낌.... 붉은 라인은 모두 제거 하는걸로 결정

6. if 어쩌구로 조건이 조금만 안 맞아도 주황색의 라벨이 붙은 cond_0: 로 Jump하는걸로 추정되고 checkSignatures 를 거치지 않고 return을 만나 함수가 종료되는 느낌

7. 따라서 cond_0는 돌아 올 수 없는 공포(?)의 구간으로 추정 이를 회피할 수 있는 유일한 루틴은 cond_1으로 가는 길....

goto :cond_1 를 추가하여 회생(?)의 길을 열어 줍니다.

8. 회생에 길 cond_1: 루틴에서도 공포의 cond_0 을 만나는 루틴들이 보입니다. 무시무시한 녀석이니 전부 제거

9. 도중에 cond_2로 가는 길목에 Signature를 가져오는걸로 추정되는 루틴이 보임 이를 거쳐야 할 것 같은 예감... 에

if-nez v0, :cond_2 제거 cond_2 루틴에는 unlockstate가 보임 그 이하엔 공포의 cond_0로 가는 루틴이 없으므로 맘 편히 PASS


핵심 요약:

1. 보라색 루틴에 의해 해당 루틴의 중요성을 감지 한다. 

2. 공포의 아무것도 안 한채 Return 을 일으키는 cond_0 루틴의 심각성을 인지 

3. 도중 피할수 없는 cond_0 루틴 좌절하지 말고... 절때 회피 신공 goto :cond_1 님의 도움을 받는다.

4. cond_2는 아름다운(?) unlock 구간임을 인지

5. 그 이하엔 cond_0 루틴이 없어 안심...



유사 루틴이 다른 smail 파일 에도 있으니 비슷한 방법으로 제거 하면 됩니다

참고로 한 손 가락안에 들어올 정도로 몇 개 없습니다


.method private u()V
    .locals 5

    const/4 v3, 0x1

    const/4 v0, 0x0

    iput-boolean v0, p0, e:Z

    :try_start_0
    invoke-virtual {p0}, getPackageManager()Landroid/content/pm/PackageManager;

    move-result-object v0

    invoke-virtual {p0}, getPackageName()Ljava/lang/String;

    move-result-object v1

    const/16 v2, 0x40

    invoke-virtual {v0, v1, v2}, Landroid/content/pm/PackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;

    move-result-object v1

    if-eqz v1, :cond_0

    iget-object v2, v1, Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature;

    if-eqz v2, :cond_0

    iget-object v2, v1, Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature;

    array-length v2, v2

    if-ge v2, v3, :cond_1
    goto :cond_1

    :cond_0
    :goto_0
    return-void

    :cond_1
    invoke-virtual {p0}, getResources()Landroid/content/res/Resources;

    move-result-object v2

    sget v3, Lcom/x0/strai/frep/kt;->apkmd5:I

    invoke-virtual {v2, v3}, Landroid/content/res/Resources;->getText(I)Ljava/lang/CharSequence;

    move-result-object v2

    if-eqz v2, :cond_0

    invoke-virtual {p0}, getPackageName()Ljava/lang/String;

    move-result-object v3

    const-string v4, "com.x0.strai.frepkey"

    invoke-virtual {v0, v3, v4}, Landroid/content/pm/PackageManager;->checkSignatures(Ljava/lang/String;Ljava/lang/String;)I

    move-result v0

    if-nez v0, :cond_2

    invoke-interface {v2}, Ljava/lang/CharSequence;->toString()Ljava/lang/String;

    move-result-object v0

    iget-object v1, v1, Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature;

    const/4 v2, 0x0

    aget-object v1, v1, v2

    invoke-virtual {v1}, Landroid/content/pm/Signature;->toByteArray()[B

    move-result-object v1

    invoke-static {v1}, Lcom/x0/strai/frep/kz;->b([B)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_2

    invoke-virtual {p0}, d()Z

    move-result v0

    if-eqz v0, :cond_2

    invoke-virtual {p0}, b()Z

    move-result v0

    if-nez v0, :cond_2

    const/4 v0, 0x1

    iput-boolean v0, p0, e:Z

    :cond_2
    iget-object v0, p0, b:Landroid/content/SharedPreferences;

    invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor;

    move-result-object v0

    const-string v1, "unlockstate"

    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v2

    invoke-interface {v0, v1, v2, v3}, Landroid/content/SharedPreferences$Editor;->putLong(Ljava/lang/String;J)Landroid/content/SharedPreferences$Editor;

    move-result-object v0

    invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->commit()Z
    :try_end_0
    .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0

    goto :goto_0

    :catch_0
    move-exception v0

    goto :goto_0
.end method


  


  • 에데루스 2016.07.08 21:43

    공유좀 부탁드려요

  • 바슈TS 2016.07.08 21:54

    unlock 기능 중 3개 제한 풀린 기능만 푼 버젼도 괜찮을까요?

    뭔가 금단의 기능을 뚫은거 같아서;;; 

    계정 명이라도 바꾸면 좀 나을까란 생각도 있고

    복잡하네요

    ㅠㅠ

  • 에데루스 2016.07.08 21:57
    우회까지 되있으면 공유좀 부탁드려요

    우회+언락까지 되있는게 없더라구요
  • 바슈TS 2016.07.08 22:00
    사실 win_alt.bat에서 막혀서
    strserv 는 Direct로 ADB 써서 어거지로 고친거라
    ㅠㅠ
  • 바슈TS 2016.07.08 22:27

    좀 전에 지웠던 글을 그냥 여기에 첨부하겠습니다.


    간단하게 힌트만 드리겠습니다.


    apktool 같은 패키지 역 컴파일러로 apk를 역 컴파일하구요

    JAVA의 Assembly 코드 인거 같은데 하튼

    .smail 파일이 나오도록 Source Level 까지 분해 합니다.


    AndroidManifest.xml 에 들어가면 package="com.... 하튼 패키지 명이 있는데요

    주로 게임 회사에선 제가 알기론 이와 동일한 앱이 깔려있는지 체크를 합니다.


    패키지 명을 바꾸시는 방법은 인터넷에 잘 나와있긴 합니다.

    http://comostudio.tistory.com/5

    에 들어가시면 패키지 명을 쉽게 바꿀 수 있습니다.


    패키지명을 바꾸면 실행은 되긴합니다.

    1. 다만 실행만 가능하고 win_alt.bat가 안 먹는건 함정...

    2. free 버젼 unlock은 .smail 을 직접 뜯어 고쳐야 하더라구요 unlock app 또한 frep 을 못찾아서 안 먹는거 같더라구요

  • 바슈TS 2016.07.08 22:31

    아 그리고 이글 다 보이는게 좀 난감해서요 ㅠㅠ

    제발 추천좀 눌러주세요

    분명 막힐거 같은데 이 방법

  • 바슈TS 2016.07.08 23:00

    근데 파일 같은건 어케 올리나요;;;

    딴거 보니까 Drop 박스 해본적이 없어서 ㅠㅠ

  • 에데루스 2016.07.08 23:30
    drop박스에 올리신후 공유하기로 링크 따오시면 되요
  • 바슈TS 2016.07.09 17:58

    의견 좀 주시면 안될까요...

    의견이 없으면 문제가 있다고 판단하고 이번주 중으로 삭제 하는게 맞는거 같네요.

    물의를 일으킨거 같아 죄송합니다. 

    ㅠㅠ

  • 바슈TS 2016.07.10 09:11

    아 이런 검색된다.

    더 망했다. 돌이킬수 없는 강인가

    ㅠㅠ

  • 아까따루겐 2016.07.11 14:14

    먼 내용인지 하나도 모르겠습니다...파일을 그냥 좀 올려주시미..ㅠㅠ 

    간절히 부탁드립니다 ㅠㅠ

  • 아까따루겐 2016.07.11 14:16

    apk 좀 올려주세요 ㅠㅠ

  • 바슈TS 2016.07.26 15:37
    에고... 제가 답글도 못 달고 그냥 지나쳤네요;;;
    아예 새로운 방법을 직접 고안 중인데요...
    최종본까지 만든다 해도 메크로 프로그래밍은 직접 하시게 될거 같긴합니다 ^^;;
  • 기달아 2016.07.21 13:17

    어렵네요

  • 별꽁 2016.07.25 20:54
    어플 공유좀 부탁 드립니다.
    머리가 안좋아서 못 하겠어요
    부탁드립니다
    [email protected]
  • 바슈TS 2016.07.26 15:46
    Frep이 현재 미지원 상태인 자신이 원하는 C,JAVA,Python 프로그래밍 3개 정도 언어 정도로
    쉽게 연결해 쓸 수 있는 방법을 고안중입니다
    ㅠㅠ
  • 개발용이 2016.12.14 01:51
    어플공유는안되는거죠?ㅠ혹시나...해서요
    [email protected]
  • 체다 2016.12.23 11:01

    저도 혹시나 부탁드립니다..ㅠㅠㅠㅠ

    [email protected]

  • 섯망여 2017.03.26 13:19
    존경하는형님 문제해결도와주실수있나요 사례가능합니다 [email protected]

List of Articles
분류 제목 글쓴이 최근변경 추천
정보 Frep 때문에 게임실행 안될때... 마패 2020.07.31 0/0
정보 LD플레이어 및 앱플레이어 녹화방법 및 수정(2) 2 dlslwl 2021.05.11 0/0
정보 LD플레이어 및 앱플레이어 녹화방법 및 수정(1) dlslwl 2020.05.26 0/0
정보 android(안드) 10 업데이트 이후 터치가 안되는 문제 ... 2 그런지다 2020.12.17 0/0
정보 프렙 임시루팅이 풀리는 현상 해결법(안드 9.0, LG, Q51) 3 그런지다 2020.05.24 0/0
정보 노루팅 프랩 오류 해결법 ( 저는 화웨이 미디어패드 M5... 1 성인남자 2019.05.03 0/0
정보 V20을 비롯한 일부 LG 폰에서 Frep이 안 되는 이슈가 ... 코창인생 2019.03.01 0/0
정보 안드로이드 8.0 노루팅 프렙 사용 시 frep setup이 풀... 1 네오K 2018.03.30 0/0
정보 루팅폰)이미지 서치기 안될때 1 암조디아 2017.06.07 0/0
정보 프렙 우회버전 입니다. 3.9(패치3) 버전입니다. 17 완소현이 2023.05.25 2/0
정보 메엠프렙 깔면서...후기 및 해결방법 2 Robwl 2017.01.06 0/0
정보 메이플 m 프렙 됩니다. 뀨!!!! 난 바보였어!!(★추가)-... 54 하마 2017.09.15 2/0
정보 제가 매크로를 돌리는데 if조건문(화면이 안뜨면) 1 JChro 2016.08.08 0/0
정보 제가 Frep을 뚫기전 어플라이센스 크랙 방법을 공부하... 3 바슈TS 2017.03.02 0/0
정보 Frep 3.9 우회 + Unlock 방법, 핵심 사항 정리 19 바슈TS 2017.03.26 2/0
정보 프랩 종료시 재 실행 10 지니73 2016.05.27 0/0
정보 frep is restricted for this app 1 criceH 2016.05.26 0/0
정보 일일미션 같은 날짜를 인식해서 특정작업 실행하기 3 지니73 2016.02.12 0/0
정보 프렙 잘 안되시는분 참고 roonii 2016.01.07 0/0
정보 세나쫄교체 (참조하세요) 19 한번만66 2016.01.22 1/0
Board Pagination Prev 1 23456 7 Next
/ 7

전체 최신 인기글

전체 주간 인기글