程式碼混淆導致程式崩潰原因分析
程式碼混淆是一種專案加密的方法,混淆後的類和方法會重新命名成a.a.b.c的形式,從而防止反編譯破解程式碼。
如果程式碼中使用了反射或者呼叫了JNI等底層程式碼,程式碼混淆會導致程式崩潰,
例如使用JSONObject.toJavaObject()方法將json轉化為物件時,底層會利用反射機制完成轉化,混淆後的程式碼就無法完成反射,從而導致物件的轉換失敗,丟擲空指標異常。
錯誤程式碼
val pic = JSONObject.toJavaObject(json as JSONObject, PicInfo::class.java)
解決方案1:手動解析json
val pic = PicInfo() pic.setPicOutUrl((json as JSONObject).getString("picOutUrl")) pic.setPicUrl(json.getString("picUrl"))
解決方案2:對這個方法所牽扯到的類取消混淆
取消混淆的方法:
在proguard-rules.pro檔案中新增
-keep class 包名.** { *; }
相關推薦
程式碼混淆導致程式崩潰原因分析
程式碼混淆是一種專案加密的方法,混淆後的類和方法會重新命名成a.a.b.c的形式,從而防止反編譯破解程式碼。 如果程式碼中使用了反射或者呼叫了JNI等底層程式碼,程式碼混淆會導致程式崩潰, 例如使用JSONObject.toJavaObject()方法將json轉化為物件時
android程式碼混淆時,如何防止第三方jar包被混淆導致程式出錯
程式碼混淆是給其他人破解自己的程式帶來更多困難,但混淆不能影響我們程式的正常執行.最近在程式碼混淆時出現一個問題:就是第三方jar被混淆時出現程式錯誤,錯誤主要是說找不到相關的類. 這個問題也不奇怪,我們要使用的第三方jar包被混淆成我們程式不能認識的程式碼
上萬行程式碼級專案開發中快速定位導致程式崩潰的bug的方法
一個專案在開發除錯階段,已經有上萬行程式碼了,但是過程中往往會遇到讓人頭痛的bug,程式莫名其妙的奔潰了,bug在哪裡呢? [NSNull length]: unrecognized select
將NULL指標賦值給std::string變數導致程式崩潰
如題:如上圖,但是我們還會經常寫這樣的程式碼,例如我的flamingo中有程式碼如下(已經修正):位於queryresult.cpp中如果fields[i].name為NULL的話,程式將崩潰。備忘一下
android StrictMode設定導致程式崩潰
在andorid開發過程中有時候會用到StrictMode進行相關操作,可以用來幫助開發者發現程式碼中的一些不規範的問題,以達到提升應用響應能力的目的 StrictMode分為以下兩種策略:1
安卓從googlephoto上選擇雲端圖片導致程式崩潰的解決方案
當軟體選擇照片時,如果選擇的是使用googlephoto或google雲備份過,並在本地刪除過的圖片時,程式就會崩潰或圖片是空白 ,報錯原因: IllegalArgumentException:InvalidURI:content://com.google
ios 使用執行時規避陣列等越界導致程式崩潰
#import "NSMutableArray+TonyRuntime.h"#import <objc/runtime.h>@implementation NSMutableArray (TonyRuntime)+(void)load{staticdispatch_once_t onceToken
pthread_kill導致程式崩潰 Segmentation fault
pthread_t thread_id;printf("thread = %d\n",pthread_kill(thread_id,0));上述用法,在未對一個pthread_t執行pthread_create前呼叫pthread_kill,會出現Segmentation f
在Activity的onCreate方法中顯示PopupWindow導致異常的原因分析及解決方案
一、前言 在某些情況下,我們需要一進入Activity就顯示PopupWindow,比如常見的選擇介面。但由於PopupWindow是依附於Activity的,如果Activity沒有建立完成,Activity還沒完全顯示出來就顯示PopupWindow的話,
兩個會導致程式崩潰的注意點
某次設定網路引數的時候,我用setObject:forKey:設定,發現每次程式執行到網路請求部分就崩潰,當時以為是網路請求完的結果處理不當導致的。經過斷點發現每次執行到setObject:forKey:的時候就崩潰。於是發現自己平常使用setObject:forKey:和setValue:forK
Android5.1-s5p6818平臺程式碼混淆導致jar裡面的類不能讀取---classnotfound exception
貼上異常log: 12-30 11:37:02.997 2205-2205/com:push A/art: art/runtime/runtime.cc:289] Pending exception java.lang.ClassNotFoundException th
VS2005(vs2008,vs2010)使用map檔案查詢程式崩潰原因
一般程式崩潰可以通過debug,找到程式在那一行程式碼崩潰了,最近編一個多執行緒的程式,都不知道在那發生錯誤,多執行緒併發,又不好單行除錯,終於找到一個比較好的方法來找原因,通過生成map檔案,由於2005取消map檔案生成行號資訊(vc6.0下是可以生成行號資訊的,不知
WriteFile導致程式崩潰的問題
原文:http://www.cnblogs.com/chenkunyun/archive/2012/04/18/2454921.html 在win10上,用vs2010編譯的程式,有一個writefile,在win10上執行沒問題,到了win7上,不論32位 還是64位都
關於QT在開啟子視窗時程式崩潰的其中一個原因分析
其實這個問題當時是糾結了我很長的一段時間,這段時間裡面,我一直在網上面找相關的資料但是卻沒有有用的資訊。 但是在後面的一個機緣巧合之下,我通過函式執行順序來Debug,慢慢的發現問題出現在什麼地方了。現在來總結一下這個問題吧。 其實我現在的經驗覺得,對於QT裡面(由於QT是基於C++的),不
Android 微信支付 程式碼混淆後打包,導致不能支付的原因
程式碼混淆: -libraryjars libs/libammsdk.jar -keep class com.tencent.** { *;} 如果您的專案中也引用了dom4j.jar,那麼就新增上下
drools規則引擎中易混淆語法分析_循環觸發導致死循環分析
int calculate efault drools put 階段 ons not quest 整理了下最近在項目中使用drools出現的問題,幸好都在開發與測試階段解決了,未波及到prod。 首先看這樣兩條規則 /** * 規則1_set默認利率 */
使用ReadFile程式崩潰的原因
在使用這個函式的時候,很多人都不會特意的去看MSDN文件後面的Remarks解釋,所以可能有時候會出問題,而且不知道出在哪裡。 這個函式的其它引數就不詳細解釋了,就說說lpNumberOfBytesRead這個引數。 MSDN原文:When a read operation reac
Linux應用程式錯誤使用pthread_mutex_lock互斥鎖觸發SIG_ABRT訊號的原因分析
在進行程式開發過程中,錯誤使用了pthread_mutex_lock導致程式概率性的奔潰,奔潰時報如下錯誤: 問題分析: 本文分析在Linux應用程式中錯誤使用pthread_mutex鎖時會概率性觸發SIG_ABRT訊號而導致程式崩潰(庫列印輸出 :Assertion `mutex-
close掉一個失效的MySQL連線導致的程式崩潰
這在沒有連結池控制的應用中十分常見,而我正好在做和MySQL相關的開發工作,在一般的工具類應用中,並沒有使用連結池進行連線的管理,而是直接使用MySQL提供的C API進行操作。而這給我的程式帶來過很多麻煩 比如程式碼如下 int main() { MYSQL *conn
利用MapFile定位程式崩潰(報紅牌)時的程式碼位置
原文:http://www.codeproject.com/KB/debug/mapfile.aspx 1、生成MapFile Project—Setting—C+±—DebugInfo,選擇Line Numbers Only Project—Setting—Link—選擇Generat