¾÷µ¥ÀÌÆ® ¹æ¹ýÀ» ÀûÀº °Ô½Ã±ÛÀÌ ¿ë·® ÃÊ°ú¶ó¼ ¾Æ·¡ ºÎºÐÀº º°µµ °Ô½Ã±Û·Î ÀÛ¼ºÇÕ´Ï´Ù.
--------------------------------------------------------------------------------------------------
¿©±â¼ºÎÅʹ Ȥ½Ã³ª ÇØ´ç °ªÀ» ãÀº °úÁ¤¿¡ °ü½É ÀÖÀ» ºÐµéÀ» À§ÇÑ ³»¿ëÀÔ´Ï´Ù. ¾÷µ¥ÀÌÆ®¸¸ ÇÏ½Ç °Å¸é ¾È º¸¼Åµµ µÅ¿ä!
¸ÕÀú ¹«ÇѺÎÆÃÀÌ °É·ÈÀ» ¶§ÀÇ logcat Áß ´«¿¡ ¶è ºÎºÐÀÌ ÀÖ¾ú½À´Ï´Ù.
10-31 22:03:45.774 1034 1034 I bootstat: Canonical boot reason: shutdown,region_error
region_error¿¡ ÀÇÇØ shutdownÀÌ µÇ¾ú´Ù°í Çؼ®ÇÒ ¼ö ÀÖ´Â »óȲÀ̾ú½À´Ï´Ù.
Ȥ½Ã³ª Çؼ region_error¸¦ bootstat ½ÇÇàÆÄÀÏÀÌ ±¸±Û ¼Ò½º¿¡µµ °¡Áö°í ÀÖ³ª È®ÀÎÀ» Çغ¸¾Ò´Âµ¥ ¾ø¾ú±â ¶§¹®¿¡ ·¹³ë¹ö°¡ ³ÖÀº°Ô ¸Â±¸³ª È®½ÅÀ» Çß¾ú³×¿ä.
±×·¡¼ region °ü·ÃÇؼ Ȥ½Ã ´Ù¸¥ ·Î±×°¡ ÀÖ³ª ½Í¾î¼ »ìÆ캻 °á°ú
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[0] = 26 ,&
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[1] = ca ,ʍ
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[2] = 1a ,
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[3] = 01 ,
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[4] = 00 ,
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[5] = 00 ,
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[6] = 00 ,
10-31 22:03:20.792 1503 1513 D CheckRegion: nv flag:
10-31 22:03:20.792 1503 1513 E CheckRegion: checkRegion: region not match.
À§¿Í °°ÀÌ ÀϺΠ´«¿¡ ¶ç´Â ·Î±×°¡ ÀÖ¾ú½À´Ï´Ù. ƯÈ÷ region not match°¡ ´«¿¡ È® µé¾î¿Ô½À´Ï´Ù.
Çؼ 0923 QFIL¿ë ·ÒÆÄÀÏÀÇ super_2.img ÆÄÀÏ¿¡¼ system ÆÄƼ¼ÇÀ» ÃßÃâÇÏ¿© ÇØ´ç ·Î±×¸¦ ¹ß»ý½ÃÅ°´Â ÆÄÀÏÀ» ã¾Æ³Â°í, ±×°Ô libcheckregion.so¿´½À´Ï´Ù.
(ÀÌ ÆÄÀÏÀº 5¿ù ±Û·Î¹ú·Ò¿¡ ¾ø°í ºÎÆà logcat¿¡µµ ÇØ´çÇÏ´Â ·Î±×°¡ ¹ß»ýÇÏÁö ¾Ê¾Ò½À´Ï´Ù.)
À§ ¶óÀ̺귯¸®°¡ ÇÏ´Â ¿ªÇÒÀ» ¾Ë¾Æº¸±â À§ÇØ ÇØ´ç ÆÄÀÏÀ» µðÄÄÆÄÀÏÀ» Çغ¸´Ï ´ÙÀ½°ú °°Àº ºÎºÐÀÌ º¸¿´½À´Ï´Ù. (Ghidra µðÄÄÆÄÀÏ·¯ »ç¿ë)
ÀÌÂÊÀº ro.boot.target.region property °ª¿¡ µû¶ó RegionÀ» È®ÀÎÇÏ´Â ºÎºÐÀ̾ú½À´Ï´Ù.
Äڵ尡 º¸´Â °ªÀº unknown(75 6E 6B 6E 6F 77 6E), PRC(50 52 43), ROW(52 4F 57), RESET(52 45 53 45 54) µîÀ̾ú½À´Ï´Ù.
¿©±â¼ ƯÈ÷, PRC¸é bVar8¿¡ 1ÀÇ °ªÀ», ROW¸é 2ÀÇ °ªÀ» ³Ö´Â ºÎºÐ¿¡ ÁýÁßÇÏ¿´½À´Ï´Ù.
¿Ö³ÄÇϸé 5¿ù ±Û·Î¹ú ·Ò¿¡¼ adb¸¦ ÅëÇØ getpropÀ» ¼öÇàÇغôõ´Ï
[ro.boot.name]: [LenovoTB-J606F_PRC]
[ro.boot.target.region]: [ROW]
À§¿Í °°ÀÌ PRC¿Í ROW°¡ °øÁ¸ÇÏ´Â °É ºÃ¾ú±â ¶§¹®ÀÔ´Ï´Ù. °Ë»öÇغ¸´Ï PRC°¡ Áß±¹, ROW°¡ Áß±¹ ¿Ü ±¹°¡¸¦ ÀǹÌÇÏ´õ±º¿ä.
±×¸®°í ÃÖÁ¾ÀûÀ¸·Î local_2ec¿Í local_250 °ªÀ» ºñ±³ÇÏ¿© ´Ù¸£¸é region not match¸¦ ·Î±×·Î Ãâ·ÂÇÏ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.
À̶§ local_2ec¿¡ ÀúÀåµÈ °ªÀº PRCÀÏ °æ¿ì 1, ROWÀÏ °æ¿ì 2ÀÎ »óȲÀ̾ú°í local_250°ªÀº vendor.lenovo.hardware.factory@1.0.so¿¡¼ °¡Á®¿À´Â ½ÄÀ̾ú½À´Ï´Ù.
±×¸®°í vendor.lenovo.hardware.factory@1.0.so ¶óÀ̺귯¸®¸¦ º¸ÀÚ¸¶ÀÚ µü »ý°¢ÀÌ ³°Ô À§ÀÇ
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[0] = 26 ,&
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[1] = ca ,ʍ
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[2] = 1a ,
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[3] = 01 ,
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[4] = 00 ,
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[5] = 00 ,
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[6] = 00 ,
ÀÌ ·Î±×¿´½À´Ï´Ù. ¾Æ¸¶ QCNÀ» ÀÐ°Ô ÇØÁÖ´Â ¶óÀ̺귯¸®ÀÏ °Å¶ó ¿¹»óÀÌ µÇ´Â ºÎºÐÀ̾ú½À´Ï´Ù.
È®½ÅÀ» °¡Áö±â À§ÇØ checkRegion ÇÔ¼ö¸¦ system ÆÄƼ¼Ç¿¡¼ °Ë»öÀ» Çغ¸´Ï libbootanimation.so°¡ ÇØ´ç ÇÔ¼ö¸¦ ½ÇÇàÇÏ´Â °É È®ÀÎÇÒ ¼ö ÀÖ¾ú½À´Ï´Ù.
º¸½Ã´Ù½ÃÇÇ service.bootanim.exit°¡ 0ÀÌ ¾Æ´Ï¸é, Áï ºÎÆ®¾Ö´Ï¸ÞÀ̼ÇÀÌ ³¡³ª¸é Region Check ÄÚµå ¿µ¿ªÀ¸·Î µé¾î¿À´Â °ÍÀ» º¼ ¼ö ÀÖ¾ú½À´Ï´Ù.
checkRegion¿¡ ½ÇÆÐÇÏ°í Region Error ±×¸²ÆÄÀÏÀ» ¾ÆÁ÷ º¸¿©ÁÖÁö ¾Ê°í ÀÖ´Ù¸é º¸¿©ÁÖ°í 10ÃÊ(10000000us) µÚ¿¡ rebootÀ» ³¯¸®´Â °É º¼ ¼ö Àֳ׿ä.
¿©±â±îÁö »ìÆ캻 ÀÌÈÄ¿¡ óÀ½¿¡´Â À§ ·Î±×ÀÇ 26 ca 1a 01 °ªÀÌ ¾îµò°¡¿¡ ÀúÀåµÇ¾î ÀÖÀ» °Å¶ó ¿¹»óÇؼ º°ÁþÀ» ´Ù Çغó׿ä.
QFIL·Î ¸ðµç ÆÄƼ¼ÇÀ» ´Ù ReadÇؼ È®ÀÎÇغ¸±âµµ ÇÏ°í, ¹é¾÷ÇÑ QCNÀ» ¿½ÉÈ÷ Åо±âµµ Çߴµ¥ °¨À» ¸ø Àâ¾Ò¾ú½À´Ï´Ù.
±×·¯´Ù°¡ Áß±¹ ±¹°¡ÄÚµå·Î ÀúÀåÇÑ QCN°ú Çѱ¹ ±¹°¡ÄÚµå·Î º¯°æ ÈÄ ÀúÀåÇÑ QCNÀ» ºñ±³Çغôµ¥ ¿©±â¼
ÀÌ°É ¹ß°ßÇÏ°í ¸Ó¸®¸¦ Ź ÃƳ׿ä. ¹Ù·Î CNXX(43 4E 58 58)¿Í KRXX(4B 52 58 58)À̾ú½À´Ï´Ù.
±¹°¡ÄÚµå º¯°æÇÒ ¶§ Àǹ®ÀÇ X X¼³Á¤µµ À§ÀÇ NV item¿¡ ÀúÀåµÇ´Â °ªÀ̾ú´ø °Å¿´½À´Ï´Ù. ([ro.boot.countrycode]: [CNXX])
½ÉÁö¾î Á¦°¡ °¡¸° ºÎºÐÀº ÅÂºí¸´ÀÇ ½Ã¸®¾ó ³Ñ¹ö¿Í lenovo psn(??)À» Æ÷ÇÔÇÏ°í ÀÖ¾ú½À´Ï´Ù.
ÀÌ ½ÃÁ¡¿¡¼ »ç½Ç À̸§ ¶§¹®¿¡ ÀǽÉÇÏ°í ÀÖ¾ú´ø
ÀÌ NV item¿¡ ´ëÇÑ È®½ÅÀ» ÇÏ°Ô µË´Ï´Ù. À§ ±¹°¡ÄÚµåÀÇ °æ¿ì FACTORY_DATA, ÀǽÉÇÏ´ø itemÀº OEM_ITEMÀ̴ϱî¿ä.
±×¸®°í ´Ù½Ã À§ ·Î±×¸¦ º¸´Â ¼ø°£ ¶Ç ±ú´ÞÀº ºÎºÐÀÌ ÀÖ½À´Ï´Ù.
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[0] = 26 ,&
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[1] = ca ,ʍ
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[2] = 1a ,
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[3] = 01 ,
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[4] = 00 ,
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[5] = 00 ,
10-31 22:03:20.791 836 836 I NvProxy-TAG-JNI: android_native_read_FactoryNV tmp[6] = 00 ,
6858 = 0x1ACA À̾ú±â ¶§¹®ÀÔ´Ï´Ù. 0x26Àº ã¾Æº¸´Ï NV item Read ¸í·É¿¡ ÇØ´çÇÏ´Â ºÎºÐÀ̾ú½À´Ï´Ù.
µû¶ó¼ À§ ·Î±×´Â '1ACA ¹øÁöÀÇ °ªÀ» Read(0x26)Çß´õ´Ï °ªÀÌ 1ÀÌ¿¡¿ä' ¶ó°í ¾Ë·ÁÁØ °Å¿´ÁÒ.
À̸¦ ¹ÙÅÁÀ¸·Î QFILÀ» ÅëÇØ QCNÀ» ¹é¾÷ÇÏ°í ÇØ´ç °ªÀ» 1¿¡¼ 2·Î ¼öÁ¤ÇÑ µÚ º¹¿øÀ» ÇÏ¿´°í ±× °á°ú´Â ¼º°øÀ̾ú½À´Ï´Ù.
»ç½Ç ±¹°¡ÄÚµå º¯°æ ¸Þ´º°¡ º°µµ·Î ¾ø¾ú´Ù¸é Àú 2497 ÁÖ¼ÒÀÇ ±¹°¡Äڵ嵵 ¾Æ¸¶ Á÷Á¢ ¼öÁ¤ÇØÁá¾î¾ß ÇÏÁö ¾Ê¾ÒÀ»±î ½Í³×¿ä.
¸¶Áö¸·À¸·Î ####6030#ÀÌ Á¤¸»·Î ÇØ´ç NV itemÀ» ¹Ù²Ù´Â°Ô ¸Â´ÂÁö È®ÀÎÀ» Çϱâ À§ÇØ system ÆÄƼ¼ÇÀ» ¶Ç µÚÁ®º» °á°ú
(JADX·Î ¿¾îº» system/app/EngineeringCode/EngineerCode.apk)
À§¿Í °°ÀÌ setCountryCode°¡ ¼öÇàµÉ ¶§ ¿ª½Ã³ª ·¹³ë¹ö ¶óÀ̺귯¸®¸¦ °ÅÄ¡´Â °É È®ÀÎÇÒ ¼ö ÀÖ¾ú½À´Ï´Ù.
±×¸®°í À§ÀÇ ÇÔ¼ö°¡ writeCountryCode ÇÔ¼ö¿¡ ÀÇÇØ ºÒ¸° ÈÄ ¾Æ·¡¿Í °°ÀÌ °Á¦ °øÀåÃʱâÈ ¸í·ÉÀ» ³¯¸°´Ù´Â °É ÅëÇØ È®½ÅÀ» ¾ò¾ú³×¿ä.
´ýÀ¸·Î ANDROID 10 ¹Ú½º ¹öÀü P11ÀÌ ¹®Á¦ ¾øÀÌ ¾÷µ¥ÀÌÆ®°¡ °¡´ÉÇÏ´Ù°í »ý°¢µÇ´Â »ó¼¼ÀÌÀ¯¸¦ º¸¸é ´ÙÀ½°ú °°½À´Ï´Ù.
óÀ½¿¡ NV°ªÀÌ -0x67ÀÎÁö¸¦ º¸´Âµ¥ unsigned·Î´Â 0x99¿¡ ÇØ´çÇÕ´Ï´Ù. ÀÌ°Ô RESET °ªÀÎ °Í °°³×¿ä.
´ÙÀ½À¸·Î 0x00ÀÌ¸é ¿ª½Ã ¸¶Áö¸· ÄÚµå·Î ÁøÇàÀÌ µÇ°Ú³×¿ä.
µû¶ó¼ NV¿¡ 0x00°ªÀ̳ª 0x99°ªÀÌ µé¾îÀÖÀ¸¸é ¸¶Áö¸·ÀÇ ·Î±×ó·³ °ªÀ» ÇöÀç ·Ò¿¡ ¸ÂÃç¼ ¾²Áö ¾ÊÀ»±î ½Í½À´Ï´Ù.
-> 0520 ±Û·Î¹ú·Ò¿¡¼ °ªÀ» 0x99À̳ª 0x00À¸·Î ¾²°í 0805 ±Û·Î¹ú·ÒÀ¸·Î QFIL µ¹·È´õ´Ï Àú °ªÀÌ 0x2·Î ¹Ù²ï °É È®ÀÎÇß½À´Ï´Ù. °¡¼³ÀÌ ¸Â¾Ò³×¿ä!
0x00µµ µÇ±ä ÇÏ´Ï±î ¾÷üµéÀº NV item ÀÌ°ÍÀú°Í ¹Ð¾îº¸´Ù°¡ ¹ß°ßÇÑ °Í °°±âµµ Çϳ׿ä. ±×·¯´Ù ºíÅõ ÁÖ¼Ò³ª ½Ã¸®¾ó ³¯·Á¸Ô´Â ±×·± ½Ã³ª¸®¿À°¡ ³ª¿À³×¿ä.
11-03 11:47:52.058 1531 1556 D CheckRegion: nv flag: 0x99
11-03 11:47:53.309 1531 1556 D CheckRegion: nvRegion is empty or reset, set nv to ROW, result: 1
°¨»çÇÕ´Ï´Ù! |