PDA

View Full Version : نوشتن کتابخانه ای که سورسش در دسترش قرار نگیرد



sobhan1990
پنج شنبه 22 آبان 1393, 19:01 عصر
سلام به همه دوستای عزیز

آیا راهی هست که در برنامه ها یک یا چند کلاس را به صورت یک پکیج در بیارم و به صورتی تبدیل به یک پکیج بشه که فقط بشه ازش استفاده کرد.
یعنی بدمش به یک برنامه نویس دیگه و اون بتونه فقط کلاس ها و متدها و اشیا کلاس ها را فراخوانی کنه ولی نتونه سورس رو ببینیه و یا در سورس دستکاری کنه.

پیشاپیش سپاس فراوان

محمد فدوی
پنج شنبه 22 آبان 1393, 20:28 عصر
سلام.
بله شما میتونید فایل‌هاتون رو بصورت کامپایل شده بسته‌بندی و منتشر کنید. در اینصورت فقط فایل‌هایی با فرمت class. در اختیار برنامه‌نویس خواهد بود و نمیتونه سورس کد شما رو ببینه.
البته حواستون باشه که جاوا تحت هر شرایطی قابل Decompile کردن هست.

javagirl
جمعه 23 آبان 1393, 11:23 صبح
سلام.
بله شما میتونید فایل‌هاتون رو بصورت کامپایل شده بسته‌بندی و منتشر کنید. در اینصورت فقط فایل‌هایی با فرمت class. در اختیار برنامه‌نویس خواهد بود و نمیتونه سورس کد شما رو ببینه.
البته حواستون باشه که جاوا تحت هر شرایطی قابل Decompile کردن هست.

از obfuscation استفاده کنید
برنامه هایی نظیر allatori میتونن کمک کنند
نسخه free این برنامه هم میشه گفت که قابل استفاده هست و نیازی به خرید ورژن کاملش نیست
چون اگر اشتباه نکنم و اون رو با برنامه دیگه ای اشتباه نگرفته باشم، اختلاف این دو نسخه در دو جا محسوس هست:
۱. زمانی که برنامه شما main داشته باشه و ابتداش اطلاعات allatori چاپ خواهد شد (که خب شما کتابخونه دارید و main ندارید)
۲. بعد از دی کامپایل شدن برنامه یک سری متد ها اسمشون مرتبط با allatori تغییر کرده که این هم باز موقع استفاده به چشم نمیاد
http://www.allatori.com/

dasssnj
یک شنبه 25 آبان 1393, 04:53 صبح
از obfuscation استفاده کنید
برنامه هایی نظیر allatori میتونن کمک کنند
نسخه free این برنامه هم میشه گفت که قابل استفاده هست و نیازی به خرید ورژن کاملش نیست
چون اگر اشتباه نکنم و اون رو با برنامه دیگه ای اشتباه نگرفته باشم، اختلاف این دو نسخه در دو جا محسوس هست:
۱. زمانی که برنامه شما main داشته باشه و ابتداش اطلاعات allatori چاپ خواهد شد (که خب شما کتابخونه دارید و main ندارید)
۲. بعد از دی کامپایل شدن برنامه یک سری متد ها اسمشون مرتبط با allatori تغییر کرده که این هم باز موقع استفاده به چشم نمیاد
http://www.allatori.com/

طرز کارش چجوریه ؟ من که نتونستم باش کار کنم .

javagirl
دوشنبه 13 بهمن 1393, 10:44 صبح
با استفاده از Maven میتونید راحت حین build استفاده کنید


<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>running Allatori</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>java</executable>
<arguments>
<argument>-Xms128m</argument>
<argument>-Xmx512m</argument>
<argument>-jar</argument>
<!-- Copy allatori.jar to 'allatori' directory to use the commented line -->
<!--<argument>${basedir}/../../../../lib/allatori.jar</argument>-->
<argument>${basedir}/allatori-5.0/allatori.jar</argument>
<argument>${basedir}/allatori-5.0/allatori.xml</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>replacing original by obfuscated output</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>mv</executable>
<arguments>
<argument>target/${project.build.finalName}-obfuscated.jar</argument>
<argument>target/${project.build.finalName}.jar</argument>
</arguments>
</configuration>
</execution>
</executions>

</plugin>


یک فایل تنظیمات هم داره که میتونید تنظیمات obfuscation مورد نظرتون رو بنویسید


<config>
<jars>
<jar in="../target/[project.build.finalName].jar"
out="../target/[project.build.finalName]-obfuscated.jar"/>
</jars>
<expiry date="2014/12/01" string="!!??!!"/>
<keep-names>
<class access="protected+">
<field access="protected+"/>
<method access="protected+"/>
</class>
</keep-names>
<property name="string-encryption" value="enable"/>
<property name="control-flow-obfuscation" value="enable"/>
<property name="extensive-flow-obfuscation" value="maximum"/>
<classpath basedir="../target/lib">
<jar name="*.jar"/>
</classpath>
</config>

dasssnj
دوشنبه 13 بهمن 1393, 15:14 عصر
بعد از مبهم سازی با allatori زمانی که می خواستم برنامه را اجرا کنم Java VM ارور داد .

javagirl
سه شنبه 14 بهمن 1393, 21:11 عصر
چه خطایی داد ؟
من allatori رو تست کردم حتی به کاربر نهایی هم برنامه رو دادیم و جواب میده
احتمالا یه اشکالی وجود داشته