매크로

조회 수 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에서 특정 이미지가 어느 위치에 있던지 찾아봅시... 18 바아다아 2016.04.07 4/0
정보 지니모션 2.3.1 업데이트 이후 프렙 frepRun(V0.5).bat... 11 hk 2015.01.28 4/0
정보 핸드폰해상도가 1280x720 이신분들 18 적팀 2015.04.14 4/0
정보 루팅한 폰 프랩, 모비즌 사용법 [몬스터 길들이기] 32 위스키 2015.07.09 4/0
정보 Mac(맥)에서 frep 설정 및 셋팅하기 3 본컬렉터 2015.01.18 3/0
정보 프렙 돌리다가 꺼지시는분들. 소소한팁 5 아블태규 2015.04.24 3/0
정보 [각종오류팁] 프렙 렉/멈춤/이미지인식불가 기타등등 9 영등포양꼬치 2016.01.07 3/0
정보 레이븐 자주 팅기시는분 (안드로이드) 1 팬지반 2015.06.16 3/0
정보 몬길 이번 업데이트 이후로 프렙 실행 법.. 33 씩군 2014.10.16 2/0
정보 10월 24일 패치 후 매크로 설정법 팁 10 서풍의광시곡 2015.08.05 2/0
정보 [몬길] ver.2.12 프랩 무한사냥 매크로 DB 14 트레비 2015.08.05 2/0
정보 프랩 스와이프(드래그) 설정없이 사용하기!! 3 진갓 2015.01.26 2/0
정보 올해안에님 모험 시작 안되는 부분 수정방법 5 라기 2014.12.05 2/0
정보 휴대폰 별이되어라 프렙 우회 방법(루팅 필수) 18 Dride 2016.03.18 2/0
정보 T900S/T1000 몬길+Frep 구동을 위한 자동보안패치 스크... 바람처럼 2019.07.11 2/0
정보 * 몬길 frep 모험용 아주 간단하게 만들기 29 오렌지케이크 2015.02.24 2/0
정보 폰으로 프렙사용시 매크로풀림현상 팁 6 워으리어 2015.03.13 2/0
정보 프랩 이미지인식에서꺼지시는분들.. 11 밤톨2 2015.05.21 2/0
정보 프렙 캘리브 인풋(Calibrate Input), DB 바로 복사 관... 6 옹스컴 2015.03.09 2/0
정보 세나 프렙DB 수정 방법입니다. 16 옹스컴 2015.04.08 2/0
Board Pagination Prev 1 23456 7 Next
/ 7

전체 최신 인기글

전체 주간 인기글