වැරදි උපකල්පනය වන්නේ VpnService යෙදුමක් පද්ධති ස්විචයක් හරවා, ඉන් පසු දුරකථනය ආරක්ෂිත බවයි. සැබවින්ම සිදුවන්නේ වඩාත් පටු දෙයකි: යෙදුම අනුමැතිය ඉල්ලයි, අතුරුමුහුණතක් ගොඩනඟයි, ගොනු විස්තරකයක් හරහා පැකට් කියවයි සහ ලියයි, නතර වූ විට අතුරුමුහුණත ආපසු දෙයි. එකවර ජීවතුන් අතර තිබිය හැක්කේ එවැනි එක් උමං මාර්ගයක් පමණි, සහ පද්ධතියට නොඇසී එය ඉවත් කළ හැක. මිනිසුන් ප්‍රොටෝකෝලයට දොස් පවරන ව්‍යාකූල හැසිරීමෙන් වැඩි කොටසක් එම හිමිකම් ආකෘතියෙන් පැමිණේ.

සෑම ජීවන චක්‍ර සංක්‍රමණයක්ම මායිම් අවස්ථාවක් ලෙස නොව, නිර්මාණයේ කොටසක් ලෙස සලකන්න.

මිථ්‍යාව: යෙදුම දුරකථනයේ VPN සක්‍රීය කරයි

VpnService.prepare() සමඟ ප්‍රවාහය ආරම්භ වේ, එය පරිශීලකයා පිළිගත යුතු Intent එකක් ආපසු දෙයි, සහ establish() සමඟ ඉදිරියට යයි, එය පසුවද යෙදුම පාලනය නොකරන හේතූන් නිසා අසාර්ථක විය හැක. දෙවන උමං මාර්ගයක් ස්ථාපිත කිරීම පළමු අතුරුමුහුණත අක්‍රීය කර පද්ධති දැනුම්දීම වෙනුවට යෙදයි. එම අනුපිළිවෙලේ කිසිම තැනක යෙදුමට මුළු උපාංගයේ ස්විචයක් නොමැත; එයට ලබා දුන් විස්තරකය සහ එය මතට පැමිණෙන පැකට් ඇත. ස්ථිර දැනුම්දීම පවා යෙදුමේ නිර්මාණයේ නොව පද්ධතියේ ය.

අතුරුමුහුණත උදුරා ගැනීමක් නොව දීමක් බැවින්, වෙනත් සේවාදායකයෙකුට ඕනෑම වේලාවක ස්ථානය ගත හැක. යෙදුම එය දන්නේ ප්‍රතිලාභ අගයකින් නොව ආපසු ඇමතුමකින් ය.

යෙදුම බලහත්කාරයෙන් නතර කිරීම දැනුම්දීම් පැනලයේ දිස්වන්නේද එම හේතුව නිසාය: පද්ධතිය තමන් දුන් දේ වාර්තා කරයි, යෙදුම පෙන්වීමට තෝරාගත් දේ නොවේ.

මිථ්‍යාව: අනුමැතිය ලබා දෙන්නේ එක් වරක් පමණි

පද්ධතිය උමං මාර්ගය වෙනත් සේවාදායකයෙකුට භාර දෙන විට, මූලික පන්තිය onBind() වෙතින් ආපසු දෙන binder මත අවලංගු කිරීමේ ගනුදෙනුවක් යවයි. එම binder තමන්ගෙන් ප්‍රතිස්ථාපනය කරන යෙදුම අවලංගු කිරීමේ ගනුදෙනුව තමන්ම ඉදිරියට යැවිය යුතුය, එසේ නොවුණහොත් VpnService.onRevoke() කිසිදා සක්‍රීය නොවන අතර සේවාව තවදුරටත් නොපවතින විස්තරකයකට ලියමින් සිටියි. පරිශීලකයාටද අනුමැතිය ඉවත් කළ හැක, සහ පද්ධතියට නැවත ආරම්භ කිරීමේදී හෝ සැමවිටම-ක්‍රියාත්මක නැවත සම්බන්ධ වීමේදී සේවාව නතර කළ හැක.

මෙය හැසිරවීම ලොග් පේළියක් නොවන, නිශ්චිත කාර්යයකි: විස්තරකය කියවීම නවත්වන්න, එය වසන්න, සම්බන්ධිත ධජය මකන්න සහ පරිශීලකයා සිටින තත්ත්වය පවසන්න. ඉන්පසු යෙදුම නැවත ස්ථාපිත කළ යුතුද, නැවත ඇසිය යුතුද නැත්නම් රැඳී සිටිය යුතුද යන්න තීරණය කරන්න, මන්ද සැමවිටම-ක්‍රියාත්මක වින්‍යාසයේදී පද්ධතියට සේවාව තමන්ම ආපසු ගෙන ඒමට හැක.

අවලංගු කිරීම තත්ත්වයක් ලෙස නොව ව්‍යතිරේකයක් ලෙස සලකන යෙදුමක්, තමන් ලියන සෑම පැකට්ටුවක්ම ඉවත දමද්දීත් සම්බන්ධිත බව වාර්තා කරනු ඇත, එය පෞද්ගලිකත්ව මෙවලමකට හැකි නරකම අසාර්ථකත්ව ආකාරයයි.

මිථ්‍යාව: අතුරුමුහුණත ඔබ වෙනුවෙන් රථවාහන පෙරා දෙයි

පැමිණෙන්නේ අමු IP ය. ඇල්ලීම හෝ පෙරීම යනු IP, TCP, UDP සහ IPv6 ශීර්ෂක විශ්ලේෂණය කිරීම, ප්‍රවාහ නිරීක්ෂණය කිරීම සහ පිළිතුරු විස්තරකයට ආපසු ලිවීමයි, එය ඇල්ලීම් යෙදුමක් පද්ධති පහසුකමක් නොව කුඩා ජාල ගොඩගැස්මක් බවට පත් කරයි. protect() පවතින්නේ යෙදුමේම ප්‍රවාහන සොකට් එක තමන්ව ඇල්ලීම වෙනුවට තම උමං මාර්ගය මගහැර යාමට ය, එය උමං මාර්ගය ඉහළ නැංවීමෙන් පසු සාදන සෑම සොකට් එකකම පරීක්ෂා කිරීමට වටිනා බූලීය අගයක් ආපසු දෙයි.

ගොඩනඟන්නාගේ අවසර ලත් සහ තහනම් යෙදුම් ලැයිස්තු කවුරුන්ගේ රථවාහන අතුරුමුහුණතට ඇතුළු වන්නේද යන්න තීරණය කරයි. ඒවා අතුරුමුහුණත වහන IP පැකට්වලින් ඔබ්බට ඇති පේලෝඩයට ප්‍රවේශය නොදෙයි, කිසිදු API එකක් වෙනත් සේවාදායකයෙකුගේ උමං මාර්ගය හෙළි නොකරයි හෝ පද්ධතියේ VPN පැතිකඩ ලැයිස්තුගත කරයි. ජාල හැකියාවන්ට ජාලයක් VPN ප්‍රවාහනයක් බව පැවසිය හැක, නමුත් උමං මාර්ගය කාගේද යන්න නොවේ.

එබැවින් වෙනත් යෙදුම් ගැන තත්ත්ව ප්‍රශ්නවලට පරස්පර පිළිතුරු ලැබේ: තොරතුරු ඔබගේ ක්‍රියාවලියට හෙළිදරව් කර නැත.

ජීවන චක්‍රය සැබවින්ම ඉල්ලා සිටින්නේ කුමක්ද

ඔබ පාලනය කරන තත්ත්ව නිරීක්ෂණය කරන්න: සූදානම්, ස්ථාපිත, අවලංගු, නතර කළ. නැවත සම්බන්ධ වීම බිඳ දැමීම සහ පසුව ස්ථාපිත කිරීම විය යුතුය, විස්තරකයට සහ ප්‍රවාහන සොකට් එකට එක් හිමිකරුවෙකු සමඟ, මන්ද ස්ථාපිත කිරීම සඳහා තරඟ කරන සංරචක දෙකක් ඇති එකම ඉඩ සඳහා සටන් කරනු ඇත. නවීන Android හි පසුබිම් ආරම්භ සීමා සහිතය, එබැවින් බූට් විකාශනය සහතිකයක් නොවේ; API මට්ටමට ඉඩ දෙන තැන එහි දැනුම්දීම සමඟ පෙරබිම් සේවාවක් භාවිත කරන්න.

අවසාන තත්ත්වය පමණක් නොව සංක්‍රමණය ලොග් කරන්න, සහ සෑම මාර්ගයක්ම පරීක්ෂා කළ හැකි තරම් කුඩාවට තත්ත්ව යන්ත්‍රය තබන්න. පරීක්ෂණයකදී ඔබට ළඟා විය නොහැකි තත්ත්වයක් යනු ලොගයක් නොමැතිව ක්ෂේත්‍රයේදී ඔබට හමුවන තත්ත්වයකි.

උපාංගයක ජීවන චක්‍රය පරීක්ෂා කරන්න

අනුකාරකවලට සම්බන්ධතාවය අසත්‍ය ලෙස සෑදිය හැක, නමුත් අනුමැතිය සහ අවලංගු කිරීමේ මාර්ගය විශ්වාසදායක ලෙස නොවේ, එබැවින් මේවා ස්ථානය සොරකම් කිරීමට දෙවන VPN සේවාදායකයක් ස්ථාපනය කළ සැබෑ උපාංගයක ධාවනය කරන්න.

adb shell dumpsys connectivity | grep -i -A3 vpn
adb shell dumpsys activity services | grep -i -A2 vpnservice
adb logcat -s VpnService:V AndroidRuntime:E
adb shell am force-stop com.example.vpnapp

උමං මාර්ගය අරඹන්න, දැනුම්දීම සහ අතුරුමුහුණත තහවුරු කරන්න, පසුව අනෙක් සේවාදායකය සම්බන්ධ කර අවලංගු කිරීමේ ආපසු ඇමතුම ක්‍රියා කරන්නේද තත්ත්වය ඉවත් වන්නේද යන්න බලන්න. යෙදුම බලහත්කාරයෙන් නතර කර, තවමත් ජීවමාන විස්තරකයක් වාර්තා කරන දෙයක් ඇත්දැයි පරීක්ෂා කරන්න.

සැමවිටම-ක්‍රියාත්මක නැවත ආරම්භයකින් පසු අනුපිළිවෙල නැවත කරන්න, මන්ද එම මාර්ගය පරිශීලකයා ආරම්භ කළ සම්බන්ධතාවයට වඩා වෙනස් ය. ඔබ සොයන්නේ හරිත නිරූපකයක් නොව, යෙදුම තවදුරටත් තමන්ට අයත් නොවන විස්තරකයක් භාවිත කිරීම නතර කළ බවට සාක්ෂියකි.

අදාළ ලිපි