PDA

View Full Version : سوال: درخواست معرفی قفل نرم افزار و نحوه فروش نرم افزار



gorg313
چهارشنبه 24 تیر 1394, 11:36 صبح
عرض سلام و خسته نباشید خدمت همه

یه نرم افزار نوشته بودم میخواستم بدونم بهترین قفل نرم افزاری که می تونم توش استفاده کنم چیه ؟

من قبلآ از سریال هارد دیسک استفاده میکردم که تو بعضی سیستم ها یکسان هستش

سریال CPU هم که با عوض شدن ویندوز تغییر میکرد


-------------

حالا من واسه فروش نرم افزار چکار باید بکنم ؟ بهترین راه فروش نرم افزار چیه ؟ سریال ساز را کاربر دانلود کنه و بعد هم سریال را تحویل بده ؟

یا خرید آنلاین از طریق خود برنامه ؟ که مشتری سریال را بخره --------- و نرم افزار فعال بشه

-----------

ممنون میشم راهنمایی کنید

vbhamed
چهارشنبه 24 تیر 1394, 19:45 عصر
سلام

قبلا راجع به این موضوعات بحث زیاد شده و بهتره همونها رو بخونید
اما راجع به سریال هارد دیسک که گفتید همچین چیزی نیست که دو تا هارد سریال یکسان داشته باشن مگر اینکه سریال درایو رو گرفته باشید نه هارد
سریال هارد اونی هستش که روی خود هارد چاپ یا حک شده
در نهایت بستگی به میزان امنیتی که برای نرم‌افزارتون نیاز دارید داشته باشه داره، می‌تونید از ترکیب قفل سخت افزاری و نرم‌افزاری به همراه قفل زمانی استفاده کنید یعنی برنامه حتی نسخه اصلی هم در زمان مشخصی منقضی بشه و نیاز به آپدیت داشته باشه البته بدون هیچ هزینه‌ای (چون قصد شما محافظت از نرم افزارتونه نه کلاهبرداری)

در مورد نرم‌افزارهایی که اطلاعات استفاده کننده مهم هستن مثلا حسابداری که طرف باید نام و مشخصات و تلفنش رو حتما به برنامه بده تا آخر فاکتورها چاپ بشه می‌تونید این اطلاعات رو کد کنید و تغییرش دست خودتون باشه، با این کار نرم‌افزار اگر قفل هم نداشته باشه عملا قابل استفاده نیست !

roo.row
چهارشنبه 24 تیر 1394, 20:10 عصر
با سلام

سیستم اصلی به چند بخش تقسیم میشه

شما می خواهید کاربر نرم افزار را بخرد و تنها بر روی سیستم او اجرا شود

در این روش کاربر کد خاصی رو می خره بهترین کار اینه که از کد های چند بخشی استفاده کنید مثلا کد های 16 رقمی که به چهار بخش اند
شما باید چهار تکس باکس تعریف کنی و بگی عدد چهار رقمی تو اولی باید بر 57 بخش پذیر باشه و ... (سعی کنید از اعداد اول بزرگ استفاده کنید)
بعدم به نرم افزار بگید تو یه فایل همراه خودش اون سریال رو باطل کنه و تموم

این راه ایراد داره چون اگه یه نفر بیاد از یه کس دیگه ای بگیره با سریال خودش برنامه رو اجرا میکنه (به همین خاطر هست که همه ی نرم افزار ها از سرور کمک میگیرن)
بهترین راه همینه و سرور میتونه کد رو اتوماتیک تولید کنه چک کنه بین باطل شده ها نباشه و اگه سریالی هم وارد شد که باطل شده بود اون رو تو لیست چک کنه و ارور بده

در ضمن اگه خواستید قابلیتی رو ایجاد کنید که تو اون نرم افزار بارها رو یه سیستم نصب بشه می تونید و یا به تعداد محدود مثلا 10 بار از رجیستری کمک بگیرید
می تونید وقتی نرم افزار باز شد چک کنه رجیستری رو و دیگه صفحه سریال را وارد کنید را نشان نده

(مطمئن ترین راه سرور هست)
می تونید این کار رو بکنید که فوق العاده موثرتره خودم تقریبا یه بار تو پروژم انجام دادم و خوب جواب داد :

یک فایل exe بسازید (با همون ویژوال بیسیک) و اون رو غیر قابل کپی کنید (می تونید قابلیت کپی رو غیر فعال کنید یا بگید هر فایل همنام خودش رو حذف کنه)
حالا داخلش بگید با یه تغییری توی رجیستری انجام بده و یه key اضافه کنه و وقتی انجام داد خودش رو تخریب کنه با دستور kill بعد وقتی برنامه رو اجرا کرد
بیاد رجیستری رو چک کنه (اگه بود باز شه و اگه اون نبود باز نشه)
اگه قراره به تعداد خاص اجرا بشه داخل فایل دوم (فعالساز) یه فایل ini قرار بدید و روی هر کامپیوتر که اجرا شد یه دونه به مقدار داخلش اضافه کنید مثلا رو کامپیوتر من رو رجیستری عدد 1 رو اعمال و رو مال دیگری عدد دو رو خودم یه کار دیگه کردم گفتم روال من z و رو مال دیگری mn باش (بعد لنش رو گرفتم)بعد به برنامه بگید اگه فایل ini 10 شد خودش رو تخریب کنه یا دیگه اجرا نشه
به همین سادگی

حالا شما اگه کسی ازتون خرید کرد بهش اون فایل رو میدید و بقیشم مشخصه

اگه تو کد نویسیش کمک خواستید در خدمتم

موفق باشید

gorg313
چهارشنبه 24 تیر 1394, 21:41 عصر
بابت پاسخ های خوبتون ممنونم ازتون
من خودم الان از طریق خواندن سریال از هاست را استفاده کردم یه کد نوشتم که برنامه اول میره سریال را دریافت میکنه و کاربر سریالی که من بهش میدم تو برنامه ثبت میکنه و وقتی سریال درست هست اجازه دسترسی به برنامه را میده
خوب ایراد کار من، این میشه که برنامه قابل کپی شدن و اجرا شدن تو سیستم های دیگه هست
الان تنها دسترسی من به این هست که کد را از رو هاست حذف کنم برنامه اجرا نشه و خطا بده
طبق گفته دوست خوبم roo.row (http://barnamenevis.org/member.php?355273-roo-row) امکان نوشتن برنامه کمکی در کنار برنامه هست که از کپی شدن برنامه جلوگیری کنه فکر کنم کار پیچیده ای باشه
راه حل خاصی دارید ؟


vbhamed (http://barnamenevis.org/member.php?10624-vbhamed) -- آقا حامد عزیز من الان کدی که نوشتم واسه سریال درست هستش اما یه کم ساده و پیش پا افتاده یه جا مشکل دارم امیدوارم کمکم کنی
نرم افزار وقتی اجرا میشه اول سریال را میخواد - و کاربر سریال را میزنه سه حالت داره - خطا - درست بودن - خالی بودن
خوب وقتی سریال درست هستش من به برنامه تعریف کردم که سریال را در مسیر برنامه سیو کنه

a = از نوع رشته ای استرینگ تعریف کردم


A = App.Path & "\Report.DAT"
Open A For Output As #1
Print #1, Code
Close #1



خوب تا اینجا مشکلی ندارم اما وقتی بارگذاری میکنه همون کد را میده اما تهش یه فاصله میندازه علت موقع ذخیره شدن برنامه هست یا هنگام بارگذاری کد ؟
اینم کد بارگذاری کد


Dim A As String
A = App.Path & "\Report.DAT"
Open A For Binary As #1
Get #1, 1, A
Text1.Text = A
Close #1



---------

در کل این روش من خیلی ایراد داره اما میشه ازش بهترم استفاده کرد
مثلآ الان بخوام نرم افزارو بفروشم کدها را باید تک تک تو هاست اپلود کنم
آیا راهی هست درون یه فایل متنی مثلآ 100 تا سریال تعریف کرد و به کاربرا هر دفعه فقط یه سریال فروخت ؟ :متفکر:

roo.row
پنج شنبه 25 تیر 1394, 16:07 عصر
با سلام خدمت شما
1. چرا سریال رو در رجیستری ذخیره نمی کنید تا با کپی برنامه باهاش نره

2.راه خیلی بهتر این هستش که شما به جای کد سریال بعد از خرید به هر کاربر یه فایل با پسوند dat. یا یه چیز عجیب دیگه ای نمی دید
که کار بر اون رو به برنامه معرفی کنه و برنامه (برای این که غیر قابل درک بشه واسه کاربر (طریقه فعالسازی)از خط 56 ، 10 پارامتر اول سریال رو چک کنه
و بعد ok بده و بعد تغییر رو تو رجیستری اعمل کنه و اون فیل فعالساز رو حذف کنه(تقریبا آسون ترین روش در عین حال مطمئن ترین روش هست(آفلاین))

3.درباره چیزی که نوشتید هم باید گفت که شما می تونید لن اون فایل رو بگیرید (مثلا اگه بیشتر از 10 بود بقیه رو حذف کنه یا میتونید اون رو توی تکس باکس
با مکس لنگس 10 که خاصیت ویزیبل ترو هست بریزید که خودش بقیه رو پاک کنه(همون فاصله)یا میتونید اینجا از اسپلیت استفاده کنید (split)

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

در ضمن سریال را در محل نصب نرم افزار سیو نکنید یا حداقل اون رو با توابع ریاضی یکم بهم بریزید و موقع باز کردن درستش کنید
ایراد هم در ذخیره کردن می باشد

5--برای غیر قابل کپی کردن باید فایل تولید شده رو از فایل های اصلی ویندوز جلوه بدید با دستورattrib به این صورت
Shell "attrib +s +a c:\myfile.exe"





با تشکر
موفق باشید

علیرضا5
پنج شنبه 25 تیر 1394, 16:45 عصر
با سلام من از روش هایی که دوستان گفتن زیاد سر در نمیارم ولی خودم از یه روش آسان و به نظرم مناسب استفاده می کنم که بدم نمیاد دوستان این روش رو هم تفسیر کنن
به این شکل که بر اساس یک پارامتر مشخص مثل تعداد ردیف در دیتاگرید (یا هرچیز دیگه که این کاملا ابتکاری باید باشه)محدودیت وارد کردن کد امنیتی رو می گذارم مثلا بعد ا ز 30 ردیف اطلاعات در دیتا گرید دیگه ذخیره نمیشه و کاربر باید کد امنیتی رو دو فرمی که باز میشه وارد بکنه تا بتونه ردیف 30 رو رد بکنه
اما برای اینکه این کد در سیستم های مختلف یکسان نباشه خود نرم افزار یک عدد تصادفی رو انتخاب می کنه و به کاربر اعلام می کنه که این کد رو برای من ارسال بکنه که کد امنیتی الگوریتمی از عدد تصادفی هست که فقط من و نرم افزار میدونیم اون الگوریتم چیه
بنابر این از اون جایی که الگوریتم بر اساس یک عدد تصادفیه پس کد امنیتی هم در سیستمهای مختلف - عدد مختلفیه

gorg313
پنج شنبه 25 تیر 1394, 19:08 عصر
با سلام خدمت شما
1. چرا سریال رو در رجیستری ذخیره نمی کنید تا با کپی برنامه باهاش نره


5--برای غیر قابل کپی کردن باید فایل تولید شده رو از فایل های اصلی ویندوز جلوه بدید با دستورattrib به این صورت
Shell "attrib +s +a c:\myfile.exe"






سلام ممنونم از توضیحات خوب و مفیدتون واسه رمز من len() را در نظر گرفتم 11 تا بود maxlenght را مساوی 11 کردم حل شد این مشکلم
من تا حالا با ریجستری کار نکردم سخته واسم می ترسم بهم بریزه و غیره ... ولی میدونم بهترین روشه
الان که بالا من اون رمز را آوردم فراخوندم اینه که کاربر اولین خودش باید سریال وارد کنه اشتباه بزنه این مراحل نمیاد براش و نرم افزار کار نمیکنه الان من سریال را زدم درسته وقتی برنامه را اجرا میکنم دوباره باز میاد سریال را چک میکنه
خیلی تلاش کردم اینو به صورت یه باره استفاده کنم یعنی کاربر یه بار فقط سریالو بزنه اینکه سریال تو مسیر برنامه سیو میشه واسه خاطر اونه حالا اونو میشه آخر کار به جای دیگه انتقال داد مشکل نداره

من الان که فکر میکنم بهتره من تو هاست داخل فایل نت پد یه 100 تا لیست پسورد 11 حروفی ایجاد کنم که تک تک نرم افزار ویرایش نکنم بدم به کاربرا و فقط سریال مثل زیر

wwerf45633N
wwerf45634N
wwerf45635N
wwerf45636N
wwerf45637N
wwerf45638N

ولی الان سریال فقط 1 دونه هست واسه این به مشکل خودم خودم میگم اول بیاد این لیستو بریزه تو لیست بعد کاربر سریال را وارد کنه برنامه سریال را با لیست مقایسه کنه و جواب بده

سریال اگه عدد باشه فقط راحت برنامه میشه نوشت براش
اما حروف باشه فرقی میکنه
به نظرتون می تونه خوب باشه ؟ اگه بشه تعداد آنلاین یه کد را به دست آورد عالی میشه ! (یعنی واسه یه کد یه صفحه اینترنتی بسازم یه کد آمارگیر بنویسم - تعداد آنلاین را درون یه نرم افزار مادر مشاهده کنم کد + تعداد آنلاین تو اون صفحه اینترنتی باشه فقط http://barnamenevis.org/images/smilies/yahoo/109.gif

با تشکر
موفق باشید




بنابر این از اون جایی که الگوریتم بر اساس یک عدد تصادفیه پس کد امنیتی هم در سیستمهای مختلف - عدد مختلفیه

سلام علی جان مرسی بابت کمکت من قبلآ تقرِیبآ مثل این روش را جلو رفتم
من رو روشی که دارم کار میکنم میخوام واسه کل نرم افزاری که نوشتم پیاده کنم ♥

vbhamed
پنج شنبه 25 تیر 1394, 23:22 عصر
سلام

همونطور که قبلا گفتم بهتره تاپیکهایی که قبلا در این مورد بحث شده رو بخونید

شما نمی‌تونید انتظار داشته باشید کاربر همیشه به اینترنت دسترسی داشته باشه تا قفل برنامتون چک بشه
تازه اگرم اینطوری باشه ممکنه به هر دلیلی هاست شما از کار بیفته و تا درست بشه کاربران دیگه برنامه ندارن و در عمل چنین چیزی مشکل سازه

بهترین راه همونهایی هست که تو پست شماره 2 گفتم

m.4.r.m
جمعه 26 تیر 1394, 11:58 صبح
به جای این کارا اگه امنیت برنامه برات مهمه از قفل سخت افزاری استفاده کن. بلد نبودی من میتونم کمکت کنم

gorg313
جمعه 26 تیر 1394, 13:56 عصر
سلام

همونطور که قبلا گفتم بهتره تاپیکهایی که قبلا در این مورد بحث شده رو بخونید





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

WD-WCAW31731500
6RY7S5RC
6RY7S5RC


سریال ها به صورت بالا بودن گاهی اوقات یکسان بودن سورس کد را درون یه فایل نوت پد براتون ضمیمه میکنم نگاه کنید بگید اگه سریال هارد نبوده پس چی هستش؟


شما نمی‌تونید انتظار داشته باشید کاربر همیشه به اینترنت دسترسی داشته باشه تا قفل برنامتون چک بشه

خوب این نرم افزار کارش اینترنت هست یعنی اینترنت نباشه به هیچ وجه به درد نمیخوره - به خاطر همین میخوام سریال به صورت آنلاین باشه
در کل این نرم افزار برای تولید کلمات کلیدی تولید شد - که الان برای سئو می تونه عالی باشه - ایراداتی هم داره که میخوام روش کار کنم تکمیل بشه


به جای این کارا اگه امنیت برنامه برات مهمه از قفل سخت افزاری استفاده کن. بلد نبودی من میتونم کمکت کنم

سلام خوب شما میگید من از کدوم قفل سخت افزاری استفاده کنم و چجور پیاده سازی کنم ؟

roo.row
جمعه 26 تیر 1394, 16:10 عصر
با سلام

برای اموزش رجیستری اون رو در جستجو می تونید پیدا کنید اگرم نتونستید بگید خودم در خدمتتونم

در ضمن قفل های سخت افزاری تنها بر روی cd و فلش اعمال می شوند (قفل فلش(باید به یه شرکت سفارشش بدید که اگر کمتر از 100 تا هم سفارش بدید
دونه ای 50 تومن چهار گیگش هست)(قفل روی Cd هم دسگاه می خواد حدود پنج میلیون تومن و اگرم به بیرون بدید دونه ای 30 تومن میگیرن


با سلام من از روش هایی که دوستان گفتن زیاد سر در نمیارم ولی خودم از یه روش آسان و به نظرم مناسب استفاده می کنم که بدم نمیاد دوستان این روش رو هم تفسیر کنن
به این شکل که بر اساس یک پارامتر مشخص مثل تعداد ردیف در دیتاگرید (یا هرچیز دیگه که این کاملا ابتکاری باید باشه)محدودیت وارد کردن کد امنیتی رو می گذارم مثلا بعد ا ز 30 ردیف اطلاعات در دیتا گرید دیگه ذخیره نمیشه و کاربر باید کد امنیتی رو دو فرمی که باز میشه وارد بکنه تا بتونه ردیف 30 رو رد بکنه
اما برای اینکه این کد در سیستم های مختلف یکسان نباشه خود نرم افزار یک عدد تصادفی رو انتخاب می کنه و به کاربر اعلام می کنه که این کد رو برای من ارسال بکنه که کد امنیتی الگوریتمی از عدد تصادفی هست که فقط من و نرم افزار میدونیم اون الگوریتم چیه
بنابر این از اون جایی که الگوریتم بر اساس یک عدد تصادفیه پس کد امنیتی هم در سیستمهای مختلف - عدد مختلفیه

اگرم این کارو بکنید می شه برای برنامتون خیلی ساده کیجن ساخت

با تشکر

vbhamed
شنبه 27 تیر 1394, 14:57 عصر
سلام

این هم بار سوم، پس از کلی کار کردن با قفلهای مختلف راه نسبتا امن رو بهتون گفتم
استفاده از تنها یک قفل اصلا امنیت لازم رو نداره مخصوصا برخلاف چیزی که شاید تصور بشه امنیت قفل سخت افزاری خیلی پایینتره، حتی کرکر شاید نیاز به داشتن برنامه شما نداشته باشه و همینکه بدونه چه قفلی دارید می‌تونه یک شبیه ساز قفل برا برنامتون درست کنه

تازه بعد از همه این موارد و انتخاب چند نوع قفل، نحوه استفاده از اون در برنامه بسیار حائز اهمیته و اگر به خوبی استفاده نشه هیچ فایده‌ای نداره

gorg313
دوشنبه 29 تیر 1394, 15:23 عصر
سلام چون برنامه تحت اینترنت بود همین روش خودمو جلو رفتم
1 - لیست از پسورد ها را درست کردم مطابق با سریال هارد و درون هاست آپلود کردم
2 - سریال ها را برنامه ابتدا لود میکنه و سپس سریالی که کاربر وارد میکنه را با هم مقایسه میکنه و اگه سریال درست باشه و با سریال هارد یکسان برنامه را نشون میده

ساده اما پیچیده - اگه کاربر سریال را درست هم بزنه و اما سریال تو هاست نباشه برنامه اجرا نمیشه .
یعنی این سریال از دو جهت بررسی میشه به نظرم خیلی خوب هستش .


الان به یه مشکل خوردم نتونستم حل کنم
وقتی کاربر سریال را میزنه و درست هستش سریال ذخیره میشه و دوباره کاربر برنامه را که اجرا میکنه سریال زده شده براش لود میشه یه مشکل کوچیک این وسط دارم که بعد از حروف سریال دو تا
کارکتر نامشخص تولید میکنه
با maxlength هم نمیشه کاری کرد چون سریال ها len() های مختلفی دارن با اسپلیت(split) هم نتونستم
من پروژه را ضمیمه کردم واسه همین مورد یه نگاه بندازید .

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


If Text1.Text = Code2. And Text1.Text = q Then


q= سریال سخت افزار هستش
code2 = سریال سخت افزاری هستش که تو هاست من درج کردم

دوتا را با هم بررسی میکنه آیا And درسته هستش واسه مقایسه ؟

vbhamed
دوشنبه 29 تیر 1394, 18:04 عصر
سلام

برنامتون رو هنوز ندیدم ولی یکی از مسائل مهم نحوه چک کردن قفله
وقتی شما از دستور if استفاده می‌کنی کرکر راحت می‌تونه تو اسمبلی برنامه اون شرط رو معکوس کنه و این یعنی برنامتون فقط وقتی قفلش درست باشه کار نمی‌کنه و در بقیه موارد اجرا میشه !

meys34
سه شنبه 30 تیر 1394, 19:41 عصر
الان به یه مشکل خوردم نتونستم حل کنم
وقتی کاربر سریال را میزنه و درست هستش سریال ذخیره میشه و دوباره کاربر برنامه را که اجرا میکنه سریال زده شده براش لود میشه یه مشکل کوچیک این وسط دارم که بعد از حروف سریال دو تا کارکتر نامشخص تولید میکنه

سلام

دستور Print بعد از کاراکتر ها، خودش VbNewLine رو هم اضافه می کنه به طور خودکار ....

اون دوتا کاراکتری که گفتی همینه و
وظیفه شون اینه که انتهای خط رو مشخص میکنه...

که با دستور Replace$(A, vbNewLine, "") حذفش میکنیم...


البته اصولی تر اینه که اگر از Print برای نوشتن استفاده میکنید از دستور Input هم برای خوندن استفاده کنید...
ولی Binary دردسر های ارور موجود نبودن فایل و ... رو نداره...

Private Sub Form_Load()

Dim A As String

A = App.Path & "\Report.DAT"

Open A For Binary As #1

Get #1, , A

Text2.Text = Replace$(A, vbNewLine, "")


Close #1

End Sub



نکته مهم و اساسی همون مطلب حامد هست....

مشکل اینجاست که بدون دستکاری زیاد توی برنامه شما میشه اونو به راحتی کرک کرد...

هر if که استفاده میکنید (حتی اگر 100 تا باشه) به راحتی توی نرمافزار های کرک قابل دور زدنه... همون طور که حامد گفت...

من خیلی تجربه زیادی تو این زمینه ندارم ولی باید تدابیر درست حسابی داشته باشی
وگرنه یه روز بعد نرمافزارتون توی نت کرک شده پیدا میشه...

olly debugger رو توی آپارات سرچ کن و فیلم آموزشی رو ببیند...

gorg313
چهارشنبه 31 تیر 1394, 15:49 عصر
سلام میثم جان بابت پاسخت ممنون

در مورد دستور IF کرک شدن نرم افزار خوب اگه دستور IF به راحتی کرک میشه من از چه کدی استفاده کنم . از دستور Select Case هم استفاده کنم همون اتفاق می افته
من قبلآ یه برنامه نوشته بودم که برای برنامه یه بدل می ساخت . یعنی دو فرم یکسان با کار یکسان و دستورات یکسان -
روش کارش اینطور بود که برنامه اصلی را اجرا میکردی بدل هم اجرا میشد اگه بدل را END PROCESS میکردی برنامه اصلی هم از کار می افتاد - یه جور حافظه واسه حفظ اشیاء و کدها بود
یعنی یه روش که برنامه های کرک و کرکر را هم دچار مشکل و خطا میکرد - امنیت 70 درصد تقریبآ داشت

اما متاسفانه چند تا ایراد داشت یکی اینکه فقط باید تو برنامه یک فرم استفاده میکردیم
دوم اینکه واسه برنامه های سنگین اصلآ مناسب نبود

راه حل شما واسه جلوگیری از کرک شدن برنامه چیه ؟(مقاله یا توضیحات):لبخند:

vbhamed
چهارشنبه 31 تیر 1394, 18:26 عصر
سلام
فرض کنید یک رشته دارید به نام dbname که توش مسیر بانک اطلاعاتی برنامه نوشته میشه، حالا قراره قفل رو چک کنید
طبق حالت فعلی می‌نویسید
if text1 = code then
.
'کدهای اجرای برنامه
.

به جاش این کد ها رو بنویسید
Dim db$, p%, L%

db = App.Path & "\test.mdb"

L = Abs(Len(text1) - Len(code))

p = InStr(code, text1)

dbname = Mid$(db, 1 + L, 1000 * p)

اتفاقی که میفته اینه :
db برابر نام و مسیر دیتابیس میشه
اختلاف طول کد وارد شده توسط کاربر و طول کد صحیح در متغیر L ذخیره میشه
اگر کد وارد شده کاربر برابر متغیر Code یعنی کد صحیح باشه مقدار p برابر 1 و در غیر اینصورت برابر 0 میشه، دقت کنید اینکار بدون دستور شرطی انجام شده

اگر مقدار وارد شده در textbox برابر code نباشه p=0 میشه و تابع mid رشته پوچ رو برمی‌گردونه چون عدد 1000 * 0 میشه صفر و این یعنی متغیر dbname برابر پوچ میشه

از طرفی اگر طول text برابر طول کد نباشه تابع mid رشته حاوی دیتابیس رو از وسطش برش میده

در هر صورت ما بدون استفاده از دستور if تونستیم رشته حاوی نام دیتابیس برنامه رو تخریب کنیم و حتی دیگه نیاز به دادن پیام برای کد اشتباه هم نداریم (در عمل هم به شدت توصیه میشه همچین پیامی ندین چون کمک بزرگی به ک.رکر می‌کنید)

وقتی که رشته حاوی نام دیتابیس برنامه بر اثر ورود کد اشتباه خراب بشه دیگه برنامه درست کار نمی‌کنه

البته این فقط یک حالت بود و با استفاده از این روش و استفاده از اون در جاهای مختلف کد و به روشهای مختلف دیگه می‌تونید کار ک.رکر رو خیلی خیلی سخت کنید

gorg313
شنبه 03 مرداد 1394, 22:16 عصر
سلام حامد جان بابت پاسخت مرسی
چند تا مشکل در کد نویسی برام پیش اومده ممنون میشم راهنمایی کنی
تو برنامه موقع اجرا وقتی کدها اجرا میشن چند تا مشکل برام پیش میاد
مثلآ واسه ایجاد کد زیر


</h1>برنامه نویسی<h1>

خوب ظاهرش ساده هستش اما واسه تولید این مقدار چندین مراحل طی شده
به صورت مثل چون اکثرآ کدهای ایجاد کننده تگ برنامه نویس متغیر و پیش بینی نشده هستن به مشکل خوردم به کد زیر توجه کن


Dim J As Integer
For J = 0 To WebBrowser1.Document.links.Length - 1
Text2.Text = Text2.Text & Text10 & J & Text11.Text & WebBrowser1.Document.links.Item(J).innerText & Text12.Text & J & Text13.Text


خوب کد زیاد بودش نذاشتم براتون همشو الان تا اینجا همه چی درسته اما موقع تولید نتیجه به چند تا مشکل خوردم
بعضی از نتیجه ها به صورت خالی هست


</h51><h51>

با دستور Replace هر چقدر تلاش کردم به جواب نرسیدم


Text2.Text = Replace(Text2.Text, Text10 & J & Text11.Text & "" & Text12.Text & J & Text13.Text, Text10 & J & Text11.Text & "" & Text12.Text & J & Text13.Text, "")


الان اینجا کد میاد ابتدا کد اولیه را می نویسه سپس J عدد نامعلوم را بهش اضافه میکنه مثل مرحله تولید میگه اگه خالی بود پاکش کنه
ممنون میشم کمک کنی
2- یه سوال دیگه هم داشتم اینکه سه تا چک لیست داریم خوب کاربر ممکنه یه بار سه تا شو فعال کنه یه بار دوتا یه بارم یکی را چجور براش کد تعریف کنم که این مسئله را چک کنه ؟ :متفکر:

vbhamed
یک شنبه 04 مرداد 1394, 08:38 صبح
سلام

خب وقتی یک مورد خالی است اصلا چرا ایجادش می‌کنین که حالا بخواین حذفش کنین
Dim j As Integer, s$

For j = 0 To WebBrowser1.Document.links.Length - 1
s = WebBrowser1.Document.links.Item(j).innerText
If Trim$(s) <> "" Then Text2 = Text2 & Text10 & CStr(j) & Text11 & s & Text12 & CStr(j) & Text13
Next

سؤال دومتون نامفهومه، این چک باکس ها کارشون چیه و چی رو می‌خواین چک کنین یعنی اینکه اگر مثلا چک باکس 2 و 3 انتخاب شده بود چه اتفاقی بیفته ؟

gorg313
یک شنبه 04 مرداد 1394, 13:42 عصر
سلام بابت پاسخ مرسی ولی ما بعضی کلمه ها را داریم تو گوگل ثابت هستن و زائد مثل صفحه اصلی و صفحه بعدی و ...
و تولید میشن و خالی نمی مونن اما پیچیدگی کد ذکر شده در بالا کارمو سخت کرده و باید ریپلس کنم این کد هم که شما نوشتی تست کردم موقع تولید کارکتر جواب نگرفتم بازم تولید میکنه

<h57></h57>,<h58></h58>,<h59>1</h59>,<h60>3</h60>,<h61>4</h61>,<h62>5</h62>,<h63>6</h63>,<h64>7</h64>,<h65>8</h65>,<h66>9</h66>,<h67>10</h67>,<h68>11</h68>
سوال دومم بیخیال حل شد .
به نظرتون اینو چه کار کنم متغیر جدید تولید عدد تو دکمه جدید بنویسم براش واسه حذف این بند های خالی:متفکر:

vbhamed
یک شنبه 04 مرداد 1394, 19:50 عصر
سلام

شما یک تیکه کد رو اینجا گذاشتید، اینطوری نمیشه دقیق اصلاحش کرد، باید برنامه کاملتری بزارید که بدونیم چی به چیه، مقادیر text ها و مقادیری که از وب بدست میاد همه مشخص باشن

gorg313
یک شنبه 29 شهریور 1394, 11:14 صبح
بچه ها این کد قفل سخت افزاری دقیقآ ماله چی هست؟
من تو ویندوز 8 اجرا کردم خالی میاد

http://barnamenevis.org/images/attach/rar.gif SR HARD.rar (http://barnamenevis.org/attachment.php?attachmentid=133342&d=1437126977)

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

vbhamed
یک شنبه 29 شهریور 1394, 12:12 عصر
سلام

این کدی که شما نوشتید از قدیمیترین و غیر قابل اعتماد ترین کدهای دریافت سریال هارد دیسک هستش
ویندوز 8 که هیچ، تو هر ویندوزی تو حالت یوزر هم جواب نمیده

به دنبال GetDiskSeriall.dll جستجو کنید

Mahban
شنبه 03 تیر 1396, 13:07 عصر
سلام

قبلا راجع به این موضوعات بحث زیاد شده و بهتره همونها رو بخونید
اما راجع به سریال هارد دیسک که گفتید همچین چیزی نیست که دو تا هارد سریال یکسان داشته باشن مگر اینکه سریال درایو رو گرفته باشید نه هارد
سریال هارد اونی هستش که روی خود هارد چاپ یا حک شده
در نهایت بستگی به میزان امنیتی که برای نرم‌افزارتون نیاز دارید داشته باشه داره، می‌تونید از ترکیب قفل سخت افزاری و نرم‌افزاری به همراه قفل زمانی استفاده کنید یعنی برنامه حتی نسخه اصلی هم در زمان مشخصی منقضی بشه و نیاز به آپدیت داشته باشه البته بدون هیچ هزینه‌ای (چون قصد شما محافظت از نرم افزارتونه نه کلاهبرداری)

در مورد نرم‌افزارهایی که اطلاعات استفاده کننده مهم هستن مثلا حسابداری که طرف باید نام و مشخصات و تلفنش رو حتما به برنامه بده تا آخر فاکتورها چاپ بشه می‌تونید این اطلاعات رو کد کنید و تغییرش دست خودتون باشه، با این کار نرم‌افزار اگر قفل هم نداشته باشه عملا قابل استفاده نیست !


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