매크로

조회 수 4856 추천 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
분류 제목 글쓴이 최근변경 추천
정보 (노루팅) 컴퓨터 없이 프렙 런닝하기~! 8 영등포양꼬치 2017.12.23 2/0
정보 * 몬길 frep 모험용 아주 간단하게 만들기 29 오렌지케이크 2015.02.24 2/0
정보 10월 24일 패치 후 매크로 설정법 팁 10 서풍의광시곡 2015.08.05 2/0
정보 abort sequence 0 degree 오류 뜨시는분들께 1 화슬 2015.01.15 0/0
정보 android(안드) 10 업데이트 이후 터치가 안되는 문제 ... 2 그런지다 2020.12.17 0/0
정보 dpi란? 1 긔여븐앙마 2014.12.08 0/0
정보 edit mask와 wait 설정 시 주의점 1 걱정않는자 2016.01.22 0/0
정보 frep 2.버전 이미지인식 가능 5 jnh81 2014.09.28 1/0
정보 frep 3.7 패치2 하지마세요. 4 내마음부장 2016.01.22 0/0
정보 Frep 3.9 우회 + Unlock 방법, 핵심 사항 정리 19 바슈TS 2017.03.26 2/0
정보 frep is restricted for this app 1 criceH 2016.05.26 0/0
정보 Frep 때문에 게임실행 안될때... 마패 2020.07.31 0/0
정보 frep 몬길보안걸리시는분들은 제경험으로 피로꼼 2015.02.09 0/0
정보 frep 사용시 이미지 인식은 되나 터치가 안될 때! 7 세나매클징징 2015.04.06 1/0
정보 frep 은 막혔지만.. 히로메클은 잘되네요.. 이글때문에... 14 울하찔 2015.02.03 0/0
정보 frep.db 파일을 버튼 한번에 프랩 폴더로 옮기자! 고듀마 2015.02.04 1/0
정보 frep디버깅 6 맹꽁이 2015.12.15 0/0
정보 Frep에서 특정 이미지가 어느 위치에 있던지 찾아봅시... 18 바아다아 2016.04.07 4/0
정보 LD플레이어 및 앱플레이어 녹화방법 및 수정(1) dlslwl 2020.05.26 0/0
정보 LD플레이어 및 앱플레이어 녹화방법 및 수정(2) 2 dlslwl 2021.05.11 0/0
Board Pagination Prev 1 23456 7 Next
/ 7

전체 최신 인기글

전체 주간 인기글