কীভাবে একটি এপিকে ফাইলের বিপরীত প্রকৌশল এড়ানো যায়?


764

আমি অ্যান্ড্রয়েডের জন্য অর্থ প্রদানের প্রক্রিয়াকরণ অ্যাপ্লিকেশনটি বিকাশ করছি এবং আমি হ্যাকারকে APK ফাইল থেকে কোনও সংস্থান, সম্পদ বা উত্স কোড অ্যাক্সেস করা থেকে বিরত রাখতে চাই ।

যদি কেউ .apk এক্সটেনশানটিকে .zip এ পরিবর্তন করে তবে তারা এটিকে আনজিপ করতে এবং অ্যাপ্লিকেশনটির সমস্ত সংস্থান এবং সম্পদ সহজেই অ্যাক্সেস করতে এবং ডেক্স 2জার এবং একটি জাভা ডিকম্পিলার ব্যবহার করে তারা উত্স কোড অ্যাক্সেস করতে পারে। কোনও অ্যান্ড্রয়েড এপিএল ফাইলটি রিভার্স করা খুব সহজ - আরও তথ্যের জন্য স্ট্যাক ওভারফ্লো প্রশ্নটি একটি এপিএইচ ফাইল থেকে কোনও প্রকল্পে ইঞ্জিনিয়ারিং বিপরীত দেখুন ।

আমি অ্যান্ড্রয়েড এসডিকে সরবরাহিত প্রোগার্ড সরঞ্জামটি ব্যবহার করেছি। আমি যখন স্বাক্ষরিত কীস্টোর এবং প্রগার্ড ব্যবহার করে উত্পন্ন কোনও APK ফাইল প্রকৌশলীকে বিপরীত করি তখন আমি অবহিত কোড পাই।

তবে অ্যান্ড্রয়েড উপাদানগুলির নাম অপরিবর্তিত রয়েছে এবং অ্যাপটিতে ব্যবহৃত কী-মানগুলির মতো কিছু কোড অপরিবর্তিত রয়েছে। প্রিগগার্ড ডকুমেন্টেশন অনুসারে সরঞ্জামটি ম্যানিফেস্ট ফাইলটিতে উল্লিখিত উপাদানগুলি অবিরাম করতে পারে না।

এখন আমার প্রশ্নগুলি হ'ল:

  1. আমি কীভাবে কোনও অ্যান্ড্রয়েড APK এর বিপরীত প্রকৌশলকে পুরোপুরি রোধ করতে পারি ? এটা কি সম্ভব?
  2. হ্যাকাররা কোনওভাবেই APK ফাইল হ্যাক করতে না পারে সেজন্য আমি কীভাবে অ্যাপের সমস্ত সংস্থান, সম্পদ এবং উত্স কোড রক্ষা করতে পারি?
  3. হ্যাকিং আরও শক্ত বা এমনকি অসম্ভব করার উপায় আছে কি? আমার APK ফাইলটিতে উত্স কোডটি সুরক্ষিত করতে আমি আরও কী করতে পারি?

119
মনে হচ্ছে আপনার পেমেন্ট প্রসেসিং স্কিম ক্লায়েন্টের গোপনীয়তার গোপন ক্রিয়াকলাপের উপর নির্ভর করে যদি আপনি "অস্পষ্টতার দ্বারা সুরক্ষা" ব্যবহার করছেন।
পিটারজে

43
আপনি কি কোডের গুরুত্বপূর্ণ অংশগুলিকে সি / সি ++ এ লেখার বিষয়টি বিবেচনা করেছেন এবং সেগুলি একটি সংকলিত গ্রন্থাগার হিসাবে যুক্ত করেছেন? এগুলি সমাবেশ কোডে বিচ্ছিন্ন করা যেতে পারে, তবে বিধানসভা থেকে একটি বড় লাইব্রেরি বিপরীত প্রকৌশল অত্যন্ত সময়সীমাবদ্ধ is
লিও


60
যে কোনও ডিজিটাল সম্পদ তৈরির মৌলিক ইস্যুতে আপনাকে স্বাগতম। হ্যাকাররা মেশিনের নির্দেশের স্তরে নামতে পারে, সুতরাং কোনও কম্পিউটার যদি ফাইলটি পড়তে পারে তবে এটি হ্যাক করে খোলা / অনুলিপি করা যায়, কোনও পরিমাণ অবলম্বন বা ডিআরএম কোনও নির্ধারিত হ্যাকারকে পুরোপুরি বন্ধ করতে পারে। আপনার যদি সুরক্ষার প্রয়োজন হয় তবে নিশ্চিত হয়ে নিন যে ব্যক্তিগত কীগুলি কখনই উত্স নয়, এবং ডিজাইনের পর্যায়ে জানেন যে কেবল বিচ্ছিন্নতা (দূরবর্তী এবং / অথবা ডেডিকেটেড হার্ডওয়্যার) কখনও তাদের রক্ষা করতে পারে।
কিথ

16
নোট করুন যে আপনার প্রদানের প্রক্রিয়াকরণ অ্যাপ্লিকেশন কী করে তার উপর নির্ভর করে এমন নিয়মকানুন এবং আইনী নীতি হতে পারে যা আপনার অ্যাপ্লিকেশনটিকে প্রভাবিত করে এবং আপনাকে সম্ভবত কঠোর শাস্তির বহিঃপ্রকাশ করতে পারে: পিসিআই কমপ্লায়েন্স দেখুন, পিসিকম্পিউসিউইউইইউইইইউইন্ডি / pcifaqs.php#11 দিয়ে শুরু করুন ।
ব্লুপলিটেক

উত্তর:


371

 1. আমি কীভাবে কোনও অ্যান্ড্রয়েড APK এর বিপরীত ইঞ্জিনিয়ারিং এড়াতে পারি? এটা কি সম্ভব?

আফাইক, বিপরীত প্রকৌশল সম্পূর্ণরূপে এড়াতে কোনও কৌশল নেই।

এবং খুব ভালভাবেই ইনাজারুক বলেছিলেন: আপনি আপনার কোডটিতে যা কিছু করুন না কেন, একজন সম্ভাব্য আক্রমণকারী যে কোনও উপায়ে এটি পরিবর্তন করতে সক্ষম হয় বা সে এটি সম্ভবপর বলে মনে করে । আপনি মূলত আপনার অ্যাপ্লিকেশনটি সংশোধন করা থেকে রক্ষা করতে পারবেন না। এবং সেখানে যে কোনও সুরক্ষা আপনি রেখেছেন তা অক্ষম / সরানো যেতে পারে।

 ২. হ্যাকাররা যেভাবে কোনওভাবে APK ফাইল হ্যাক করতে না পারে সেজন্য আমি কীভাবে অ্যাপের সমস্ত সংস্থান, সম্পদ এবং উত্স কোড রক্ষা করতে পারি?

হ্যাকিংকে আরও শক্ত করতে আপনি বিভিন্ন কৌশল করতে পারেন। উদাহরণস্বরূপ, অবরুদ্ধ ব্যবহার করুন (এটি জাভা কোড হলে)। এটি সাধারণত বিপরীত প্রকৌশলকে উল্লেখযোগ্যভাবে ধীর করে দেয়।

 ৩. হ্যাকিংকে আরও শক্ত বা এমনকি অসম্ভব করে তোলার কোনও উপায় আছে কি? আমার APK ফাইলটিতে উত্স কোডটি সুরক্ষিত করতে আমি আরও কী করতে পারি?

যেমনটি সবাই বলেছে এবং আপনি সম্ভবত জানেন যে কোনও 100% সুরক্ষা নেই। তবে গুগল তৈরি করেছে অ্যান্ড্রয়েডের জন্য যে জায়গাটি শুরু করার তা হ'ল প্রোগুয়ার্ড। আপনার যদি ভাগ করা লাইব্রেরিগুলি অন্তর্ভুক্ত করার বিকল্প থাকে তবে আপনি ফাইলের আকার, ইন্টিগ্রেশন ইত্যাদি যাচাই করতে প্রয়োজনীয় কোডটি সি ++ এ অন্তর্ভুক্ত করতে পারেন যদি আপনাকে প্রতিটি বিল্ডে আপনার APK এর লাইব্রেরি ফোল্ডারে কোনও বাহ্যিক নেটিভ লাইব্রেরি যুক্ত করতে হয় তবে আপনি এটি ব্যবহার করতে পারেন নীচের পরামর্শ দ্বারা।

স্থানীয় লাইব্রেরি পাঠাগারে পাঠাগারটি রাখুন যা আপনার প্রকল্প ফোল্ডারে "libs" এ ডিফল্ট থাকে। যদি আপনি 'আরমেবি' টার্গেটের জন্য স্থানীয় কোড তৈরি করেন তবে এটিকে libs / আরমেবিতে রাখুন । যদি এটি আরমেবি-ভি 7 এ দিয়ে নির্মিত হয় তবে এটিকে লিবিস / আরমেবি-ভি 7 এ এর ​​মধ্যে রাখুন।

<project>/libs/armeabi/libstuff.so

1
পেমেন্ট লেনদেনের জন্য আমি আইএসও 8585 স্ট্যান্ডার্ড ব্যবহার করেছি, এখনই এই মানকটির স্কিমা জাভা-এর হ্যাশম্যাপ সংগ্রহ ব্যবহার করে মূল-মান জোড়ায় রয়েছে এবং যখন আমি এপিকে বিপরীত প্রকৌশল করি তখন আমি সমস্ত স্কিমা পেয়ে যাব sche স্কিমা পাওয়া এড়ানো সম্ভব বিপরীত প্রকৌশল মাধ্যমে উন্মুক্ত।? আপনার শেয়ার লাইব্রেরির শেষ পরামর্শ কি এই ক্ষেত্রে কার্যকর হতে পারে? আপনার কি কোনও লিঙ্ক রয়েছে যাতে আমি অ্যান্ড্রয়েডের শেয়ার লাইব্রেরিতে এক্সপোজার পেতে পারি।
sachin003

4
কোডটিতে আপনার স্ট্রিংগুলি এনক্রিপ্ট করা এবং রানটাইম এ সেগুলি ডিক্রিপ্ট করার বিষয়ে কীভাবে? আপনি যদি দূরবর্তী সার্ভারে ডিক্রিপশনটি করেন, যেমন অন্যান্য লোকেরা পরামর্শ দিয়েছিল, আপনি ডিক্রিপশন কীটি উত্সে রয়েছে এমন সমস্যাটি পাবেন না।
কুত্স্কেম

হ্যাঁ, এনক্রিপশনটি উপায়, তবে এটি হ্যাক করা নিশ্চিত নয় sure আমি যদি স্ট্রিংগুলিকে ডিক্রিপ্ট করার জন্য এনক্রিপ্ট করছি তবে কোডে আমার একটি অনন্য আইডি দরকার। এবং যদি কেউ এটির সংশ্লেষ করতে সক্ষম হয় তবে অনন্য আইডিটি পাওয়া খুব সহজ হবে।
ভবেশ পাটাদিয়া

আপনি সম্পাদিত জিনিস কেন যুক্ত করলেন ? এটি সব নিয়মিত।
মোহাম্মদ আজহারউদ্দিন শাইখ

@ হটওয়ারস্পাইসি: হ্যাঁ আমি এখন উত্তর থেকে "সম্পাদিত" চিহ্নটি সরিয়েছি। আমি আমার উত্তরটি সম্পাদনা করেছি কারণ তিনি লাইব্রেরিগুলিকে এই ক্ষেত্রে কীভাবে দরকারী তা সম্পর্কে আরও জানতে চেয়েছিলেন।
ভবেশ পাটাদিয়া

126

আফাইক, আপনি এখন / রাইজ ডিরেক্টরিতে ফাইলগুলি সুরক্ষিত করতে পারবেন না এখনই সুরক্ষিত।

তবে, আপনার উত্স কোডটি সুরক্ষিত করতে আপনি নিতে পারেন এমন পদক্ষেপ রয়েছে বা সবকিছু না হলেও কমপক্ষে এটি কী করে।

  1. প্রোগার্ডের মতো সরঞ্জামগুলি ব্যবহার করুন। এগুলি আপনার কোডটিকে অস্পষ্ট করে তুলবে, এবং যদি অসম্ভব না হয়ে যায়, তখন এটি ছড়িয়ে পড়লে আরও শক্ত করে তুলবে।
  2. সার্ভিসের সর্বাধিক গুরুত্বপূর্ণ অংশগুলি অ্যাপ্লিকেশন থেকে এবং একটি ওয়েবসার্চিতে সরান, পিএইচপি এর মতো সার্ভারের পাশের ভাষার পিছনে লুকানো hidden উদাহরণস্বরূপ, আপনার যদি অ্যালগরিদম থাকে যা আপনাকে লিখতে এক মিলিয়ন ডলার নিয়েছে। আপনি স্পষ্টতই চান না যে লোকেরা এটি আপনার অ্যাপ থেকে চুরি করে। অ্যালগরিদমটি সরান এবং এটি কোনও দূরবর্তী সার্ভারে ডেটা প্রক্রিয়াকরণ করুন এবং এটিকে ডেটা সরবরাহ করার জন্য অ্যাপটি ব্যবহার করুন। অথবা এনডিকে সেগুলিকে .so ফাইলগুলিতে স্থানীয়ভাবে লিখতে ব্যবহার করুন, যা এপিএসের তুলনায় ক্ষয় হওয়ার সম্ভাবনা খুব কম। আমি মনে করি না .so ফাইলগুলির জন্য একটি ডিসকম্পিলার এখনও অবধি বিদ্যমান (এবং এমনকি যদি এটি হয়ে থাকে তবে এটি জাভা ডেক্সম্পিলারগুলির মতো ভাল হবে না)। অতিরিক্ত হিসাবে, @nikolay মন্তব্যে উল্লিখিত হিসাবে, সার্ভার এবং ডিভাইসের মধ্যে মিথস্ক্রিয়া করার সময় আপনার SSL ব্যবহার করা উচিত।
  3. ডিভাইসে মান সংরক্ষণ করার সময় এগুলি কোনও কাঁচা বিন্যাসে সংরক্ষণ করবেন না। উদাহরণস্বরূপ, আপনার যদি একটি গেম থাকে এবং আপনি ব্যবহারকারীদের ভাগ করা পছন্দগুলিতে গেম মুদ্রার পরিমাণ সংরক্ষণ করছেন। এর 10000কয়েন ধরে নেওয়া যাক । 10000সরাসরি সংরক্ষণের পরিবর্তে এটির মতো একটি অ্যালগরিদম ব্যবহার করে সংরক্ষণ করুন ((currency*2)+1)/13। এর পরিবর্তে 10000, আপনি ভাগ 1538.53846154করা পছন্দগুলিতে সংরক্ষণ করুন। তবে উপরের উদাহরণটি নিখুঁত নয় এবং আপনাকে এমন সমীকরণের জন্য কাজ করতে হবে যা রাউন্ডিং ত্রুটি ইত্যাদির মুদ্রা হারাবে না ইত্যাদি with
  4. আপনি সার্ভার পাশের কাজগুলির জন্য একই জিনিস করতে পারেন। এখন উদাহরণস্বরূপ, আসুন আসুন আপনার পেমেন্ট প্রসেসিং অ্যাপ্লিকেশনটি নেওয়া যাক। যাক এর ব্যবহারকারীকে একটি অর্থ প্রদান করতে হবে $200$200সার্ভারে একটি কাঁচা মান প্রেরণের পরিবর্তে, ছোট, পূর্বনির্ধারিত, মানগুলি যোগ করে এমন একটি সিরিজ প্রেরণ করুন $200। উদাহরণস্বরূপ, আপনার সার্ভারে এমন একটি ফাইল বা টেবিল রয়েছে যা শব্দের সাথে মানকে সমান করে। সুতরাং আসুন যে দিন Charlieঅনুরূপ $47, এবং Johnকরতে $3। সুতরাং প্রেরণের পরিবর্তে $200আপনি Charlieচারবার এবং প্রেরণ করতে পারেনJohnচার বার. সার্ভারে, তাদের অর্থ কী তা ব্যাখ্যা করুন এবং এটি যুক্ত করুন। এটি কোনও হ্যাকারকে আপনার সার্ভারে নির্বিচার মান পাঠাতে বাধা দেয়, কারণ কোন শব্দটি কোন মানের সাথে মিল রাখে তা তারা জানেন না। সুরক্ষার একটি অতিরিক্ত পরিমাপ হিসাবে, আপনার এটির জন্য 3 পয়েন্টের সমীকরণের সমীকরণও থাকতে পারে এবং প্রতিটি nসংখ্যাটিতে কীওয়ার্ডগুলি পরিবর্তন করতে পারে ।
  5. অবশেষে, আপনি আপনার অ্যাপ্লিকেশনটিতে এলোমেলোভাবে অকেজো উত্স কোড canোকাতে পারেন, যাতে হ্যাকার খড়ের খড়ের মধ্যে একটি সূচীর সন্ধান করে। ইন্টারনেট থেকে স্নিপেটস সহ এলোমেলো ক্লাস সন্নিবেশ করান, বা ফিবোনাচি সিকোয়েন্সের মতো এলোমেলো জিনিস গণনার জন্য কেবল ফাংশন। নিশ্চিত করুন যে এই ক্লাসগুলি সংকলন করেছে, তবে অ্যাপটির প্রকৃত কার্যকারিতা দ্বারা ব্যবহৃত হচ্ছে না are এই ভুয়া ক্লাসগুলির যথেষ্ট পরিমাণ যুক্ত করুন এবং হ্যাকারের আপনার আসল কোডটি খুঁজে পেতে খুব কঠিন সময় আসবে।

সব মিলিয়ে আপনার অ্যাপ্লিকেশনকে 100% রক্ষা করার উপায় নেই। আপনি এটি আরও শক্ত করে তুলতে পারেন তবে অসম্ভব নয়। আপনার ওয়েব সার্ভারের সাথে আপোস করা যেতে পারে, হ্যাকার একাধিক লেনদেনের পরিমাণ এবং আপনি এর জন্য যে কীওয়ার্ডগুলি প্রেরণ করেছিলেন তা নিরীক্ষণ করে আপনার কীওয়ার্ডগুলি বের করতে পারে, হ্যাকার কঠোরতার সাথে উত্সটিতে যেতে পারে এবং কোন কোডটি একটি ডামি তা নির্ধারণ করতে পারে।

আপনি কেবল লড়াই করতে পারবেন, তবে জিততে পারবেন না।


136
আপনি আপনার সার্ভারে প্রেরিত মানগুলির সাথে কৌশলগুলি না করে SSL ব্যবহার করুন এবং সার্ভার শংসাপত্রটি যথাযথভাবে বৈধ করুন valid অস্পষ্টতার দ্বারা সুরক্ষা সাধারণত একটি খারাপ ধারণা।
নিকোলে এলেনকোভ

48
আপনি আপনার অ্যাপ্লিকেশন এলোমেলো অকেজো উত্স কোড sertোকাতে পারেন । এটি সত্যিই সাহায্য করতে পারে না। এটি কেবল আপনার অ্যাপ্লিকেশনটি ফুটিয়ে তুলবে, পাশাপাশি এটি বজায় রাখা আরও শক্ত করে তোলে।
অনিরুদ রমনাথন

4
আপনি জাল অকেজো কোড ব্যবহার করতে পারেন এবং সার্ভারে ডেটা প্রেরণ করতে পারেন যা এটি বাতিল করে দেবে। মিথ্যা সুরক্ষা হতে পারে, তবে সম্ভাব্য হ্যাকারের জন্য পাছায় ব্যথা হচ্ছে, তাই না?
বেনোইট ডাফেজ

19
যদি আপনার অ্যালগরিদমটির মূল্য এক মিলিয়ন ডলার হয় তবে কেবলমাত্র .soফাইলগুলির জন্য কোনও ডিসকপিলার নেই তার অর্থ এই নয় যে আমি সমাবেশটি পড়তে পারি না: এইগুলির মধ্যে বেশিরভাগই একই ফাঁদে পড়ে, নিজেকে সঠিকভাবে সুরক্ষিত করার পরিবর্তে অবহেলা করে। আক্রমণকারীর অনুসরণ করার উপযুক্ত সময়টি যদি মূল্যহীন না হয় কেবল তখনই কাজ করে, সুতরাং আপনি যদি এই কৌশলগুলিতে কিছু তৈরি করেন তবে আপনি আশা করেন যে তারা জনপ্রিয় হয়ে উঠবে না, অন্যথায় আপনি ভুল হয়ে গেছেন কারণ হঠাৎ করেই আপনার কোডবেস অবিস্মরণীয় এবং এটি বিশাল পরিবর্তন দরকার।
ফোশি

23
এই উত্তরটির এত উচ্চতর স্কোর কেন আমি পাই না। ৩ এবং ৪ এর জন্য কেবল সরল মূর্খ এবং এগুলির কোনও সুরক্ষার পরিমাণ হবে না।
ম্যাটি ভির্ককুনেন

117

আপনি যখন আক্রমণকারীকে একটি কার্যকরী অনুলিপি দেন তখন কম্পিউটারের ইতিহাসের কোনও বিন্দুতে সফ্টওয়্যারটির বিপরীত প্রকৌশল রোধ করা সম্ভব হয়নি। এছাড়াও, বেশিরভাগ সম্ভাবনায়, এটি কখনই সম্ভব হবে না

এটি বুঝতে পেরে, একটি সুস্পষ্ট সমাধান রয়েছে: আপনার আক্রমণকারীকে আপনার গোপনীয়তাগুলি দেবেন না। আপনি যখন নিজের APK এর বিষয়বস্তু সুরক্ষা দিতে পারবেন না, আপনি যা বিতরণ করবেন না তা যা আপনি রক্ষা করতে পারেন । সাধারণত এটি সার্ভার-সাইড সফ্টওয়্যার যা অ্যাক্টিভেশন, অর্থ প্রদান, নিয়ম-প্রয়োগকারী এবং কোডের অন্যান্য সরস বিটগুলির মতো জিনিসের জন্য ব্যবহৃত হয়। আপনি আপনার APK এ বিতরণ না করে মূল্যবান সম্পদগুলি রক্ষা করতে পারেন । পরিবর্তে, এমন একটি সার্ভার সেট আপ করুন যা আপনার অ্যাপ্লিকেশন থেকে অনুরোধের প্রতিক্রিয়া জানায়, সম্পদগুলি "ব্যবহার করে" (যার অর্থ যাই হোক না কেন) এবং তারপরে ফলাফলটি অ্যাপ্লিকেশনে প্রেরণ করে। যদি এই মডেল আপনার মনে থাকা সম্পদের জন্য কাজ না করে তবে আপনি নিজের কৌশলটি পুনরায় চিন্তা করতে পারেন।

এছাড়াও, যদি আপনার প্রাথমিক লক্ষ্য অ্যাপ পাইরেসিটি প্রতিরোধ করা হয় : এমনকি বিরক্তও করবেন না। জলদস্যুতাবিরোধী কোনও ব্যবস্থা সম্ভবত আপনাকে সাশ্রয়ের আশা করতে পারে তার চেয়ে আপনি এই সমস্যায় ইতিমধ্যে আরও বেশি সময় এবং অর্থ পুড়িয়ে ফেলেছেন। এই সমস্যাটি সমাধান করার জন্য বিনিয়োগের ক্ষেত্রে রিটার্ন এত কম যে এটি সম্পর্কে চিন্তা করার এমনকি অর্থও আসে না।


21
প্রথম অনুচ্ছেদটি সেরা উত্তর। যদি আপনার আক্রমণকারী হার্ডওয়্যার নিয়ন্ত্রণ করে তবে তারা সর্বদা আপনার সফ্টওয়্যারকে কোনওভাবে পরাস্ত করতে সক্ষম হবে। যে কোনও কিছু যা সত্যই সুরক্ষিত করা দরকার তা অবশ্যই আপনার নিয়ন্ত্রণ করা হার্ডওয়ারে থাকা উচিত, এটি এতটা সহজ। এবং আরওআই সম্পর্কে চূড়ান্ত অনুচ্ছেদটিও স্পটটিতে রয়েছে।
ড্যানিয়েল প্রাইডেন

88

অ্যাপ্লিকেশন সুরক্ষার প্রথম নিয়ম: কোনও আক্রমণকারী এখন নিয়ন্ত্রণহীন শারীরিক বা বৈদ্যুতিন অ্যাক্সেস অর্জন করে এমন কোনও মেশিনই আপনার আক্রমণকারীর অন্তর্ভুক্ত, এটি আসলে কোথায় আছে বা আপনি এর জন্য কী প্রদান করেছিলেন তা নির্বিশেষে।

অ্যাপ্লিকেশন সুরক্ষার দ্বিতীয় নিয়ম: কোনও সফ্টওয়্যার যা শারীরিক সীমানাগুলির ভিতরে ফেলে দেয় যা আক্রমণকারী এখন প্রবেশ করতে পারে না তা আপনার আক্রমণকারীর অন্তর্গত, আপনি কোডিং করতে কত সময় ব্যয় করেছেন তা নির্বিশেষে।

তৃতীয় নিয়ম: আক্রমণকারী এখন প্রবেশ করতে পারে না এমন একই শারীরিক সীমানাকে ছেড়ে দেয় এমন কোনও তথ্য আপনার আক্রমণকারীর অন্তর্ভুক্ত, এটি আপনার পক্ষে যতই মূল্যবান হোক না কেন।

তথ্য প্রযুক্তি সুরক্ষার ভিত্তি এই তিনটি মূলনীতি ভিত্তিক; একমাত্র সত্যিকারের সুরক্ষিত কম্পিউটার হ'ল একটি নিরাপদে লক করা একটি, একটি ফরহাদে খাঁচার ভিতরে, স্টিলের খাঁচার অভ্যন্তরে। এমন কম্পিউটার রয়েছে যা তাদের বেশিরভাগ পরিষেবা জীবন কেবল এই অবস্থায় কাটায়; বছরে একবার (বা তার চেয়ে কম), তারা বিশ্বস্ত রুট শংসাপত্র কর্তৃপক্ষের জন্য ব্যক্তিগত কী উত্পন্ন করে (তারা যেখানে রয়েছে তার প্রতিটি ইঞ্চি ক্যামেরা রেকর্ডিং সহ সাক্ষিদের একটি হোস্টের সামনে)।

এখন, বেশিরভাগ কম্পিউটার এই ধরণের পরিবেশের অধীনে ব্যবহৃত হয় না; এগুলি শারীরিকভাবে উন্মুক্ত অবস্থায় রয়েছে, একটি ওয়্যারলেস রেডিও চ্যানেলের মাধ্যমে ইন্টারনেটে সংযুক্ত। সংক্ষেপে, তারা তাদের সফ্টওয়্যার হিসাবে দুর্বল। তারা বিশ্বাসযোগ্য হয় না। কম্পিউটার এবং তাদের সফ্টওয়্যার অবশ্যই কার্যকর হতে হবে তা জানতে বা করতে হবে এমন কিছু জিনিস রয়েছে তবে তারা যাতে ক্ষতি করতে পারে সেগুলি কখনই জানতে না পারে বা করতে পারে না সেদিকে খেয়াল রাখতে হবে (কমপক্ষে সেই একক মেশিনের সীমানার বাইরে স্থায়ী ক্ষতি হবে না) )।

আপনি এই সব ইতিমধ্যে জানতেন; এজন্য আপনি নিজের আবেদনের কোডটি সুরক্ষিত করার চেষ্টা করছেন। তবে, এতেই প্রথম সমস্যা রয়েছে; অবরুদ্ধকরণ সরঞ্জামগুলি কোডটি একটি মানুষকে খনন করার চেষ্টা করার জন্য কোডকে জঞ্জাল করে তুলতে পারে তবে প্রোগ্রামটি এখনও চালাতে হয়; তার মানে অ্যাপ্লিকেশনটির আসল যুক্তিযুক্ত প্রবাহ এবং এটি যে ডেটা ব্যবহার করে তা অবরুদ্ধ করে প্রভাবিত করে না। একটু দৃacity়তা দেওয়া হয়েছে, একজন আক্রমণকারী কেবল কোডটি অবলম্বন করতে পারে এবং এটি এমন কিছু ক্ষেত্রেও প্রয়োজনীয় নয় যেখানে সে যা দেখছে সে অন্য কিছু হতে পারে না যা সে খুঁজছিল।

পরিবর্তে, আপনার এটি নিশ্চিত করার চেষ্টা করা উচিত যে কোনও আক্রমণকারী আপনার কোড সহ কিছু করতে পারে না, তার স্পষ্ট অনুলিপি পাওয়া তার পক্ষে যতই সহজ হোক না কেন। এর অর্থ, কোনও হার্ড-কোডেড গোপনীয়তা নেই, কারণ কোডগুলি যে বিল্ডিংটি আপনি এটি নির্মাণ করেছিলেন তা ছাড়ার সাথে সাথে সেই গোপনীয়তাগুলি গোপন নয়।

আপনার হার্ড-কোডেড থাকা এই কী-মানগুলি অ্যাপ্লিকেশনটির উত্স কোডটি পুরোপুরি মুছে ফেলা উচিত। পরিবর্তে, তাদের তিনটি স্থানে থাকা উচিত; ডিভাইসে অস্থির মেমরি, যা আক্রমণকারীটির অফলাইন অনুলিপি পাওয়ার জন্য শক্ত (তবে এখনও অসম্ভব নয়); স্থায়ীভাবে সার্ভার ক্লাস্টারে, যেখানে আপনি লোহার মুষ্টির সাহায্যে অ্যাক্সেস নিয়ন্ত্রণ করেন; বা দ্বিতীয় ডেটা স্টোরটিতে আপনার ডিভাইস বা সার্ভারের সাথে সম্পর্কিত নয় যেমন কোনও ফিজিকাল কার্ড বা আপনার ব্যবহারকারীর স্মৃতিতে (যার অর্থ এটি শেষ পর্যন্ত অস্থির মেমরিতে থাকবে তবে এটি বেশি দিন থাকতে হবে না)।

নিম্নলিখিত স্কিম বিবেচনা করুন। ব্যবহারকারী মেমরি থেকে ডিভাইসে অ্যাপের জন্য তাদের শংসাপত্রগুলি প্রবেশ করে। দুর্ভাগ্যক্রমে, আপনাকে অবশ্যই বিশ্বাস করতে হবে যে ব্যবহারকারীটির ডিভাইসটি ইতিমধ্যে কোনও কীলগার বা ট্রোজান দ্বারা আপস করা হয়নি; ব্যবহারকারী যে ডিভাইসগুলি ব্যবহার করেছেন (ম্যাক / আইপি, আইএমইআই, ইত্যাদি) সম্পর্কে হার্ড-টু-জাল সনাক্তকরণের তথ্য স্মরণ করে এবং কমপক্ষে একটি অতিরিক্ত চ্যানেল সরবরাহ করে মাল্টি-ফ্যাক্টর সুরক্ষা কার্যকর করার ক্ষেত্রে আপনি এই ক্ষেত্রে সর্বোত্তম কাজটি করতে পারেন by কোন অপরিচিত ডিভাইসে লগইন প্রচেষ্টা যাচাই করা যেতে পারে।

শংসাপত্রগুলি, একবার প্রবেশ করানো হয়, ক্লায়েন্ট সফ্টওয়্যার দ্বারা আবৃত হয় (একটি সুরক্ষিত হ্যাশ ব্যবহার করে), এবং সরল-পাঠ্য শংসাপত্রগুলি বাতিল করা হয়; তারা তাদের উদ্দেশ্য পালন করেছে। অপ্রকাশিত শংসাপত্রগুলি একটি সুরক্ষিত চ্যানেলের মাধ্যমে শংসাপত্র-প্রমাণীকরণকৃত সার্ভারে প্রেরণ করা হয়, যা লগইনের বৈধতা যাচাই করতে ব্যবহৃত ডেটা উত্পাদন করতে তাদের আবার হ্যাশ করে । এইভাবে, ক্লায়েন্ট কখনই জানে না যে আসলে ডাটাবেসের মানের সাথে কী তুলনা করা হয়, অ্যাপ্লিকেশন সার্ভার যাচাইয়ের জন্য যা পায় তার পেছনের সরল প্রমাণাদি কখনই জানে না, যাচাইকরণের জন্য সংরক্ষণ করা ডেটা কীভাবে উত্পাদিত হয় তা ডেটা সার্ভার কখনই জানে না এবং এতে একজন লোক সুরক্ষিত চ্যানেল সমঝোতা করা থাকলেও মাঝারিটি কেবল জিব্রিশ দেখতে পায়।

একবার যাচাই হয়ে গেলে, সার্ভারটি চ্যানেলের মাধ্যমে একটি টোকেন ফিরে প্রেরণ করে। টোকেনটি কেবল সুরক্ষিত সেশনের মধ্যেই কার্যকর, এটি এলোমেলো শব্দ বা একটি এনক্রিপ্ট করা (এবং এইভাবে যাচাইযোগ্য) অধিবেশন শনাক্তকারীদের অনুলিপি দ্বারা গঠিত এবং ক্লায়েন্ট অ্যাপ্লিকেশনটিকে অবশ্যই কোনও অনুরোধের অংশ হিসাবে একই চ্যানেলে এই টোকনটি সার্ভারে প্রেরণ করতে হবে কিছু করতে. ক্লায়েন্ট অ্যাপ্লিকেশনটি এটি বহুবার করবে, কারণ এটি অর্থ, সংবেদনশীল ডেটা বা নিজের দ্বারা ক্ষতিকারক হতে পারে এমন কোনও কিছুই জড়িত করতে পারে না; পরিবর্তে এটি সার্ভারকে এই কাজটি করতে বলবে। ক্লায়েন্ট অ্যাপ্লিকেশনটি ডিভাইসে নিজেই অবিরাম মেমরির জন্য কোনও সংবেদনশীল তথ্য লিখবে না, কমপক্ষে সরল পাঠ্যে নয়; ক্লায়েন্ট কোনও স্থানীয় ডেটা এনক্রিপ্ট করার জন্য সুরক্ষিত চ্যানেলের উপর দিয়ে সার্ভারকে অনুরোধ করতে পারে, যা সার্ভার মনে রাখবে; পরবর্তী অধিবেশনে ক্লায়েন্ট সার্ভারটিকে একই কীটির জন্য অস্থির মেমরির জন্য ডেটা ডিক্রিপ্ট করতে অনুরোধ করতে পারে। সেই তথ্যটি কেবলমাত্র অনুলিপি হবে না; ক্লায়েন্ট স্টোরগুলি যে কোনও কিছুতে কোনও রূপে সার্ভারে প্রেরণ করা উচিত।

স্পষ্টতই, এটি আপনার অ্যাপ্লিকেশনটিকে ইন্টারনেট অ্যাক্সেসের উপর নির্ভর করে; ক্লায়েন্ট ডিভাইসটি সার্ভারের সাথে সঠিক সংযোগ এবং প্রমাণীকরণ ব্যতীত এর কোনও মৌলিক ফাংশন সম্পাদন করতে পারে না। আসলে ফেসবুকের চেয়ে আলাদা কিছু নয়।

এখন, আক্রমণকারী যে কম্পিউটারটি চায় সেটি হ'ল আপনার সার্ভার, কারণ এটি এবং ক্লায়েন্ট অ্যাপ / ডিভাইসটি এমন জিনিস নয় যা তাকে উপার্জন করতে পারে বা তার উপভোগের জন্য অন্যান্য লোককে কষ্ট দেয়। ঠিক আছে; সমস্ত ক্লায়েন্টকে সুরক্ষিত করার চেষ্টা করার চেয়ে সার্ভারকে সুরক্ষিত করার জন্য আপনার পয়সা খরচ করার অর্থ এবং প্রচেষ্টার জন্য আপনি আরও অনেক ধাক্কা পান। সার্ভারটি সমস্ত ধরণের ফায়ারওয়াল এবং অন্যান্য বৈদ্যুতিন সুরক্ষার পিছনে থাকতে পারে এবং স্টিল, কংক্রিট, কীকার্ড / পিন অ্যাক্সেস এবং 24 ঘন্টা ভিডিও নজরদারি পিছনে শারীরিকভাবে সুরক্ষিত করা যায়। সরাসরি সার্ভারে যে কোনও ধরণের অ্যাক্সেস পাওয়ার জন্য আপনার আক্রমণকারীটিকে খুব পরিশীলিত হওয়া দরকার এবং আপনি অবিলম্বে এটি সম্পর্কে জানতে হবে।

একজন আক্রমণকারী সবচেয়ে ভাল কাজটি করতে পারে কোনও ব্যবহারকারীর ফোন এবং শংসাপত্রগুলি চুরি করে এবং ক্লায়েন্টের সীমিত অধিকার সহ সার্ভারে লগ ইন করে। যদি এমনটি ঘটে, ঠিক যেমন কোনও ক্রেডিট কার্ড হারাতে হয়, বৈধ ব্যবহারকারীর জন্য একটি 800 নাম্বারে কল করতে নির্দেশ দেওয়া উচিত (সাধারণত মনে রাখা সহজ, তবে কোনও কার্ডের পিছনে নয় যা তারা তাদের পার্স, মানিব্যাগ বা ব্রিফকেস বহন করবে যা হতে পারে মোবাইল ডিভাইসের সাথে চুরি করা) যে কোনও ফোন থেকে তারা অ্যাক্সেস করতে পারে যা এগুলি সরাসরি আপনার গ্রাহক পরিষেবার সাথে সংযুক্ত করে। তারা জানিয়ে দেয় যে তাদের ফোনটি চুরি হয়ে গেছে, কিছু বেসিক অনন্য শনাক্তকারী সরবরাহ করে এবং অ্যাকাউন্টটি লক হয়ে যায়, আক্রমণকারী যে কোনও লেনদেন প্রক্রিয়া করতে সক্ষম হতে পারে তা আবার ঘূর্ণিত হয় এবং আক্রমণকারী আবার স্কোয়ার একে ফিরে আসে।


1
নিখুঁত উত্তর !! আমি কিছু এনক্রিপ্টড টোকেন সহ সার্ভার থেকে ডেটা পাওয়ার আপনার উপায়টি পছন্দ করেছি, আমি মনে করি এটির পরে ডিকোড করা অসম্ভব।
ধরম

আমি জানি এটি কিছুটা দেরিতে তবে সার্ভার অংশটি অ্যাক্সেস করার বিষয়ে কী about মাইক্রোসফ্ট অ্যাজুরে এর মতো পরিষেবাগুলি তাদের সার্ভার অ্যাক্সেস করার জন্য আপনাকে এরকম কিছু সরবরাহ করে: মোবাইলসোর্সেসক্লিয়েন্ট এমক্লিয়েন্ট = নতুন মোবাইল সার্ভিসক্লিয়েন্ট ("মোবাইল সার্ভিস ইউআরএল", // উপরের সাইট ইউআরএল "অ্যাপকি" এর সাথে প্রতিস্থাপন করুন, // অ্যাপ্লিকেশন কী এর সাথে প্রতিস্থাপন করুন) এবং বেশিরভাগ যে কেউ এতে অ্যাক্সেস রয়েছে যা তাদের সার্ভারটি এডিট করতে পারে এটিকে সম্পাদন করতে পারে
এডউইনজ

@ এডউইনজ - কম্পিউটার বিজ্ঞানে কোনও সমস্যা নেই যা ইন্ডিয়ারেশনের অন্য স্তর দিয়ে সমাধান করা যায় না। আপনার স্নিপেট একটি অ্যাজুরে মোবাইল ক্লায়েন্ট পরিষেবা অ্যাক্সেসের জন্য প্রাথমিক ধারণা দেয়; এটি মাইক্রোসফ্টের সামনের দরজার "ড্রাইভ-বাইস" এর বিরুদ্ধে একটি প্রাথমিক স্তরের সুরক্ষা সরবরাহ করে। আপনি পরিবর্তে অতিরিক্ত স্তর যুক্ত করতে পারেন, যেমন যে কোনও পরিষেবা কলে সেশন কী (মূলত এনক্রিপ্ট করা টোকেনটি কী) দরকার হয় এবং এই কীটি পেতে প্রথমে তাদের শংসাপত্র এবং এনক্রিপশন স্কিমের জ্ঞানের সংমিশ্রণ সহ অনুমোদন করতে হবে।
কিথস

1
একটি সেরা উত্তর।
debo.stackoverflow

64

 1. আমি কীভাবে কোনও অ্যান্ড্রয়েড APK এর বিপরীত ইঞ্জিনিয়ারিং এড়াতে পারি? এটা কি সম্ভব?

এটি সম্ভব নয়

 ২. হ্যাকাররা যেভাবে কোনওভাবে APK ফাইল হ্যাক করতে না পারে সেজন্য আমি কীভাবে অ্যাপের সমস্ত সংস্থান, সম্পদ এবং উত্স কোড রক্ষা করতে পারি?

যখন কেউ .apip এক্সটেনশনটি .zip এ পরিবর্তন করে, তবে আনজিপ করার পরে, কেউ সহজেই সমস্ত সংস্থান ( ম্যানিফেস্ট.এক্সএমএল বাদে ) পেতে পারে , তবে এপিএইচটিওলের সাহায্যে ম্যানিফেস্ট ফাইলের আসল সামগ্রীটিও পাওয়া যায়। আবার, একটি নং।

 ৩. হ্যাকিংকে আরও শক্ত বা এমনকি অসম্ভব করে তোলার কোনও উপায় আছে কি? আমার APK ফাইলটিতে উত্স কোডটি সুরক্ষিত করতে আমি আরও কী করতে পারি?

আবার, না, তবে আপনি কিছু স্তর পর্যন্ত প্রতিরোধ করতে পারেন, এটি হল

  • ওয়েব থেকে একটি উত্স ডাউনলোড করুন এবং কিছু এনক্রিপশন প্রক্রিয়া করুন
  • একটি প্রাক-সংকলিত নেটিভ লাইব্রেরি (সি, সি ++, জেএনআই, এনডিকে) ব্যবহার করুন
  • সর্বদা কিছু হ্যাশিং করুন ( MD5 / SHA কী বা অন্য কোনও যুক্তি)

এমনকি Smali, লোকেরা আপনার কোড নিয়ে খেলতে পারে। সব মিলিয়ে এটি পজিবল নয়।


7
@ ট্র্যাভারবয়ডস্মিথ: ওএস ওপেন সোর্স এবং রুটযোগ্য হলে এনক্রিপশন খুব বেশি সহায়তা করে না। অ্যাপ্লিকেশনটি ডিক্রিপ্ট করতে এবং স্টাফ চালানোর জন্য সিস্টেমে একটি কী প্রয়োজন। এবং যদি সিস্টেমটির কোনও কী থাকে এবং সিস্টেমে আমার অবিচ্ছিন্ন অ্যাক্সেস থাকে তবে আমি কীটি খুঁজে পেতে এবং এটিতে যেতে পারি তা আমি জানি। মানে আমারও এখন চাবি আছে
সিএওও

4
@ ট্র্যাভারবয়েডস্মিথ: যদিও এটি "কীভাবে করবেন" অংশ এটি পুরো ধারণাটিকে হত্যা করে। সরাসরি এনক্রিপ্টড কোড কার্যকর করার কোনও উপায় নেই; এক পর্যায়ে, ডিক্রিপ্টেড কোডটি উপলব্ধ থাকতে হবে। যার অর্থ (১) অবশ্যই একটি কী (অবশ্যই আমি মূল হিসাবে সম্ভবত অ্যাক্সেস পেয়েছি) থাকতে হবে এবং (২) আমি এমনকি র‍্যামের স্পষ্ট অনুলিপিটি পেতে সক্ষম হতে পারি এবং যাইহোক এনক্রিপশন সম্পর্কে চিন্তা না করে।
সিএওও

3
@ ট্র্যাভারবয়ডস্মিথ: সমস্যা হ'ল, এক্ষেত্রে আপনি কেবল ব্যয় বাড়িয়ে তুলতে পারবেন না যাতে এটি সার্থক না হয়। আমরা এখানে নিষ্ঠুর-জোর করে কীগুলি নিয়ে কথা বলছি না; আমরা ইতিমধ্যে সেগুলি রাখার বিষয়ে কথা বলছি - ওএসের কী থাকতে হবে এবং আমাদের কাছে ওএস রয়েছে। এটির সমাধানের একমাত্র উপায় হ'ল ওএসটিকে অরূদ্ধযোগ্য করে তোলা। শুভকামনা সেই সাথে; এমনকি অ্যাপল এটি পরিচালনা করতে পারে না। :)
সিএইচও

3
@ ট্র্যাভারবয়ডস্মিথ: আমি মনে করি না যে সাধারণভাবে ব্যয় বৃদ্ধি করা অসম্ভব। আমি মনে করি (এবং বলে) বিশেষত , আপনার পরামর্শটি অসম্ভব - কারণ এটি । ম্যাটল্যাব অ্যান্ড্রয়েড নয় এবং এর কিছু নির্দিষ্ট স্বাধীনতা রয়েছে যা অ্যান্ড্রয়েড দেয় না। বিশেষত, এটির পক্ষের অবরুদ্ধতা রয়েছে; একটি এনক্রিপশন কীটি লুকানো অনেক বেশি শক্ত। অ্যান্ড্রয়েড এটি করতে পারে না। যার যার সোর্স কোড রয়েছে সেগুলি কীগুলি কোথায় লুকিয়ে রয়েছে তা জানতে পারে এবং বৈশিষ্ট্যটি ঘোষণার 10 মিনিটের মধ্যে সেগুলি পুনরুদ্ধার করার জন্য একটি সরঞ্জাম থাকবে। এটি করা সম্ভব নয়; এটা একেবারে তুচ্ছ
সিএইচও

6
@ ট্র্যাভারবয়ডস্মিথ: আমি বাছাইয়ের কিছুই জোর দিয়েছি। আমি যা জোর দিচ্ছি তা হ'ল স্থিতিশীল, পরিবর্তন করা, চলমান ইত্যাদি কোনও বিষয় নয় । ওপেন সোর্স ওএসে, একা এনক্রিপশন এই কোডটি যে কারও কাছ থেকে রিভার্সিং ইঞ্জিনিয়ারিং থেকে রক্ষা করতে পারে না। যেহেতু কীটি কীভাবে অর্জিত, ব্যবহৃত এবং / বা সঞ্চয় করা যায় তা বিবেচনা না করেই আমি কোডটি ডিক্রিপশনটি করতে পারি, আপনি এটি কীভাবে করেছিলেন এবং এটি পুনরায় প্রতিলিপি করতে পারে - তার চেয়েও সহজে আমি কিছু সুপার-গোপনের বিপরীত করতে পারি অ্যাপ্লিকেশন কোড।
সিএইচও

37

অ্যান্ড্রয়েড APK এর রিভার্স ইঞ্জিনিয়ারিংয়ের 100% এড়ানো সম্ভব নয় তবে উত্স কোড, সম্পদগুলি আপনার APK এবং সংস্থানগুলির মতো আরও ডেটা আহরণ এড়াতে আপনি এই উপায়গুলি ব্যবহার করতে পারেন:

  1. অ্যাপ্লিকেশন কোড অবলম্বন করতে প্রোগার্ড ব্যবহার করুন

  2. আপনার অ্যাপ্লিকেশন কোর এবং ফাইলগুলির কোডের সুরক্ষিত অংশটি রাখতে সি এবং সি ++ ব্যবহার করে এনডিকে ব্যবহার করুন.so

  3. সংস্থানগুলি সুরক্ষিত করতে, APK সহ সম্পদ ফোল্ডারে সমস্ত গুরুত্বপূর্ণ সংস্থান অন্তর্ভুক্ত করবেন না। প্রথমে প্রয়োগের সময় এই সংস্থানগুলি ডাউনলোড করুন।


7
তৃতীয়টি হ'ল আক্রমণকারীদের কাজটি সহজ করে দিচ্ছে। বিপরীত ইঞ্জিনিয়ারিংয়ের চেয়ে স্নিফিং নেটওয়ার্ক যোগাযোগ সহজ।
মোট

তৃতীয়টির সমস্যা সমাধানের জন্য, কেউ ডাউনলোড করা সামগ্রী এনক্রিপ্ট করতে পারে এবং / অথবা একটি এনক্রিপ্ট করা সংযোগ (যেমন SSL / TLS) ব্যবহার করতে পারে
স্ট্রাডাবাড়ি

1
সংযোগ এনক্রিপ্ট করা ট্র্যাফিক স্নিগ্ধ বা সংশোধনকারীদের বিরুদ্ধে সুরক্ষা দেয়। যে ক্ষেত্রে ব্যবহারকারী নিজেই দূষিত (যেমন তার আপনার এপিপি রয়েছে এবং তিনি এটি হ্যাক করার চেষ্টা করেছেন) সেখানে তিনি এখনও আপনার অ্যাপ্লিকেশন ব্যবহার করে, মূল ব্যবহারকারী হিসাবে সংস্থানগুলি বের করে সামগ্রীটি পাবেন; তবে হ্যাঁ এটি সাধারণ স্নিগ্ধ আক্রমণগুলির বিরুদ্ধে সহায়তা করে।
কেভিন লি

এতে যুক্ত করে: ৪) উচ্চতর অবলম্বনের জন্য ডেক্সগার্ড ব্যবহার করুন তবে এটির জন্য 5 অর্থ প্রদান করা হয়েছে) অ্যাপ্লিকেশন ডাউনলোডের সময় সম্পদ ডাউনলোডের জন্য ওবিবি ফাইল ব্যবহার করুন, এটি অ্যাপের আকার হ্রাস করতে সহায়তা করবে
অশোক কুমার

35

বিকাশকারীরা কোনওভাবে কোনও APK কে চুরির হাত থেকে রক্ষা করতে নিম্নলিখিত পদক্ষেপ নিতে পারে,

  • সর্বাধিক প্রাথমিক ProGuardউপায়টি হল তাদের কোডগুলি অবলম্বন করার মতো সরঞ্জামগুলি ব্যবহার করা , তবে এখন পর্যন্ত কাউকে কোনও অ্যাপ্লিকেশন পচন থেকে সম্পূর্ণরূপে রোধ করা বেশ কঠিন হয়ে পড়েছে।

  • এছাড়াও আমি একটি সরঞ্জাম হোসেডেক্স 2 জার সম্পর্কে শুনেছি । এটি Dex2Jarএকটি অ্যান্ড্রয়েড এপিএলে ক্ষতিকারক কোড byোকানো বন্ধ করে দেয় যা কোডটিকে বিভ্রান্ত ও অক্ষম করে Dex2Jarএবং ক্ষয় থেকে রক্ষা করে। এটি হ্যাকারদের কোনওভাবেই এপিএকে পঠনযোগ্য জাভা কোডগুলিতে বিভক্ত করা থেকে বিরত রাখতে পারে।

  • অ্যাপ্লিকেশনটির প্রয়োজন হয় কেবল তখনই যোগাযোগের জন্য কিছু সার্ভার সাইড অ্যাপ্লিকেশন ব্যবহার করুন। এটি গুরুত্বপূর্ণ ডেটা প্রতিরোধে সহায়তা করতে পারে।

মোটেও, আপনি সম্ভাব্য হ্যাকারদের থেকে আপনার কোডকে পুরোপুরি রক্ষা করতে পারবেন না। যাইহোক, আপনি আপনার কোডটি ডিকম্পাইল করার পক্ষে এটিকে কঠিন এবং কিছুটা হতাশার কাজ করতে পারেন। একটি সর্বাধিক দক্ষ উপায় হ'ল নেটিভ কোড (সি / সি ++) লিখুন এবং এটি সংকলিত লাইব্রেরি হিসাবে সংরক্ষণ করা store


3
হোসেডেক্স 2 জার অকেজো হওয়ার পরে রয়েছে। এটি কেবল 'বিভ্রান্তি' ডেক্স 2জার এবং সহজেই অবরুদ্ধ করা যেতে পারে। স্মাইলি / এপিটকোল ইত্যাদি 'হোসড' এপিপি দিয়ে ঠিক কাজ করে।
নিকোলে এলেনকোভ

@ নিকোলেএলেঙ্কভ আপনি কি জানেন হোসেডেক্স 2 জার কীভাবে কাজ করে? তারা এড়াতে বা ডেক্স 2 জারকে বিভ্রান্ত করার জন্য কী ব্যবহার করেছে B কারণ হোসডেক্স 2 জারটি ব্যবহার করতে আমি আমার এপিপি ফাইলটি ওয়েবে আপলোড করতে পারি না। আমি যদি ডেক্স 2জারকে বিভ্রান্ত করার জন্য হোসডেক্স 2 জার এর মতো কিছু করতে পারি তবে ডেক্স 2 বাজার সরঞ্জামটি ব্যবহার করে হ্যাক করা শক্ত হবে।
sachin003

1
হতে পারে আপনি আমার বক্তব্যকে ভুল বুঝেছেন: হোসডেক্স 2 জার যা করে তা আপনার এপিএকে আবার ত্রুটিযুক্ত করে তোলে যাতে জনপ্রিয় ডেক্স 2জার সরঞ্জামটি (বাক্সের বাইরে) এটির বিপরীত করতে না পারে। তবে অন্যান্য সরঞ্জামগুলি পারে এবং এটি সাধারণত পরাস্ত করা খুব সহজ। এটি ব্যবহারে কোনও লাভ নেই। ডেক্সগার্ড আই জিনিসটির কথা কেউই উল্লেখ করেনি (প্রোগুয়ার্ডের লেখক; নিখরচায় নয়), তবে এটি দেখার কাজ। এটি 'নিয়মিত' উদ্বিগ্নতার চেয়ে আরও কিছু কাজ করে।
নিকোলে এলেনকোভ

সি ++ কখনও বিপরীত হতে পারে না? এটা কঠিন তবে সম্ভব এবং আপনাকে hex-rays.com/products/decompiler/index.shtml এর মতো সহায়তার জন্য সরঞ্জামগুলি রয়েছে (হ্যাঁ, তাদের এআরএম সংস্করণ রয়েছে get এটি পাওয়া সহজ নয়)।
dkzm

হ্যাঁ, @ ভিকার্তিআনাত্রা: আমিও কোনওভাবে উল্লেখ করেছি , আপনি এটি কঠিন করে তুলতে পারেন
সাহিল মহাজন এমজে

24

এখানে কয়েকটি পদ্ধতি যা আপনি চেষ্টা করতে পারেন:

  1. প্রোগুয়ার্ডের মতো অবজ্ঞা এবং সরঞ্জামগুলি ব্যবহার করুন ।
  2. উত্স এবং ডেটার কিছু অংশ এনক্রিপ্ট করুন।
  3. টেম্পারিং সনাক্ত করতে অ্যাপ্লিকেশনটিতে একটি স্বতন্ত্র ইনবিল্ট চেকসাম ব্যবহার করুন।
  4. কোনও ডিবাগারে লোড এড়ানোর জন্য কোড প্রবর্তন করুন, অর্থাৎ, অ্যাপটিকে ডিবাগার সনাক্ত করতে এবং ডিবাগারটি প্রস্থান / নিহত করার ক্ষমতা দিতে হবে have
  5. একটি অনলাইন পরিষেবা হিসাবে প্রমাণীকরণ পৃথক করুন।
  6. অ্যাপ্লিকেশন বৈচিত্র্য ব্যবহার করুন
  7. যেমন আঙুলের মুদ্রণ কৌশলটি ব্যবহার করুন যেমন, ডিভাইসটির সত্যতা প্রমাণের আগে বিভিন্ন সাবসিস্টেম থেকে ডিভাইসগুলির হার্ডওয়্যার স্বাক্ষর।

23

 1. আমি কীভাবে কোনও অ্যান্ড্রয়েড APK এর বিপরীত ইঞ্জিনিয়ারিং এড়াতে পারি? এটা কি সম্ভব?

অসম্ভব

 ২. হ্যাকাররা যেভাবে কোনওভাবে APK ফাইল হ্যাক করতে না পারে সেজন্য আমি কীভাবে অ্যাপের সমস্ত সংস্থান, সম্পদ এবং উত্স কোড রক্ষা করতে পারি?

অসম্ভব

 ৩. হ্যাকিংকে আরও শক্ত বা এমনকি অসম্ভব করে তোলার কোনও উপায় আছে কি? আমার APK ফাইলটিতে উত্স কোডটি সুরক্ষিত করতে আমি আরও কী করতে পারি?

আরও শক্ত - সম্ভাব্য, তবে বাস্তবে এটি বেশিরভাগ গড় ব্যবহারকারীদের পক্ষে আরও কঠোর হবে, যিনি কেবল হ্যাকিং গাইডের জন্য গুগল করছেন। যদি কেউ সত্যিই আপনার অ্যাপ্লিকেশনটিকে হ্যাক করতে চায় - তবে তাড়াতাড়ি বা পরে হ্যাক হয়ে যাবে।


22

 1. আমি কীভাবে কোনও অ্যান্ড্রয়েড APK এর বিপরীত ইঞ্জিনিয়ারিং এড়াতে পারি? এটা কি সম্ভব?

যে অসম্ভব

 ২. হ্যাকাররা যেভাবে কোনওভাবে APK ফাইল হ্যাক করতে না পারে সেজন্য আমি কীভাবে অ্যাপের সমস্ত সংস্থান, সম্পদ এবং উত্স কোড রক্ষা করতে পারি?

বিকাশকারীরা তাদের কোড অবলম্বন করতে প্রোগুয়ার্ডের মতো সরঞ্জামগুলি ব্যবহার করার পদক্ষেপ নিতে পারে তবে এখন পর্যন্ত কাউকে কোনও অ্যাপ্লিকেশন পচন থেকে সম্পূর্ণরূপে রোধ করা বেশ কঠিন হয়ে পড়েছে।

এটি একটি দুর্দান্ত সরঞ্জাম এবং আপনার কোডের পদচিহ্ন সঙ্কুচিত করার সময় আপনার কোডটিকে 'বিপরীত' করার অসুবিধা বাড়িয়ে তুলতে পারে।

ইন্টিগ্রেটেড প্রোগার্ড সমর্থন: প্রোগুয়ার্ড এখন এসডিকে সরঞ্জামগুলির সাথে প্যাকেজড। বিকাশকারীরা এখন তাদের বিল্ডকে একটি রিলিজ বিল্ডের সংহত অংশ হিসাবে আপত্তি জানাতে পারেন।

 ৩. হ্যাকিংকে আরও শক্ত বা এমনকি অসম্ভব করে তোলার কোনও উপায় আছে কি? আমার APK ফাইলটিতে উত্স কোডটি সুরক্ষিত করতে আমি আরও কী করতে পারি?

গবেষণা করার সময়, আমি হোসেডেক্স 2 জার সম্পর্কে জানতে পারি । এই সরঞ্জামটি আপনার কোডটি পচন থেকে রক্ষা করবে, তবে আপনার কোডটি সম্পূর্ণরূপে রক্ষা করা সম্ভব হবে বলে মনে হয় না।

সহায়ক কয়েকটি লিঙ্ক, আপনি সেগুলি উল্লেখ করতে পারেন।


21

এখানে মূল প্রশ্নটি হ'ল ডেক্স ফাইলগুলি সংহত হয়ে যেতে পারে এবং উত্তরটি তারা "সাজানোর" হতে পারে। ডেডেক্সার এবং স্মালির মতো ডিসেসেমব্লার রয়েছে

প্রোগুয়ার্ড, সঠিকভাবে কনফিগার করা আপনার কোডটি অস্পষ্ট করবে। ডেক্সগার্ড যা প্রোগুয়ার্ডের বাণিজ্যিক বর্ধিত সংস্করণ, এটি আরও কিছুটা সহায়তা করতে পারে। তবে আপনার কোডটি এখনও স্মিলে রূপান্তরিত হতে পারে এবং বিপরীত প্রকৌশল অভিজ্ঞতার সাথে বিকাশকারীরা স্মালি থেকে আপনি কী করছেন তা নির্ধারণ করতে সক্ষম হবেন।

হতে পারে একটি ভাল লাইসেন্স চয়ন করুন এবং এটি আইন দ্বারা সর্বোত্তম পদ্ধতিতে প্রয়োগ করুন।


4
পার্শ্ব নোট হিসাবে (অস্বীকৃতি: আইএএনএএল) - লাইসেন্স সমস্ত পরিস্থিতিতে সমস্ত বিচার বিভাগের অধীনে আবেদন রক্ষা করবে না (উদাহরণস্বরূপ ইউরোপের কয়েকটি দেশে এটি সামঞ্জস্যতা বৃদ্ধির জন্য পৃথকীকরণের অনুমতিপ্রাপ্ত)।
ম্যাকিয়েজ পাইচোটকা

12

আপনার ক্লায়েন্টকে এমন কাউকে নিয়োগ দেওয়া উচিত যা তারা জানে যে তারা কী করছে, যিনি সঠিক সিদ্ধান্ত নিতে পারেন এবং আপনাকে পরামর্শ দিতে পারেন can

আপনার ব্যাকএন্ডে লেনদেন প্রক্রিয়াকরণ সিস্টেম পরিবর্তন করার কিছু ক্ষমতা থাকার বিষয়ে উপরের কথাটি অযৌক্তিক - আপনাকে এ জাতীয় স্থাপত্য পরিবর্তন করার অনুমতি দেওয়া উচিত নয়, তাই আপনি সক্ষম হওয়ার আশা করবেন না।

এটি সম্পর্কে আমার যুক্তি:

যেহেতু আপনার ডোমেন অর্থ প্রদানের প্রক্রিয়াজাতকরণ করছে, এটি ধরে নেওয়া নিরাপদ যে পিসিআই ডিএসএস এবং / বা পিএ ডিএসএস (এবং সম্ভাব্য রাজ্য / ফেডারেল আইন) আপনার ব্যবসায়ের জন্য তাত্পর্যপূর্ণ হবে - অনুগত হওয়ার জন্য আপনাকে অবশ্যই আপনাকে নিরাপদ দেখাতে হবে। নিরাপত্তাহীন হওয়ার জন্য (পরীক্ষার মাধ্যমে) সন্ধান করুন যে আপনি সুরক্ষিত নন, তারপরে সুরক্ষা যথাযথ পর্যায়ে = ব্যয়বহুল, ধীর, উচ্চ-ঝুঁকির পথে যথাযথভাবে যাচাই করা না হওয়া পর্যন্ত ফিক্সিং, পুনরায় পরীক্ষা করা, ইত্যাদি ইত্যাদি সঠিক কাজটি করার জন্য, কঠোর চিন্তাভাবনা করুন, কাজের প্রতি অভিজ্ঞ প্রতিভাবদ্ধ হোন, নিরাপদ পদ্ধতিতে বিকাশ করুন, তারপরে যথাযথ পর্যায়ে = যথাযথ, দ্রুত, সাফল্যের কম ঝুঁকিপূর্ণ উপায়।


8

যে কোনও ব্যক্তি পেমেন্ট প্ল্যাটফর্মগুলিতে একটি মোবাইল পেমেন্ট অ্যাপ্লিকেশন (মাইচেক) সহ ব্যাপকভাবে কাজ করেছেন, আমি বলব যে আপনাকে এই আচরণটি সার্ভারের কাছে অর্পণ করতে হবে, পেমেন্ট প্রসেসরের কোনও ব্যবহারকারীর নাম বা পাসওয়ার্ড (এটি যাই হোক না কেন) সংরক্ষণ করা উচিত নয় বা মোবাইল অ্যাপ্লিকেশনটিতে হার্ডকোডযুক্ত, এটিই আপনি চান শেষ জিনিস, কারণ আপনি কোডটি অবলম্বন করলেও উত্সটি বোঝা যাবে।

এছাড়াও, আপনার অ্যাপ্লিকেশনটিতে ক্রেডিট কার্ড বা অর্থ প্রদানের টোকেন সংরক্ষণ করা উচিত নয়, আপনার নির্মিত সেবার জন্য সবকিছুই আবার অর্পণ করা উচিত, এটি আপনাকে পরে অনুমতি দেবে, আরও সহজেই পিসিআই-এর অনুগত হবে, এবং ক্রেডিট কার্ড সংস্থাগুলি জিতেছে আপনার ঘাড়ে নিঃশ্বাস ফেলবেন না (যেমন তারা আমাদের জন্য করেছিলেন)।


7

এখানে অন্যান্য upvated উত্তর সঠিক। আমি কেবল অন্য একটি বিকল্প সরবরাহ করতে চাই।

আপনি যেটিকে গুরুত্বপূর্ণ মনে করেন সেই নির্দিষ্ট কার্যকারিতার জন্য আপনি আপনার অ্যাপ্লিকেশনটিতে ওয়েবভিউ নিয়ন্ত্রণটি হোস্ট করতে পারেন । কার্যকারিতাটি তখন আপনার ওয়েব সার্ভারে প্রয়োগ করা হবে। দেখে মনে হবে এটি আপনার অ্যাপ্লিকেশনটিতে চলছে।


আইএমপি পর্দার জন্য @ স্যারেল বোথা হ্যাঁ আমি ইতিমধ্যে ওয়েবভিউ ব্যবহার করেছি এবং হ্যাঁ সুরক্ষা বজায় রাখার এটিও একটি উপায়, আমি আপনার উত্তরটি গ্রহণ করছি।
sachin003

7

যদি আমরা বিপরীত ইঞ্জিনিয়ারিং (প্রায়) অসম্ভব করে তুলতে চাই তবে আমরা অ্যাপ্লিকেশনটিকে একটি উচ্চ চৈতন্য-প্রতিরোধক চিপে রাখতে পারি, যা অভ্যন্তরীণভাবে সমস্ত সংবেদনশীল জিনিস চালায় এবং হোস্টের উপর জিইউআই নিয়ন্ত্রণকরণ সম্ভব করার জন্য কিছু প্রোটোকলের সাথে যোগাযোগ করে। এমনকি টেম্পার-প্রতিরোধী চিপগুলি 100% ক্র্যাক প্রুফ নয়; তারা কেবল সফ্টওয়্যার পদ্ধতির চেয়ে অনেক বেশি বার সেট করেছে। অবশ্যই, এটি অসুবিধাগুলি: অ্যাপ্লিকেশনটির জন্য কিছুটা ইউএসবি ওয়ার্টের প্রয়োজন যা ডিপটিতে ipোকানোর জন্য চিপটি ধারণ করে।

এই অ্যাপ্লিকেশনটিকে এত alর্ষার সাথে রক্ষা করতে চাওয়ার প্রেরণা প্রশ্নটি প্রকাশ করে না।

যদি অ্যাপ্লিকেশনটিতে (সুরক্ষিত বা অন্যথায়) যে কোনও ত্রুটি থাকতে পারে সেগুলি গোপন করে অর্থ প্রদানের পদ্ধতির সুরক্ষা উন্নত করা হয়, তবে তা পুরোপুরি ভুল হয়েছে। সুরক্ষা-সংবেদনশীল বিটগুলি প্রকৃতপক্ষে খোলামেলা হওয়া উচিত, যদি তা সম্ভব হয়। আপনার অ্যাপ্লিকেশন পর্যালোচনা করে যে কোনও নিরাপত্তা গবেষক সেই বিটগুলি খুঁজে পেতে এবং তাদের ক্রিয়াকলাপটি যাচাই করতে এবং আপনার সাথে যোগাযোগ করতে আপনার পক্ষে যথাসম্ভব সহজ করা উচিত। অর্থ প্রদানের অ্যাপ্লিকেশনগুলিতে কোনও এম্বেড হওয়া শংসাপত্র থাকা উচিত নয়। এটি বলার অপেক্ষা রাখে না যে কোনও ডিভাইসকে বিশ্বাস করে এমন কোনও সার্ভার অ্যাপ্লিকেশন থাকা উচিত নয় কারণ এটির কারখানা থেকে একটি নির্দিষ্ট শংসাপত্র রয়েছে। ব্যবহারকারীর শংসাপত্রগুলিতে একাই অর্থ প্রদানের লেনদেন করা উচিত, সঠিকভাবে ডিজাইন করা শেষ-থেকে-শেষ প্রমাণীকরণ প্রোটোকল যা অ্যাপ্লিকেশন, বা প্ল্যাটফর্ম, বা নেটওয়ার্ক ইত্যাদির উপর নির্ভর করে prec

যদি উদ্দেশ্যটি হ'ল ক্লোনিং প্রতিরোধ করা, সেই পরীক্ষামূলক প্রিপ চিপের সংক্ষিপ্ততা, প্রোগ্রামটি বিপরীত ইঞ্জিনিয়ারিং এবং অনুলিপি করা থেকে রক্ষা করার জন্য আপনার কিছুই করতে পারে না, যাতে কেউ তাদের নিজস্ব অ্যাপ্লিকেশনে একটি সামঞ্জস্যপূর্ণ অর্থপ্রদানের পদ্ধতি অন্তর্ভুক্ত করে দেয় "অননুমোদিত ক্লায়েন্ট" এ উঠুন। অননুমোদিত ক্লায়েন্টদের বিকাশ করা কঠিন করার উপায় রয়েছে। একটি হ'ল প্রোগ্রামের সম্পূর্ণ অবস্থার স্ন্যাপশটের উপর ভিত্তি করে চেকসাম তৈরি করা হবে: সমস্ত কিছুর জন্য সমস্ত রাষ্ট্রীয় চলক। জিইউআই, যুক্তি, যাই হোক না কেন। কোনও ক্লোন প্রোগ্রামের ঠিক একই অভ্যন্তরীণ অবস্থা থাকবে না। অবশ্যই, এটি একটি রাষ্ট্রীয় মেশিন যা একই রকম বাহ্যিকভাবে দৃশ্যমান রাষ্ট্রের রূপান্তরগুলি রয়েছে (যেমন ইনপুট এবং আউটপুটগুলি দ্বারা পর্যবেক্ষণ করা যেতে পারে), তবে সম্ভবত একই অভ্যন্তরীণ অবস্থা। একটি সার্ভার অ্যাপ্লিকেশন প্রোগ্রামটিকে জিজ্ঞাসাবাদ করতে পারে: আপনার বিস্তারিত রাষ্ট্রটি কী? (অর্থাত আপনার সমস্ত অভ্যন্তরীণ রাষ্ট্রের ভেরিয়েবলগুলির জন্য আমাকে একটি চেকসাম দিন)। এটি ডামি ক্লায়েন্ট কোডের সাথে তুলনা করা যেতে পারে যা সার্ভারে সমান্তরালভাবে কার্যকর করে, জেনুইন স্টেট ট্রানজিশনের মধ্য দিয়ে যায়। একটি তৃতীয় পক্ষের ক্লোনকে সঠিক প্রতিক্রিয়া জানাতে খাঁটি প্রোগ্রামের সমস্ত প্রাসঙ্গিক রাষ্ট্রীয় পরিবর্তনগুলি প্রতিলিপি করতে হবে, যা এর বিকাশে বাধা সৃষ্টি করবে।


7

@ মুহাম্মদ সাকিবের সাথে একমত হয়েছেন এখানে: https://stackoverflow.com/a/46183706/2496464

এবং @ মামাইর একটি ভাল শুরু করার পদক্ষেপ দেয়: https://stackoverflow.com/a/35411378/474330

এটি সর্বদা নিরাপদে ধরে নেওয়া নিরাপদ যে আপনি আপনার ব্যবহারকারীর ডিভাইসে যা বিতরণ করেন তা ব্যবহারকারীর অন্তর্ভুক্ত। খুব সহজ. আপনার বৌদ্ধিক বৈশিষ্ট্যগুলি এনক্রিপ্ট করার জন্য আপনি সর্বশেষতম সরঞ্জাম এবং পদ্ধতিটি ব্যবহার করতে সক্ষম হতে পারেন তবে নির্ধারিত ব্যক্তিকে আপনার সিস্টেমে 'অধ্যয়ন' করা থেকে বিরত করার কোনও উপায় নেই। এমনকি বর্তমান প্রযুক্তি যদি তাদের অযাচিত অ্যাক্সেস অর্জন করতে অসুবিধা সৃষ্টি করে তবে আগামীকাল, এমনকি পরের ঘন্টাটিতেও কিছু সহজ উপায় থাকতে পারে!

সুতরাং, এখানে সমীকরণটি আসে:

When it comes to money, we always assume that client is untrusted.

এমনকি ইন-গেমের অর্থনীতির মতো সাধারণ। (বিশেষত গেমসে! সেখানে আরও 'পরিশীলিত' ব্যবহারকারী রয়েছে এবং কয়েক সেকেন্ডের মধ্যে ফাঁক ছড়িয়ে পড়ে!)

আমরা কীভাবে নিরাপদে থাকব?

সার্ভারের সাইডে অবস্থিত আমাদের কী প্রসেসিং সিস্টেমগুলির (এবং অবশ্যই ডাটাবেস অবশ্যই) বেশিরভাগ, না। এবং ক্লায়েন্ট এবং সার্ভারের মধ্যে মিথ্যা এনক্রিপ্ট করা যোগাযোগ, বৈধতা ইত্যাদি thin এটি পাতলা ক্লায়েন্টের ধারণা।


5

আমি আপনাকে আক্রমণ থেকে সুরক্ষা সফ্টওয়্যার অ্যাপ্লিকেশনগুলি দেখার পরামর্শ দিই । এটি একটি বাণিজ্যিক পরিষেবা, তবে আমার বন্ধুর সংস্থা এটি ব্যবহার করেছে এবং তারা এটি ব্যবহার করে খুশি to


4

অ্যান্ড্রয়েড এন এ APK স্বাক্ষর স্কিম v2

প্যাকেজম্যানেজার শ্রেণি এখন APK স্বাক্ষর স্কিম v2 ব্যবহার করে অ্যাপ্লিকেশন যাচাইকরণ সমর্থন করে। APK স্বাক্ষর স্কিম v2 একটি সম্পূর্ণ ফাইলের স্বাক্ষর স্কিম যা যাচাইয়ের গতি উল্লেখযোগ্যভাবে উন্নত করে এবং APK ফাইলগুলিতে অননুমোদিত পরিবর্তনগুলি সনাক্ত করে অখণ্ডতা গ্যারান্টিগুলিকে শক্তিশালী করে।

পশ্চাৎ-সামঞ্জস্যতা বজায় রাখতে, ভিপি 2 স্বাক্ষর স্কিমের সাথে সাইন ইন করার আগে একটি এপিএকে অবশ্যই ভি 1 স্বাক্ষর স্কিমের (জেআর স্বাক্ষর প্রকল্প) দিয়ে সাইন ইন করতে হবে। ভি 2 স্বাক্ষর স্কিমের সাহায্যে, আপনি ভি 2 স্কিমের সাথে সাইন করার পরে অতিরিক্ত শংসাপত্রের সাথে যদি APK এ স্বাক্ষর করেন তবে যাচাইকরণ ব্যর্থ হয়।

APK স্বাক্ষর স্কিম v2 সমর্থন পরে এন বিকাশকারী পূর্বরূপে উপলব্ধ হবে।

http://developer.android.com/preview/api-overview.html#apk_signature_v2


2
এপিকে স্বাক্ষর ভি 2 কেবলমাত্র সম্পদগুলিকে হস্তক্ষেপ করা থেকে বিরত রাখে, তবে বিপরীত প্রকৌশলকে আরও শক্ত করে না ...
লুই সিএড

1
এছাড়াও আপনি কেবল স্বাক্ষরটি সরিয়ে আবার সাইন ইন করতে পারেন। ভি 2 স্বাক্ষরটি APK ফাইলটিতে ডেটা মাত্র একটি ব্লক।
রবার্ট

4

কোনও APK এর বিপরীত ইঞ্জিনিয়ারিং এড়ানোর কোনও উপায় নেই। অ্যাপ্লিকেশন সম্পদ, সংস্থানগুলি রক্ষা করতে আপনি এনক্রিপশন ব্যবহার করতে পারেন।

  • এনক্রিপশনটি ডিক্রিপশন ছাড়াই এটি ব্যবহার করা আরও শক্ত করে তুলবে some
  • ক্র্যাকিংয়ের জন্য আরও শক্ত করার জন্য আপনার মূল যুক্তিকে কিছু স্পুফ কোড যুক্ত করা।
  • আপনি যদি কোনও মাতৃভাষায় আপনার সমালোচনা যুক্তি লিখতে পারেন এবং এটি অবশ্যই পচনের জন্য আরও শক্ত করে তোলে।
  • কুইসক্সির মতো কোনও তৃতীয় পক্ষের সুরক্ষা ফ্রেমওয়ার্ক ব্যবহার করা

3

মূলত এটি সম্ভব নয়। এটা কখনই সম্ভব হবে না। তবে, আশা আছে। আপনি এটি তৈরি করতে একটি দ্বিধাহীন ব্যবহার করতে পারেন যাতে কিছু সাধারণ আক্রমণগুলি যেমন:

  1. নামকরণের পদ্ধতি / ক্লাস (তাই ডিকম্পিলারটিতে আপনি পছন্দ মতো টাইপ পান) a.a )
  2. নিয়ন্ত্রণ প্রবাহকে অবহেলা করা (সুতরাং ডিকম্পিলারটিতে কোডটি পড়া খুব কঠিন)
  3. স্ট্রিং এবং সম্ভবত সংস্থানগুলি এনক্রিপ্ট করা

আমি নিশ্চিত যে অন্য কেউ আছেন, তবে এটিই প্রধান। আমি একটি নেট নেটফেসে প্রিম্পেপটিভ সলিউশন নামে একটি সংস্থার হয়ে কাজ করি । তাদের একটি জাভা অবফসেক্টর রয়েছে যা অ্যান্ড্রয়েডের জন্য পাশাপাশি ড্যাশও নামেও কাজ করে

বাধা সবসময় একটি দাম সঙ্গে আসে, যদিও। উল্লেখযোগ্যভাবে, কর্মক্ষমতা সাধারণত খারাপ হয়, এবং এটির প্রায়শই প্রকাশের জন্য কিছু অতিরিক্ত সময় প্রয়োজন। তবে, যদি আপনার বৌদ্ধিক সম্পত্তি আপনার পক্ষে অত্যন্ত গুরুত্বপূর্ণ, তবে এটি সাধারণত মূল্যবান worth

অন্যথায়, আপনার একমাত্র পছন্দ এটি করা যাতে আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটি কেবলমাত্র এমন সার্ভারের মধ্য দিয়ে যায় যা আপনার অ্যাপ্লিকেশনটির সমস্ত আসল যুক্তি হোস্ট করে। এতে সমস্যার নিজস্ব অংশ রয়েছে, কারণ এর অর্থ ব্যবহারকারীদের আপনার অ্যাপ্লিকেশনটি ব্যবহার করতে অবশ্যই ইন্টারনেটে সংযুক্ত থাকতে হবে।

এছাড়াও, এটি কেবল অ্যান্ড্রয়েডই নয় যে এই সমস্যাটি রয়েছে। এটি প্রতিটি অ্যাপ স্টোরের সমস্যা। প্যাকেজ ফাইলে পৌঁছানো কতটা কঠিন তা কেবলমাত্র একটি বিষয় (উদাহরণস্বরূপ, আমি বিশ্বাস করি না যে এটি আইফোনে খুব সহজ, তবে এটি এখনও সম্ভব)।


দুর্ভাগ্যক্রমে যদি কেউ ক্লায়েন্টকে (অ্যাপ) হ্যাক করে তবে তারা যোগাযোগের ফর্ম্যাটটি দেখতে এবং তাদের নিজস্ব সার্ভার তৈরি করতে সক্ষম হবে :(
জকি ডো

3

আরই কে সম্পূর্ণভাবে এড়ানো সম্ভব নয় তবে অভ্যন্তরীণভাবে এগুলিকে আরও জটিল করে তোলার মাধ্যমে আক্রমণকারীদের অ্যাপ্লিকেশনটির স্পষ্ট ক্রিয়াকলাপ দেখা আরও কঠিন হয়ে পড়েছে, যা আক্রমণ আক্রমণকারীদের সংখ্যা হ্রাস করতে পারে।

যদি অ্যাপ্লিকেশনটি অত্যন্ত সংবেদনশীল ডেটা পরিচালনা করে তবে বিভিন্ন কৌশল উপস্থিত রয়েছে যা আপনার কোডকে রিভার্স ইঞ্জিনিয়ারিংয়ের জটিলতা বাড়িয়ে তুলতে পারে। একটি কৌশল হ'ল আক্রমণকারী দ্বারা সহজ রানটাইম ম্যানিপুলেশন সীমাবদ্ধ করতে সি / সি ++ ব্যবহার করা। প্রচুর সি এবং সি ++ লাইব্রেরি রয়েছে যা খুব পরিপক্ক এবং অ্যান্ড্রয়েড অফার জেএনআইয়ের সাথে সংহত করার জন্য সহজ। কোনও আক্রমণকারীকে প্রথমে নিম্ন স্তরে অ্যাপ্লিকেশনটিতে আক্রমণ করতে প্রথমে ডিবাগিং বিধিনিষেধগুলি রোধ করতে হবে। এটি আক্রমণে আরও জটিলতা যুক্ত করে। অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলিতে অ্যান্ড্রয়েড থাকা উচিত: আক্রমণকারী বা ম্যালওয়্যার দ্বারা চালিত সময়ের সহজ ম্যানিপুলেশন রোধ করতে অ্যাপ্লিকেশন ম্যানিফেস্টে ডিবাগেবল = "মিথ্যা" সেট থাকা উচিত।

ট্রেস চেকিং - বর্তমানে কোনও ডিবাগার বা অন্য ডিবাগিং সরঞ্জাম দ্বারা এটি সনাক্ত করা হচ্ছে কিনা তা একটি অ্যাপ্লিকেশন নির্ধারণ করতে পারে। যদি সনাক্ত করা হয়, অ্যাপ্লিকেশনটি সম্ভাব্য আক্রমণাত্মক প্রতিক্রিয়ার ক্রিয়াকলাপগুলি সম্পাদন করতে পারে যেমন ব্যবহারকারীর ডেটা রক্ষার জন্য এনক্রিপশন কীগুলি বাতিল করা, সার্ভার প্রশাসককে অবহিত করা, বা নিজেকে রক্ষা করার প্রয়াসে এই জাতীয় ধরণের প্রতিক্রিয়া। প্রক্রিয়া স্থিতি পতাকাগুলি পরীক্ষা করে বা পিট্রেস সংযুক্তির রিটার্ন মানটির তুলনা, প্যারেন্ট প্রসেসটি পরীক্ষা করা, প্রক্রিয়া তালিকায় ব্ল্যাকলিস্ট ডিবাগারগুলি বা প্রোগ্রামের বিভিন্ন স্থানে টাইমস্ট্যাম্পের তুলনা করে এটি নির্ধারণ করা যেতে পারে।

অপ্টিমাইজেশান - উন্নত গাণিতিক গণনা এবং অন্যান্য ধরণের জটিল যুক্তি গোপন করার জন্য, সংকলক অপ্টিমাইজেশানগুলি অবজেক্ট কোডটি অবিচ্ছিন্ন করতে সহায়তা করতে পারে যাতে আক্রমণকারীর দ্বারা সহজেই এটি বিচ্ছিন্ন করা যায় না, যাতে আক্রমণকারীকে নির্দিষ্ট কোডের বোঝা অর্জন করা আরও কঠিন করে তোলে। অ্যান্ড্রয়েডে এটি এনডিকে দিয়ে স্থানীয়ভাবে সংকলিত লাইব্রেরিগুলি ব্যবহার করে আরও সহজেই অর্জন করা যায়। এছাড়াও, একটি এলএলভিএম ওবফাসকেটর বা যে কোনও প্রোটেক্টর এসডিকে ব্যবহার করা আরও ভাল মেশিন কোড অপ্রয়োজনীয় সরবরাহ করবে।

স্ট্রিপিং বাইনারিগুলি - আপনার আবেদনের নিম্ন স্তরের ফাংশনগুলির মেকআপটি দেখার জন্য আক্রমণকারীের প্রয়োজনীয় সময় এবং দক্ষতার মাত্রা বাড়ানোর একটি কার্যকর উপায় হ'ল দেশীয় বাইনারিগুলি কেটে ফেলা। বাইনারি ফেলা করে, বাইনারিটির প্রতীক টেবিলটি ছিনিয়ে নেওয়া হয়, যাতে আক্রমণকারী সহজেই কোনও অ্যাপ্লিকেশনটিকে ডিবাগ বা বিপরীত করতে না পারে You

এবং অবশেষে আপনাকে অবশ্যই অবজ্ঞা এবং প্রোগার্ডের মতো সরঞ্জাম সম্পর্কে সচেতন হতে হবে।


3

আপনার অ্যাপ্লিকেশনটি যদি এই সংবেদনশীল হয় তবে আপনার সার্ভারের পাশে অর্থপ্রদানের প্রক্রিয়া অংশটি বিবেচনা করা উচিত। আপনার পেমেন্ট প্রসেসিং অ্যালগরিদমগুলি পরিবর্তন করার চেষ্টা করুন। অ্যান্ড্রয়েড অ্যাপ্লিকেশনটি শুধুমাত্র ব্যবহারকারীর তথ্য সংগ্রহের জন্য এবং প্রদর্শন করার জন্য (যেমন অ্যাকাউন্ট ব্যালেন্স) এবং জাভা কোডগুলির মধ্যে অর্থ প্রদানের প্রক্রিয়াজাতকরণের পরিবর্তে এনক্রিপ্ট হওয়া প্যারামিটারগুলি সহ একটি সুরক্ষিত এসএসএল প্রোটোকল ব্যবহার করে আপনার টাস্কটি আপনার সার্ভারে প্রেরণ করুন। আপনার সার্ভারের সাথে যোগাযোগের জন্য সম্পূর্ণ এনক্রিপ্টড এবং সুরক্ষিত API তৈরি করুন।

অবশ্যই এটি হ্যাকও করা যেতে পারে এবং সোর্স কোড সুরক্ষার সাথে এর কোনও সম্পর্ক নেই তবে হ্যাকারদের আপনার অ্যাপ্লিকেশনটি চালিত করা আরও শক্ত করে তুলতে এটি অন্য একটি সুরক্ষা স্তর হিসাবে বিবেচনা করুন।


2

টিপিএম চিপস (বিশ্বস্ত প্ল্যাটফর্ম মডিউল) আপনার জন্য সুরক্ষিত কোড পরিচালনা করার কথা নয়? তারা পিসিগুলিতে সাধারণ হয়ে উঠছে (বিশেষত অ্যাপল বেশী) এবং তারা ইতিমধ্যে আজকের স্মার্টফোন চিপগুলিতে উপস্থিত থাকতে পারে। দুর্ভাগ্যক্রমে এটি ব্যবহারের জন্য কোনও ওএস এপিআই নেই। আশা করি অ্যান্ড্রয়েড একদিন এর জন্য সমর্থন যোগ করবে। এটি কনটেন্ট ডিআরএম পরিষ্কার করার মূল চাবিকাঠি (যা গুগল ওয়েবমের জন্য কাজ করছে)।


2

আপনি যখন এটিকে ব্যবহারকারীদের হাতে রাখেন তখন কিছুই নিরাপদ থাকে না তবে কিছু সাধারণ অনুশীলন আক্রমণকারীদের ডেটা চুরি করতে আরও শক্ত করে তোলে।

  • আপনার মূল যুক্তি (অ্যালগোরিদম) সার্ভারের পাশে রাখুন।
  • সার্ভার এবং ক্লায়েন্টের সাথে যোগাযোগ করুন; নিশ্চিত করুন যে যোগাযোগ বি / ডাব্লু সার্ভার এবং ক্লায়েন্ট এসএসএল বা এইচটিটিপিএসের মাধ্যমে সুরক্ষিত রয়েছে; বা অন্যান্য কৌশল কী-জুড়ির জেনারেশন অ্যালগরিদম (ইসিসি, আরএসএ) ব্যবহার করুন। সংবেদনশীল তথ্য এন্ড-টু-এন্ড এনক্রিপ্ট থাকা নিশ্চিত করুন।
  • সেশনগুলি ব্যবহার করুন এবং নির্দিষ্ট সময়ের ব্যবধানের পরে সেগুলি মেয়াদোত্তীর্ণ হন।
  • সংস্থানগুলি এনক্রিপ্ট করুন এবং সার্ভার থেকে চাহিদার ভিত্তিতে এনে দিন।
  • অথবা আপনি হাইব্রিড অ্যাপ্লিকেশন তৈরি করতে পারেন যা webviewসার্ভারে রিসোর্স + কোডের মাধ্যমে সিস্টেম অ্যাক্সেস করে

একাধিক পন্থা; পারফরম্যান্স এবং সুরক্ষার মধ্যে আপনাকে ত্যাগ করতে হবে এটি স্পষ্ট


2

আমি এই সুতায় উত্তরটি দেখতে পাচ্ছি। redexকোডটি অপ্টিমাইজ করতে আপনি ফেসবুক ব্যবহার করতে পারেন । রেডেক্স এমন .dexস্তরে কাজ করে যেখানে .classস্তর হিসাবে অগ্রসর হয় ।


2

সোর্স কোড এবং সংস্থানসমূহের 100% সুরক্ষা অ্যান্ড্রয়েডে সম্ভব নয়। তবে, আপনি বিপরীত প্রকৌশলের জন্য কিছুটা কঠিন করতে পারেন। আপনি নীচের লিঙ্কগুলিতে এ সম্পর্কে আরও বিশদ জানতে পারেন:

সুরক্ষিত ধ্রুবক মানগুলি সংরক্ষণ করুন এবং https://www.agicent.com/blog/mobile-app-security-best-practices/ এ যান


1

হ্যাকাররা কোনওভাবেই APK ফাইল হ্যাক করতে না পারে সেজন্য আমি কীভাবে অ্যাপের সমস্ত সংস্থান, সম্পদ এবং উত্স কোড রক্ষা করতে পারি?

একটি APK ফাইল SHA-1 অ্যালগরিদম দ্বারা সুরক্ষিত । আপনি APK এর মেটা-আইএনএফ ফোল্ডারে কিছু ফাইল দেখতে পারেন । আপনি যদি কোনও এপিকে ফাইল বের করেন এবং এর যেকোন বিষয়বস্তু পরিবর্তন করেন এবং এটিকে আবার জিপ করেন এবং আপনি যখন কোনও নতুন এন্ড্রয়েড ফাইল কোনও অ্যান্ড্রয়েড মেশিনে চালান, এটি কার্যকর হবে না, কারণ SHA-1 হ্যাশগুলি কখনই মেলে না।


এটা সত্য; তবে এপিএকে (আলাদা শংসাপত্র সহ) পদত্যাগ করা তুচ্ছ এবং সবকিছু আবার কাজ করবে। অ্যাপ্লিকেশন থেকেই APK স্বাক্ষর করার জন্য কোন স্বাক্ষর ব্যবহার করা হয়েছে তা পরীক্ষা করা সম্ভব হয়েছে এবং শংসাপত্রটি পরিবর্তিত হয় কিনা তা ত্রুটিযুক্ত হয়ে গেছে তবে এই কোডটি অ্যাপ্লিকেশন থেকে সরিয়ে আনা মাত্র সামান্য কম তুচ্ছ।
ডেভিড

এটি অ্যান্ড্রয়েড ডিভাইসটিকে সংশোধিত কোড চালানো থেকে রোধ করতে পারে তবে আপনি এখনও সহজেই প্রাসঙ্গিক কোডটি এক্সট্রাক্ট করতে এবং একটি পিসিতে নতুন কোড লিখতে পারেন যা আপনি যা চান তা করে।
সরেল বোথা


1

সরঞ্জাম: আপনার অ্যাপ্লিকেশনটিতে প্রগার্ড ব্যবহার করা আপনার অ্যাপ্লিকেশনটিকে রিভার্সিং ইঞ্জিনিয়ারিংয়ের মধ্যে সীমাবদ্ধ করা যেতে পারে


1

আমি জানতাম যে কয়েকটি ব্যাংকিং অ্যাপ্লিকেশন ডেক্সগার্ড ব্যবহার করছে যা ক্লাস, স্ট্রিংস, সম্পদ, সংস্থান ফাইল এবং নেটিভ লাইব্রেরিগুলির এনক্রিপশন হিসাবে বিভ্রান্তি সরবরাহ করে provides

https://www.guardsquare.com/en/products/dexguard

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.