나름 깔끔한 날씨 프로그램인 eWeather HD를 Android P OS까지 문제없이 사용하고 있었습니다.

그런데 Galaxy S9을 최신 Q OS 업그레이드 직후 eWeather HD 실행, 화면이 보이는 동시에 crash가 나고 죽어 버립니다.

 

죽는 위치는 dump 하면 쉽게 확인됩니다.

JNI DETECTED ERROR IN APPLICATION: use of invalid jobject 0xc30e076c

from java.lang.String com.skt.arm.ArmManager.ARMPluginMakeChallenge(java.lang.String)

 

crash log 중요 내용은 아래와 같습니다.

02-17 02:25:19.945 10426 13450 16754 F nt.WeatherCloc: java_vm_ext.cc:570] JNI DETECTED ERROR IN APPLICATION: use of invalid jobject 0xc30e076c
02-17 02:25:19.945 10426 13450 16754 F nt.WeatherCloc: java_vm_ext.cc:570]     from java.lang.String com.skt.arm.ArmManager.ARMPluginMakeChallenge(java.lang.String)
...
...
02-17 02:25:20.220 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641] Runtime aborting...
02-17 02:25:20.220 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641] Dumping all threads without mutator lock held
02-17 02:25:20.220 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641] All threads:
02-17 02:25:20.220 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641] DALVIK THREADS (17):
02-17 02:25:20.220 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641] "AsyncTask #1" prio=4 tid=7 Runnable
02-17 02:25:20.220 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   | group="" sCount=0 dsCount=0 flags=0 obj=0x12e5fe20 self=0xd6567800
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   | sysTid=16754 nice=10 cgrp=default sched=0/0 handle=0xc3208230
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   | state=R schedstat=( 33144883 457271 28 ) utm=1 stm=1 core=5 HZ=100
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   | stack=0xc3105000-0xc3107000 stackSize=1040KB
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   | held mutexes= "abort lock" "mutator lock"(shared held)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   native: #00 pc 002fe4ef  /apex/com.android.runtime/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+78)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   native: #01 pc 003a768b  /apex/com.android.runtime/lib/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool, BacktraceMap*, bool) const+358)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   native: #02 pc 003a3e63  /apex/com.android.runtime/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool, BacktraceMap*, bool) const+34)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   native: #03 pc 003bc485  /apex/com.android.runtime/lib/libart.so (art::DumpCheckpoint::Run(art::Thread*)+576)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   native: #04 pc 003b70c7  /apex/com.android.runtime/lib/libart.so (art::ThreadList::RunCheckpoint(art::Closure*, art::Closure*)+354)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   native: #05 pc 003b67ad  /apex/com.android.runtime/lib/libart.so (art::ThreadList::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool)+1416)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   native: #06 pc 00376953  /apex/com.android.runtime/lib/libart.so (art::Runtime::Abort(char const*)+1058)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   native: #07 pc 0000855f  /system/lib/libbase.so (android::base::LogMessage::~LogMessage()+406)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   native: #08 pc 0028806f  /apex/com.android.runtime/lib/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1194)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   native: #09 pc 00288211  /apex/com.android.runtime/lib/libart.so (art::JavaVMExt::JniAbortF(char const*, char const*, ...)+64)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   native: #10 pc 003ac06f  /apex/com.android.runtime/lib/libart.so (art::Thread::DecodeJObject(_jobject*) const+538)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   native: #11 pc 00417905  /apex/com.android.runtime/lib/libart.so (_ZN3artL37JniMethodEndWithReferenceHandleResultEP8_jobjectjPNS_6ThreadE.llvm.5386863320803738609+36)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   at com.skt.arm.ArmManager.ARMPluginMakeChallenge(Native method)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   at com.skt.arm.ArmManager.a(unavailable:-1)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   at com.skt.arm.f.a(unavailable:-1)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   at com.skt.arm.f.doInBackground(unavailable:-1)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   at android.os.AsyncTask$3.call(AsyncTask.java:378)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
02-17 02:25:20.221 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641]   at java.lang.Thread.run(Thread.java:919)
02-17 02:25:20.230 10426 13450 16754 F nt.WeatherCloc: runtime.cc:641] 
02-17 02:25:20.230 10426 13450 16754 F nt.WeatherCloc: runtime.cc:649] JNI DETECTED ERROR IN APPLICATION: use of invalid jobject 0xc30e076c
02-17 02:25:20.230 10426 13450 16754 F nt.WeatherCloc: runtime.cc:649]     from java.lang.String com.skt.arm.ArmManager.ARMPluginMakeChallenge(java.lang.String)
...
...
--------- beginning of crash
02-17 02:25:20.230 10426 13450 16754 F libc    : Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 16754 (AsyncTask #1), pid 13450 (nt.WeatherClock)
02-17 02:25:20.251  1000  4997  5086 E libprocessgroup: Failed to kill process cgroup uid 10158 pid 13776 in 206ms, 1 processes remain
02-17 02:25:20.279 10426 16786 16786 E crash_dump32: unknown process state: t
02-17 02:25:20.290 10426 16786 16786 I crash_dump32: obtaining output fd from tombstoned, type: kDebuggerdTombstone
02-17 02:25:20.295  1058  4758  4758 I /system/bin/tombstoned: received crash request for pid 16754
02-17 02:25:20.296  1000  4777  5396 D bauth_FPBAuthService: pcf : 0x1012, 0 ,2 ,0 ,0 ,0 ,2, 5.0.0.0
02-17 02:25:20.296  1000  4777  5396 D bauth_FPBAuthService: thread id : 2, preenroll_flag : 0, nd cnt : 1, cso : 0, et : 0
02-17 02:25:20.296  1000  4777  5396 D bauth_FPBAuthService: FPBAuthService, 10979
02-17 02:25:20.296 10426 16786 16786 I crash_dump32: performing dump of process 13450 (target tid = 16754)
02-17 02:25:20.307 10426 16786 16786 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
02-17 02:25:20.308 10426 16786 16786 F DEBUG   : Build fingerprint: 'samsung/starlteks/starlteks:10/QP1A.190711.020/G960NKSU2DTAB:user/release-keys'
02-17 02:25:20.308 10426 16786 16786 F DEBUG   : Revision: '26'
02-17 02:25:20.308 10426 16786 16786 F DEBUG   : ABI: 'arm'
02-17 02:25:20.308 10426 16786 16786 F DEBUG   : Timestamp: 2020-02-17 02:25:20+0900
02-17 02:25:20.308 10426 16786 16786 F DEBUG   : pid: 13450, tid: 16754, name: AsyncTask #1  >>> com.Elecont.WeatherClock <<<
02-17 02:25:20.308 10426 16786 16786 F DEBUG   : uid: 10426
02-17 02:25:20.308 10426 16786 16786 F DEBUG   : signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
02-17 02:25:20.308 10426 16786 16786 F DEBUG   : Abort message: 'JNI DETECTED ERROR IN APPLICATION: use of invalid jobject 0xc30e076c

대충 보면 skt에서 제공하는 so library의 특정 native 함수에서 죽는 문제입니다.

업데이트가 매우 오래전에 멈추어진 App.이라 그럴 수도 있겠죠.

 

핵심 호출 부분은 아래입니다.

at com.skt.arm.f.a(unavailable:-1)

at com.skt.arm.f.doInBackground(unavailable:-1)

 

즉 doInBackground 안에서 호출하는 com.skt.arm.f.a 호출 흐름에서 죽습니다.

이걸 해결할 방법은 없고 대신 호출을 막습니다.

그리고 test하니 - SKT 서비스가 없다면서 App. 을 강제 종료 해 버립니다 우쓰!

 

그래서 doInBackground 종료 후 호출되는 onPostExecute 의 주요 호출을 막으니, 정상 동작이 됩니다.

아마다 예전 SKT 관련 서비스 유무 확인 혹은 여러 내용(라이센?!)을 확인하는 루틴이 Q OS에서 동작이 되지 않은 듯 합니다.

 

어찌 되었건 문제는 해결되었습니다.

비록 오래된 App.이지만 더 이상 update 되지 않는 버전이지만 문제만 해결해서 계속 사용하게 되었습니다.

** 해당 App. 은 Play store에 최신 버전의 App. 이 제공되지만 예전 T Store 와는 다른 signature 사용으로 인해 업그레이드를 할 수 없습니다.

 

주요 수정 point는 아래와 같이 요약할 수 있습니다. 단순히 smali 수준에서 문제 함수를 막아서 해결했습니다.

맨 앞에 # 한 부분입니다.

# virtual methods
.method protected final varargs synthetic doInBackground([Ljava/lang/Object;)Ljava/lang/Object;
    .locals 1

#    invoke-direct {p0}, Lcom/skt/arm/f;->a()Ljava/lang/String;

#    move-result-object v0
	const-string v0, " Not ACTIVITY"

    return-object v0
.end method

.method protected final synthetic onPostExecute(Ljava/lang/Object;)V
    .locals 1

    check-cast p1, Ljava/lang/String;

    invoke-super {p0, p1}, Landroid/os/AsyncTask;->onPostExecute(Ljava/lang/Object;)V

#    iget-object v0, p0, Lcom/skt/arm/f;->a:Lcom/skt/arm/e;

#    invoke-static {v0}, Lcom/skt/arm/e;->a(Lcom/skt/arm/e;)Lcom/skt/arm/ArmManager;

#    move-result-object v0

#    invoke-static {v0}, Lcom/skt/arm/ArmManager;->b(Lcom/skt/arm/ArmManager;)V

    return-void
.end method

위 내용 참고요 스크린 샷 (APK Studio)

APK Studio to fix the crash

* 수정 후 정상 동작 스크린 샷~

 

 

** 리버스 엔지니어링은 더이상 업그레이드가 제공되지 않는 S/W 에 대한 호환성 확보를 위한 목적에는 적법합니다.

컴퓨터프로그램 보호법 - 역분석 관련 법

제12조의2 (프로그램코드역분석)
①정당한 권원에 의하여 프로그램을 사용하는 자 또는 그의 허락을 받은 자가 호환에 필요한 정보를 쉽게 얻을 수 없고 그 획득이 불가피한 경우 당해 프로그램의 호환에 필요한 부분에 한하여 프로그램저작권자의 허락을 받지 아니하고 프로그램코드역분석을 할 수 있다.
②제1항의 규정에 의한 프로그램코드역분석을 통하여 얻은 정보는 다음 각호의 1에 해당하는 경우에는 이를 사용할 수 없다.
   1. 호환 목적외의 다른 목적을 위하여 이용하거나 제3자에게 제공하는 경우
   2. 프로그램코드역분석의 대상이 되는 프로그램과 표현이 실질적으로 유사한 프로그램을 개발·제작·판매하거나 기타의 프로그램저작권을 침해하는 행위에 이용하는 경우
      [본조신설 2001·1·16][[시행일 2001·7·17]]

 

이 글에서는, 미라지(M480, M4800) 320x320 해상도에서 맵피Go를 사용할 수 있는 패치정보를 제공 해 드립니다.

갱신내역
  [2011-01-29] MappyGo v1.0.13A 용 패치 파일 등록




맵피 Go! - 새로운 버전인 맵피가 나온지도 꾀 되었습니다.

저도 개인적으로는 차량용 전용 내비게이션을 사용하고 있는 관계로 M480, M4800용 맵피고가 나옴에도 불구하고 신경을 쓰지 못했습니다.

참고로 차량용 내비로는 파인디지탈 IQ 3D 1000 을 사용 중입니다. 이전에 IQ Blue를 사용하다 한번 더 갈아 탓는데요. Blue도 경품 당첨!, 3D 1000은 물건 구입에 대한 할인개념으로 받은 것이라~ ㅎㅎ
잡설이 길었습니다.


이제는 iPhone, Android phone이 '스마트 폰'의 기본이 되어버린 시대에 미라지(M480, M4800)사용자도 급감하고 있는 것 같더군요.
저 역시 차에서는 전용 내비를 사용중이긴 하나, 휴대폰은 아직도(!) M4800 미라지를 사용 중입니다. 여러 벌레도 많고, 불편한것이 많으나 갤럭시S 사기에는 너무 늦은 시점이라... 갤럭시S 2 나오기 전 까지는 이용 중입니다.
역시나 잘설(2)도 길었네요 ㅎㅎ.


그리하여~ 맵피Go 에 대해서도 미라지에서 사용하기 위해 약간의 연구, 분석을 했습니다.

이전과 완전히 달라진 프로그램인 맵피Go 답게, 이전과는 완전히 다른 방식으로 code가 구성이 되어, 약간의 삽질이 필요 했습니다.
처음에는 너무 급하게, 쉽게 패치 하려다가 엉뚱한데서 돌고 돌았습니다.

하지만 이번에도 2가지 패치를 거쳐서 미라지에서도 맵피Go를 어정쩡 하지만, 답답한 대로 사용 할 수 있게 되었습니다.


이번 맵피Go는 해상도를 96 DPI(강제호환 설정) / 128 DPI(미라지 기본) 설정함에 관계없이 동작은 합니다.
다만 기본 상태에서는 메뉴바가 화면 한가운데를 가로 질러가 버리는 문제가 있고, 이 때 화면 터치시에 가로는 맞으나, 세로가 보는 것과 터치가 다른 문제가 있습니다.
가장 큰 문제는 메뉴바가 사라져 버리고, 이후로 메뉴를 접근할 수 없는 아주 심각한 문제가 발생 합니다.

이 문제의 메뉴바를 아래에 내려 놓으면 좋겠지만....
불행하게도 이전과 같이 GetDeviceCaps 함수는 눈 닦고 봐도 보이지 않습니다.
대신에 화면 해상도에 따른, 화면 구성파일 2개 중 하나를 이용해서 화면을 구성하는 형식이더군요.
파일로는 mappysl240.art 파일 혹은 mappysl320.art 파일이 화면을 구성하는 파일이고, 이 둘중 하나 선택 하는 정도는 프로그램적으로 접근이 가능하나, 이 파일을 분석하는 것은 현재로서는 제 능력 밖인 듯 합니다.

그래서, 쉽고도 간단하게 문제가 되는 320 X 240 인식이 아닌(미라지에서 이렇게 인식 됨), 240 X 320으로 강제 인식하도록 수정하는게 이번 패치의 주된 일입니다.
다만 이로 인해 우측의 남는 부분 (320-240) 80 pixel 만큼의 영역은 최초 배경이 보이는 문제가 있습니다. 이런 현상을 감안 하고 사용 하실 분은 아래 제공 해 드리는 패치 파일로 꺼져가는 미라지에 대한 사랑을 조금이라도 살려 보시길 바랍니다.


관련 힌트 디스어셈블리 코드
.text:0001B4E0                 ADD     R12, SP, #0x420+var_220
.text:0001B4E4                 STRH    R3, [R12,#8]
.text:0001B4E8                 BL      memset
.text:0001B4EC                 LDR     R4, =unk_14DC5C
.text:0001B4F0                 LDR     R1, =aSSMappysl320_a
.text:0001B4F4                 LDR     R3, =aImage
.text:0001B4F8                 LDR     R2, [R4]
.text:0001B4FC                 ADD     R0, SP, #0x420+var_420
.text:0001B500                 ADD     R2, R2, #0x218
.text:0001B504                 BL      swprintf
.text:0001B508                 LDR     R2, [R4]
.text:0001B50C                 LDR     R1, =aSSMappysl240_a
.text:0001B510                 LDR     R3, =aImage
.text:0001B514                 ADD     R2, R2, #0x218
.text:0001B518                 ADD     R0, SP, #0x420+var_218
.text:0001B51C                 BL      swprintf
.text:0001B520                 LDR     R0, [R5,#0x5C]

다만 code를 직접 건드리는 것은 여러 귀찮은 문제가 있으므로, 위 파일명이 저장된 위치에서 "mappySl320.art" 부분을 찾아서 "mappySl240.art" 로 수정 합니다.
아래 위치입니다.

즉 Sl320 으로 된 부분을 걍 Sl240 으로 32 대신 24로 수정 하는 작업 입니다.
이것 만으로, 미라지에서 강제로 240 X 320 해상도로 고정을 해 버리고, 화면이 보기 좋지 않으나, 적어도 실행 중에 메뉴가 사라지는 문제는 없앨 수 있었습니다.

000fe2b0h: 76 00 00 00 25 00 73 00 5C 00 25 00 73 00 5C 00 ; v...%.s.\.%.s.\.
000fe2c0h: 6D 00 61 00 70 00 70 00 79 00 53 00 6C 00 32 00 ; m.a.p.p.y.S.l.2.
000fe2d0h: 34 00 30 00 2E 00 61 00 72 00 74 00 00 00 00 00 ; 4.0...a.r.t.....
000fe2e0h: 49 00 6D 00 61 00 67 00 65 00 00 00 25 00 73 00 ; I.m.a.g.e...%.s.
000fe2f0h: 5C 00 25 00 73 00 5C 00 6D 00 61 00 70 00 70 00 ; \.%.s.\.m.a.p.p.
000fe300h: 79 00 53 00 6C 00 32 00 34 00 30 00 2E 00 61 00 ; y.S.l.2.4.0...a.

위 내용 보시고 직접 patch 하셔도 되구,
아래 파일을 이용해서 패치 하셔도 됩니다.

[안내]
아래 제공되는 파일은 맵피 PDA 라이센스를 소유 하고 있으나 M&Soft 에서 이해할 수 없는 정책을 주장하여M480, M4800 에서는 사용 할 수 없는 호환성을 해결하고자 개인적으로 만든 파일 입니다.
관련 법을 준수하시기 바랍니다.
컴퓨터프로그램 보호법 - 역분석 관련 법

제12조의2 (프로그램코드역분석)
①정당한 권원에 의하여 프로그램을 사용하는 자 또는 그의 허락을 받은 자가 호환에 필요한 정보를 쉽게 얻을 수 없고 그 획득이 불가피한 경우 당해 프로그램의 호환에 필요한 부분에 한하여 프로그램저작권자의 허락을 받지 아니하고 프로그램코드역분석을 할 수 있다.
②제1항의 규정에 의한 프로그램코드역분석을 통하여 얻은 정보는 다음 각호의 1에 해당하는 경우에는 이를 사용할 수 없다.
   1. 호환 목적외의 다른 목적을 위하여 이용하거나 제3자에게 제공하는 경우
   2. 프로그램코드역분석의 대상이 되는 프로그램과 표현이 실질적으로 유사한 프로그램을 개발·제작·판매하거나 기타의 프로그램저작권을 침해하는 행위에 이용하는 경우
      [본조신설 2001·1·16][[시행일 2001·7·17]]

이 파일을 이용해서 맵피를 사용 하기 위해서는 
반드시 맵피 PDA 라이센스를 소유 하고 있으며, 또한 Mappy 전체 이미지를 정상적으로 download하신 분 만이 사용이 가능 합니다.

여기서 안내드리는 내용은 직접 patch를 할 수 있는 정보와 patch용 요약자료만 공유 합니다.
패치 프로그램과 Mappy라이센스, Mappy 인스톨 파일은 개인 소유의 것을 이용하셔야 합니다.


Patch 파일은 Free software인 VPatch 를 사용 했습니다. Google 등의 검색엔진을 이용하셔서 개인이 구하셔야 합니다. 또한 별도 패치용 실행 파일도 제공을 합니다.
이 프로그래과 제공하는 data를 이용하여 발생하는 법적인 문제에 대해서는 사용하는 당사자들의 책임임을 밝혀 둡니다.

아래 파일에 대해서는 그 어떠한 질문에 대해서도 답변을 드리지 않습니다.

패치요약 파일:

[2011-01-29] MappyGo v1.0.13A



위 파일은 VPatch 라는 프로그램을 설치하고난 뒤에 전용 프로그램을 이용하시면 됩니다.

*당연히 PDA(WM5.0)용 맵피Go 1.0.12 (파일 날짜 2010-11-22) 를 소유해야 합니다.
*Patch 실행 법은 VPatch 설명서를 참고 하세요.
>  
VPATCHPROMPT.EXE PatchData_MappyGo_101222_For_M430x (sourcefile) (outputfile)

혹은 아래 실행 파일을 이용하셔도 됩니다.

VPatch_MappyGo_101222_For_M430x (Original) (Output)

그럼 미라지와 함께 즐 맵피Go 하시길 바라며~ 오늘도 이정도로 글을 끝낼까 합니다.
맵피Go가 큰 변동 없다면 한동안 업데이트 할 것 같으나... 저도 미라지를 떠나게 되면 어떻게 될지는 장담 할 수 없을 것 같습니다.

추가로 - GPS 잡은 모습 보여 드립니다.
이전 버전과 달리 자동 탐색하면 제대로 잡아 주고, 사용에도 문제 없는 듯 합니다. 다만 미리 External GPS 데이타는 한번 받아 주세요.




휴가와 여러 일로 인해 늦게 5.7.1 버전에 대한 320x320 사용을 위한 수정 내용을 올려 드립니다.
패치 방식은 이전과 동일 합니다. 다만 편의를 위해 패치을 해 주는 독립 실행 파일도 첨부 했습니다.
즐 맵피 하세요~




상세 분석은 이전글을 참고 해 주세요





"차례" "Code address" "파일offset"
     [ 원본 hex code ]  --> [ 수정 hex code ]

320x240 강제 설정 패치 부분

1  0004AC80 ( 03A080 )
   [ F4 A7 07 EB ] --> [ 05 0D A0 E3 ]

2  0004AC90 (
03A090 )
   [ F0 A7 07 EB ] --> [ F0 00 A0 E3 ]

3  000CFCC4 ( 0BF0C4 )
   [ E3 93 05 EB ] --> [ 05 0D A0 E3 ]

4  000CFCD0 ( 0BF0D0 )
   [ E0 93 05 EB ] --> [ F0 00 A0 E3 ]

5  000DC624 ( 0CBA24 )
   [ 8B 61 05 EB ] --> [ 05 0D A0 E3 ]

6  000DC634 ( 0CBA34 )
   [ 87 61 05 EB ] --> [ F0 00 A0 E3 ]

7  000DD75C ( 0CCB5C )
   [ 3D 5D 05 EB ] --> [ 05 0D A0 E3 ]

8  000DD76C ( 0CCB6C )
   [ 39 5D 05 EB ] --> [ F0 00 A0 E3 ]



화면 크기 변동 방지
9    00028F10  ( 018310 )  <
GPS정보 dialog 제대로 보이게 패치: MoveWindow 무효화>
   [ 47 2F 08 EB ] --> [ 00 00 80 E3 ]

10  0004C520  ( 03B920 )  <GPS 인식 직후 화면 제대로 보이게 패치>
   [ C3 A1 07 EB ] --> [ 00 00 80 E3 ]

[안내]
아래 제공되는 파일은 맵피 PDA 라이센스를 소유 하고 있으나 M&Soft 에서 이해할 수 없는 정책을 주장하여 M480, M4800 에서는 사용 할 수 없는 호환성을 해결하고자 개인적으로 만든 파일 입니다.
관련 법을 준수하시기 바랍니다.
컴퓨터프로그램 보호법 - 역분석 관련 법

제12조의2 (프로그램코드역분석)
①정당한 권원에 의하여 프로그램을 사용하는 자 또는 그의 허락을 받은 자가 호환에 필요한 정보를 쉽게 얻을 수 없고 그 획득이 불가피한 경우 당해 프로그램의 호환에 필요한 부분에 한하여 프로그램저작권자의 허락을 받지 아니하고 프로그램코드역분석을 할 수 있다.
②제1항의 규정에 의한 프로그램코드역분석을 통하여 얻은 정보는 다음 각호의 1에 해당하는 경우에는 이를 사용할 수 없다.
   1. 호환 목적외의 다른 목적을 위하여 이용하거나 제3자에게 제공하는 경우
   2. 프로그램코드역분석의 대상이 되는 프로그램과 표현이 실질적으로 유사한 프로그램을 개발·제작·판매하거나 기타의 프로그램저작권을 침해하는 행위에 이용하는 경우
      [본조신설 2001·1·16][[시행일 2001·7·17]]

이 파일을 이용해서 맵피를 사용 하기 위해서는
반드시 맵피 PDA 라이센스를 소유 하고 있으며, 또한 Mappy 전체 이미지를 정상적으로 download하신 분 만이 사용이 가능 합니다.

여기서 안내드리는 내용은 직접 patch를 할 수 있는 정보와 patch용 요약자료만 공유 합니다.
패치 프로그램과 Mappy라이센스, Mappy 인스톨 파일은 개인 소유의 것을 이용하셔야 합니다.


Patch 파일은 Free software인 VPatch 를 사용 했습니다. Google 등의 검색엔진을 이용하셔서 개인이 구하셔야 합니다.
이 프로그래과 제공하는 data를 이용하여 발생하는 법적인 문제에 대해서는 사용하는 당사자들의 책임임을 밝혀 둡니다.

아래 파일에 대해서는 그 어떠한 질문에 대해서도 답변을 드리지 않습니다.

패치요약 파일:



위 파일은 VPatch 라는 프로그램을 설치하고난 뒤에 전용 프로그램을 이용하시면 됩니다.

*당연히 PDA용 Mappy 5.7.1 버전 원본이 있어야 합니다.
*Patch 실행 법은 VPatch 설명서를 참고 하세요.
VPATCHPROMPT.EXE Mappy5.7.1_090806_M480x_320x240.pat (sourcefile) (outputfile)

혹은 아래 실행 파일을 이용하셔도 됩니다.

> Mappy5.7.1_090806_M480x_320x240 (Original) (Output)

이전에도 그랬는데, 5.7 버전에 벌레가 있어, 사용자 몰래 업데이트 했더군요. 물론 홈페이지를 보니 공지가 올라와 있습니다.
하지만 정품등록 가입자에게 메일한통 날려주지 안는 불친절을 이번에도 보여 주셨군요!
예전에 한번 엄청 데였는데 - 아직도 그 불친절은 여건 합니다.

6월 4일 공지에 나온 수정 버전에 맞도록 패치 data를 새로이 올려 드립니다.
내용은 같습니다.



상세 분석은 이전글을 참고 해 주세요





"차례" "Code address" "파일offset"
     [ 원본 hex code ]  --> [ 수정 hex code ]

320x240 강제 설정 패치 부분

1  0x0004AB58 ( 039F58 )
   [ D1 A0 07 EB ] --> [ 05 0D A0 E3 ]

2  0x0004AB68 ( 039F68 )
   [ CD A0 07 EB ] --> [ F0 00 A0 E3 ]

3  0x000D9D14 ( 0C9114 )
   [ 62 64 05 EB ] --> [ 05 0D A0 E3 ]

4  0x000D9D24 ( 0C9124 )
   [ 5E 64 05 EB ] --> [ F0 00 A0 E3 ]

5  0x000DAE48 ( 0CA248 )
   [ 15 60 05 EB ] --> [ 05 0D A0 E3 ]

6  0x000DAE58  ( 0CA258 )
   [ 11 60 05 EB ] --> [ F0 00 A0 E3 ]


화면 크기 변동 방지
7  0x00028E44  ( 018244 )  <
GPS정보 dialog 제대로 보이게 패치>
   [ 0D 28 08 EB ] --> [ 00 00 80 E3 ]

8  0x0004C3F8  ( 03B7F8 )  <GPS 인식 직후 화면 제대로 보이게 패치>
   [ A0 9A 07 EB ] --> [ 00 00 80 E3 ]

[안내]
아래 제공되는 파일은 맵피 PDA 라이센스를 소유 하고 있으나 M&Soft 에서 이해할 수 없는 정책을 주장하여 M480, M4800 에서는 사용 할 수 없는 호환성을 해결하고자 개인적으로 만든 파일 입니다.
관련 법을 준수하시기 바랍니다.
컴퓨터프로그램 보호법 - 역분석 관련 법

제12조의2 (프로그램코드역분석)
①정당한 권원에 의하여 프로그램을 사용하는 자 또는 그의 허락을 받은 자가 호환에 필요한 정보를 쉽게 얻을 수 없고 그 획득이 불가피한 경우 당해 프로그램의 호환에 필요한 부분에 한하여 프로그램저작권자의 허락을 받지 아니하고 프로그램코드역분석을 할 수 있다.
②제1항의 규정에 의한 프로그램코드역분석을 통하여 얻은 정보는 다음 각호의 1에 해당하는 경우에는 이를 사용할 수 없다.
   1. 호환 목적외의 다른 목적을 위하여 이용하거나 제3자에게 제공하는 경우
   2. 프로그램코드역분석의 대상이 되는 프로그램과 표현이 실질적으로 유사한 프로그램을 개발·제작·판매하거나 기타의 프로그램저작권을 침해하는 행위에 이용하는 경우
      [본조신설 2001·1·16][[시행일 2001·7·17]]

이 파일을 이용해서 맵피를 사용 하기 위해서는
반드시 맵피 PDA 라이센스를 소유 하고 있으며, 또한 Mappy 전체 이미지를 정상적으로 download하신 분 만이 사용이 가능 합니다.

여기서 안내드리는 내용은 직접 patch를 할 수 있는 정보와 patch용 요약자료만 공유 합니다.
패치 프로그램과 Mappy라이센스, Mappy 인스톨 파일은 개인 소유의 것을 이용하셔야 합니다.


Patch 파일은 Free software인 VPatch 를 사용 했습니다. Google 등의 검색엔진을 이용하셔서 개인이 구하셔야 합니다.
이 프로그래과 제공하는 data를 이용하여 발생하는 법적인 문제에 대해서는 사용하는 당사자들의 책임임을 밝혀 둡니다.

아래 파일에 대해서는 그 어떠한 질문에 대해서도 답변을 드리지 않습니다.

패치요약 파일:



위 파일은 VPatch 라는 프로그램을 설치하고난 뒤에 전용 프로그램을 이용하시면 됩니다.

*당연히 PDA용 Mappy 5.7.0 patch 버전 원본이 있어야 합니다.
*Patch 실행 법은 VPatch 설명서를 참고 하세요.
 
VPATCHPROMPT.EXE (patchfile) (sourcefile) (outputfile)

5월 말에 새롭게 버전업 한
Mappy 5.7.0 에 대해서 320x320 모델에 사용가능하게 - 강제로 320x240 설정하는 법을 간단하게 정리합니다.

방법은 이미 3개의 게시물로 상세하게 소개 드렸던 방법과 100% 동일 합니다.
다만 해당 code위 위치(주소)만이 변경되었습니다.


상세 분석은 이전글을 참고 해 주세요




"차례" "Code address" "파일offset"
     [ 원본 hex code ]  --> [ 수정 hex code ]

320x240 강제 설정 패치 부분

1  0x00038684 (039F58)
   [ 56 A0 07 EB ] --> [ 05 0D A0 E3 ]

2  0x00038694 (039F68 )
   [ 52 A0 07 EB ] --> [ F0 00 A0 E3 ]

3  0x000D9D14 (0C9114)
   [ E7 63 05 EB ] --> [ 05 0D A0 E3 ]

4  0x000C97F0 (0C9124)
   [ E3 63 05 EB ] --> [ F0 00 A0 E3 ]

5  0x000DAE48 (0CA248)
   [ 9A 5F 05 EB ] --> [ 05 0D A0 E3 ]

6  0x000CA8D4  (0CA258)
   [ 96 5F 05 EB ] --> [ F0 00 A0 E3 ]


화면 크기 변동 방지
7  0x00028E44  (018244) <
GPS정보 dialog 제대로 보이게 패치>
   [ 92 27 08 EB ] --> [ 00 00 80 E3 ]

8  0x0004C3F8  (03B7F8)  <GPS 인식 직후 화면 제대로 보이게 패치>
   [ 25 9A 07 EB ] --> [ 00 00 80 E3 ]

[안내]
아래 제공되는 파일은 맵피 PDA 라이센스를 소유 하고 있으나 M&Soft 에서 이해할 수 없는 정책을 주장하여 M480, M4800 에서는 사용 할 수 없는 호환성을 해결하고자 개인적으로 만든 파일 입니다.
관련 법을 준수하시기 바랍니다.
컴퓨터프로그램 보호법 - 역분석 관련 법

제12조의2 (프로그램코드역분석)
①정당한 권원에 의하여 프로그램을 사용하는 자 또는 그의 허락을 받은 자가 호환에 필요한 정보를 쉽게 얻을 수 없고 그 획득이 불가피한 경우 당해 프로그램의 호환에 필요한 부분에 한하여 프로그램저작권자의 허락을 받지 아니하고 프로그램코드역분석을 할 수 있다.
②제1항의 규정에 의한 프로그램코드역분석을 통하여 얻은 정보는 다음 각호의 1에 해당하는 경우에는 이를 사용할 수 없다.
   1. 호환 목적외의 다른 목적을 위하여 이용하거나 제3자에게 제공하는 경우
   2. 프로그램코드역분석의 대상이 되는 프로그램과 표현이 실질적으로 유사한 프로그램을 개발·제작·판매하거나 기타의 프로그램저작권을 침해하는 행위에 이용하는 경우
      [본조신설 2001·1·16][[시행일 2001·7·17]]

이 파일을 이용해서 맵피를 사용 하기 위해서는
반드시 맵피 PDA 라이센스를 소유 하고 있으며, 또한 Mappy 전체 이미지를 정상적으로 download하신 분 만이 사용이 가능 합니다.

여기서 안내드리는 내용은 직접 patch를 할 수 있는 정보와 patch용 요약자료만 공유 합니다.
패치 프로그램과 Mappy라이센스, Mappy 인스톨 파일은 개인 소유의 것을 이용하셔야 합니다.


Patch 파일은 Free software인 VPatch 를 사용 했습니다. Google 등의 검색엔진을 이용하셔서 개인이 구하셔야 합니다.
이 프로그래과 제공하는 data를 이용하여 발생하는 법적인 문제에 대해서는 사용하는 당사자들의 책임임을 밝혀 둡니다.

아래 파일에 대해서는 그 어떠한 질문에 대해서도 답변을 드리지 않습니다.

패치요약 파일:



위 파일은 VPatch 라는 프로그램을 설치하고난 뒤에 전용 프로그램을 이용하시면 됩니다.
*당연히 PDA용 Mappy 5.7.0 버전 원본이 있어야 합니다.
*Patch 실행 법은 VPatch 설명서를 참고 하세요.
 
VPATCHPROMPT.EXE (patchfile) (sourcefile) (outputfile)


+ Recent posts