البحث عن رمز مصدر بلدي في ثنائي فقط المنتج [مغلقة]

StackOverflow https://stackoverflow.com/questions/339833

  •  19-08-2019
  •  | 
  •  

سؤال

ودعونا نقول لدي مشروع بأنني صدر تحت GPL، مع المصادر المتاحة لأحد. في وقت لاحق أجد منتج مماثل جدا، ولكن المصدر بأنها مغلقة، وزعت ثنائي فقط من قبل شخص آخر.

هل هناك طريقة جيدة لمعرفة أنهم يستخدمون شفرة المصدر الخاصة بي في منتجاتها؟

إذا الحل هو بطريقة ما عكس هندسة ثنائي، هل من الممكن لأتمتة عليه بطريقة أو بأخرى؟

وتحرير: توضيح. مطاردة الخطأ هو خيار واحد، ولكن ليس نهائيا، وخاصة إذا كان المشروع هو عبارة عن مكتبة وثنائي أضاف GUI الخاصة به، على سبيل المثال. الوضع أنا مهتم هو عندما ليست واضحة بشكل صارخ أن يتم رفع رمز.

هل كانت مفيدة؟

المحلول

وابحث عن البرامج الوحمات. يحاول هذا الأسلوب لإقامة روابط بين البرمجيات على أساس ثنائي الكود أو السلوك الديناميكي. كريستيان Collberg هو خبير في العلامات المائية البرامج، التي اشتقت الوحمات. هذا هو كل شيء لا يزال في الأرض البحثية.

نصائح أخرى

والبق.

وإذا كان مصدر المغلقة سهم إطلاق أكثر من ذلك في البق مع المشروع الخاص بك، انه سيكون على الارجح 'رفع'.

ويمكنك أيضا محاولة إلغاء ترجمته ثنائي الخاصة بك مع نسخة decompiled من ثنائي مغلقة المصدر ... رغم أن هذا قد لا تكون موثوقة.

من الواضح، إذا كان ثنائي يشتبه لا stripped، يمكنك فقط البحث عن أي حرف التي تشترك في نفس اسم كود الخاص بك.

وهناك مجموعة كبيرة من العمل على إلغاء ترجمته والهندسة العكسية رموز الثنائية. الخبير العالمي هو على الارجح كريستينا سيفونتس . وقالت أنها فعلت الكثير مع بتفريغ. كما سيكون من المثير للاهتمام أن أكتب اليكس أيكن ونسأل اذا اداته ل <أ href = ل "http://theory.stanford.edu/~aiken/moss/" يختلط = "نوفولو noreferrer"> قياس البرمجيات التشابه يمكن أن تتكيف مع رموز الثنائية.

وهناك طريقة وضوحا هو للبحث عن سلاسل. تشغيل سلاسل أداة يونكس ومعرفة ما إذا كان ثنائي يحتوي على أي من السلاسل الحرفية من التعليمات البرمجية. أساسا الاشياء مثل رسائل الخطأ والنص في رسائل لل.

وقد تتمكن من محاولة لتفكيك كلا البرنامجين ومقارنة التجمع، ولكن إذا كانوا مترجم مختلفة ثم برنامج ثير يمكن أن الاختلافات الطفيفة. هناك عدد قليل من المجمعات مجانية أو يمكن مصحح أيضا خطوة من خلال في التجمع.

وبخلاف ذلك هناك في الحقيقة ليست وسيلة سهلة لمعرفة هذا النوع من الشيء.

والطريقة الأكثر مؤكدة النجاح أستطيع أن أفكر في مشابهة لكلمة "Esquivalience" في قاموس اكسفورد.
ببساطة إضافة بعض صفيف ثنائي مع محتوى فريد في مكان ما من رمز ولا تنس أن تجعل بعض استخدام بسيط منه وبالتالي فإن رابط لا تحسين بعيدا. ربما يجب عليك تعتم إلى حد ما بحيث لن يكون واضحا للقارئ العابر أن أنها زائدة عن الحاجة.
ثم فتح الثنائية المترجمة مع editior عرافة والبحث عن ذلك.

لماذا لا ننظر إلى جدول الرموز باستخدام نانومتر؟

$ nm a.out
...
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top