ورود

View Full Version : گفتگو: نا بلد، چه بکند؟



hasanain
دوشنبه 03 تیر 1387, 09:22 صبح
از دوستانی که وارد بدین مسائل هستند، سؤال مشاوره ای دارم: برنامه نویسی که از کرک و دیباگ و ... به صورت حرفه ای سر در نمی آورد؛ جهت تأمین امنیت برنامه اش چه باید بکند؟ اگر در این زمینه مؤسسه ای هست یا سایت یا ... لطفاً معرفی بفرمایید.

چرا که صرف استفاده از قفلهای موجود، یقیناً کافی نیست.

بنده خودم همین مشکل را دارم.

با تشکر

HadiDelphi
دوشنبه 03 تیر 1387, 09:39 صبح
کتاب "Crack و تکنیک های نفوذ به نرم افزار" رو از انتشارات ناقوس تهیه کن به دردت می خوره

hasanain
دوشنبه 03 تیر 1387, 09:50 صبح
ضمن تشکر از نظر جناب HadiDelphi
آیــــــــا:
با صرف مطالعه کتاب مذکور، میتوان امنیت برنامه را به تنهایی و بدون کمک گرفتن از کرکرها تأمین کرد؟
من پس از مطالعه آن کتاب تازه میرسم به ابتدای راه. حال آنکه هم اکنون میخواهم امنیت برنامه آماده فروشم را تأمین کنم!

Nima NT
دوشنبه 03 تیر 1387, 19:48 عصر
مسلما" انتظاری که از مطالعه کتاب فوق دارید برآورده نخواهد شد , چراکه کتاب فوق در واقع الفبای کرکینگ نرم افزار است , بعد از مطالعه کتاب فوق الذکر حتما" بایستی اقدام به کرک نمودن یک سری از برنامه های موسوم به Crackme نمائید تا تجربه ابتدائی در امر کرک را کسب نمائید پس از آن و با بیشتر شدن تجربه شما در نهایت پی به شیوهایی که می تواند باعث افزایش امنیت نرم افزار شما شود خواهید برد.
لازم به ذکر است که شما با اعلام نوع نرم افزارخود اعم از حسابداری , مال , سیستمی بودن آن و زبان برنامه نویسی مورد استفاده مسلما" از راهنمائی های دوستان استفاده خواهید نمود
( به کلام ساده تر : نوع نرم افزارت رو بگو تا شاید بتونیم کمکت کنیم که چی کار کنی که برنامت به این زودی ها کرک نشه :-) .)

Mehdi Asgari
دوشنبه 03 تیر 1387, 23:52 عصر
شرکت های مشاوره و تامین امنیت نرم افزار وجود دارند.
بیشتر توضیح بدید ، تا اگه نیاز شد ، یه شرکت بهتون معرفی کنم

hasanain
سه شنبه 04 تیر 1387, 00:01 صبح
با تشکر از جناب Nima NT
برنامه ام: حسابداری، زبان VB6، قفل سخت افزاری Sentinel از شرکت SafeNet


Components 36
Modules 15
Classes 2
Forms 11
User Controls 7

Code Lines 70,403
Comment Lines 6,850
Blank Lines 4,872

Total Code Lines 82,125

جناب mehdi311ggg عزیز. نمیدانم چه توضیحی مد نظرتان هست. اتفاقاً بیشتر ذهنیتم هم روی چنین شرکتهایی بود که چه خوب است اینجا یا حتی در قالب تاپیکی مجزا معرفی شوند.

smile17
سه شنبه 04 تیر 1387, 00:19 صبح
اولا استفاده از قفل كه براش تا يه جايي جواب ميده
به نظر من بهترين روش جهت ارتقاي امنيت برنامه استفاده از ماجول ها و كد هايي هست كه امنيت اونها تست شده و يا اين كه حداقل در سطح بالايي از امنيت قرار دارن مثل استفاده از .net در توليد نرم افزار.

ضمنا كپي رايت يه فرهنگ هستش...قفل ها هر چه قدر هم كه ايمن باشد سرانجام روزي شكسته مي شوند

Nima NT
سه شنبه 04 تیر 1387, 13:52 عصر
با سلامی دوباره , قفل سخت افزاری که ازش استفاده کردی تا 50 درصد کار کرکر رو سخت می کنه ولی این همه چیز نیست , به نظر من در کنار اون حتما" از یه سیستم قفل تلفنی هم استفاده کن که برنامت در اجرا نیاز به اکتیو شدن داشته باشه , خوب حالا چند تا حقه برات معرفی می کنم که شماید به دردت بخوره :
اول اینکه بیا قفل رو تو چند قسمت چک کن , مثلا" من برنامه شما رو خریدم و ثبتش هم کردم , حالا می خوام برنامه رو اجرا کنم بیا یه بار تو اجرای برنامه , یه بار تو باز کردن حساب مشتری و ..... قفل رو جداگانه چک کن اگه می گم جداگانه به این خاطره که همه چک کردن ها رو به یک تابع پاس نده , توابع چک کردن رو از اول تو هر قسمت بنویس , یه شیوه جالبی هم که وجود داره اینه که بیای تو اجرای برنامه تاریخ فعلی سیستم رو یه جایی ذخیره کنی ( مثلا" به صورت کد شده تو رجیستری ویندوز ) , تو برنامت تعریف کن که با گذشت مثلا" 30 روز از تاریخ درج شده تو رجیستری یه بار دیگه قفل نرم افزاری با متدی جدید فعال بشه تا کاربر مجبور بشه دوباره کد فعالسازی دریافت کنه ( یادت باشه کرکر نباید از این مطلب باخبر بشه ! ) با این کار اگه برنامت کرک هم بشه توی بازار استفاده نمیشه , چون اول از همه کرکی که برنامه رو توزیع میکنه با این اشتباده زیر سوال می ره بعدشم این که کسی به برنامه کرک شده اعتماد نمی کنه , روش جالب تری هم که وجود داره استفاده از کنترل های Runtime هست , مثلا" بیا برای چک کردن قفل در مدت زمانی که برنامت در حال اجرا هست به صورت Runtime تایمر ایجاد کن و مسئولش کن که قفل رو چک کنه , تا مبادا برنامه با کد فعالسازی غیر معتبر لود شده باشه , در ضمن برای جلوگیری از Keygen شدن برنامت حتما" از الگوریتم RSA برای تولید کد فعالسازی استفاده کن , آخر سر هم از یه پروتکتور خوب استفاده کن و به خدا توکل کن.
اگه توضیحاتم نامفهوم بود بگین بیشتر تر توضیح بدم.

دنیای دلفی
سه شنبه 04 تیر 1387, 14:08 عصر
افزوده بر مطالب ذكر شده :
چك CRC در حالت RunTime از جافظه لود شده در RAM بسيار مفيد است .

hasanain
چهارشنبه 05 تیر 1387, 05:17 صبح
در ضمن برای جلوگیری از Keygen شدن برنامت حتما" از الگوریتم RSA برای تولید کد فعالسازی استفاده کن , آخر سر هم از یه پروتکتور خوب استفاده کن


اولاً یک دنیا ممنون از شما و جناب دنیای دلفی که حوصله کردین و جواب دادین.

ممنون میشم که یه پروتکتور خوب معرفی بفرمایین. من خودم الآن از روش Shell که همراه با قفل سخت افزاری عرضه میشود، استفاده کردم با 5 لایه. و فایلهای دیتابیس را هم با استفاده از همین روش رمزنگاری کردم تا فقط با برنامه اجرایی خودم کار کند. اگر بخواهم از پروتکتور استفاده کنم آیا باید روش Shell رو بیخیال بشم؟

و دیگر اینکه از کجا دو مطلب RSA و CRC را یاد بگیرم تا به کار ببندم. آیا با مطالعه آن کتاب انشارات ناقوس، حل میشه؟

باز هم ممنون

Nima NT
چهارشنبه 05 تیر 1387, 10:51 صبح
در مورد دو مطلب فوق هم میتونی تو همین سایت دنبالش بگردی هم تو گوگل , سراغ کتاب نرو توش در این مورد چیزی نیست , مطمئن باش مطالب زیادی گیر میاری.
Search کن.

hasanain
یک شنبه 30 تیر 1387, 05:56 صبح
با تشکر از دوستانی که راهنماییهای مفیدی ارائه کردند.
من درباره CRC خیلی سرچ کردم اما متأسفانه نتوانستم بفهمم که چگونه میتوان به دستش آورد. ممنون میشم اگه راهنمایی بفرمایید. سرچ کردن حرفه ای ها با ما کم تجربه ها خیلی متفاوت است.
من با vb6 برنامه نوشته ام. اصلاً در این برنامه میتوان از CRC استفاده کرد؟ چگونه؟

HadiDelphi
یک شنبه 30 تیر 1387, 08:32 صبح
unit CRC32;
interface
procedure CRC32Next(P: Pointer; const ByteCount: Cardinal; var CRC32Value: Cardinal);
procedure CRC32Full(P: Pointer; const ByteCount: Cardinal; var CRC32Value: Cardinal);
implementation
const
CRC32Table: array[0..255] of Cardinal =
($00000000, $77073096, $EE0E612C, $990951BA,
$076DC419, $706AF48F, $E963A535, $9E6495A3,
$0EDB8832, $79DCB8A4, $E0D5E91E, $97D2D988,
$09B64C2B, $7EB17CBD, $E7B82D07, $90BF1D91,
$1DB71064, $6AB020F2, $F3B97148, $84BE41DE,
$1ADAD47D, $6DDDE4EB, $F4D4B551, $83D385C7,
$136C9856, $646BA8C0, $FD62F97A, $8A65C9EC,
$14015C4F, $63066CD9, $FA0F3D63, $8D080DF5,
$3B6E20C8, $4C69105E, $D56041E4, $A2677172,
$3C03E4D1, $4B04D447, $D20D85FD, $A50AB56B,
$35B5A8FA, $42B2986C, $DBBBC9D6, $ACBCF940,
$32D86CE3, $45DF5C75, $DCD60DCF, $ABD13D59,
$26D930AC, $51DE003A, $C8D75180, $BFD06116,
$21B4F4B5, $56B3C423, $CFBA9599, $B8BDA50F,
$2802B89E, $5F058808, $C60CD9B2, $B10BE924,
$2F6F7C87, $58684C11, $C1611DAB, $B6662D3D,
$76DC4190, $01DB7106, $98D220BC, $EFD5102A,
$71B18589, $06B6B51F, $9FBFE4A5, $E8B8D433,
$7807C9A2, $0F00F934, $9609A88E, $E10E9818,
$7F6A0DBB, $086D3D2D, $91646C97, $E6635C01,
$6B6B51F4, $1C6C6162, $856530D8, $F262004E,
$6C0695ED, $1B01A57B, $8208F4C1, $F50FC457,
$65B0D9C6, $12B7E950, $8BBEB8EA, $FCB9887C,
$62DD1DDF, $15DA2D49, $8CD37CF3, $FBD44C65,
$4DB26158, $3AB551CE, $A3BC0074, $D4BB30E2,
$4ADFA541, $3DD895D7, $A4D1C46D, $D3D6F4FB,
$4369E96A, $346ED9FC, $AD678846, $DA60B8D0,
$44042D73, $33031DE5, $AA0A4C5F, $DD0D7CC9,
$5005713C, $270241AA, $BE0B1010, $C90C2086,
$5768B525, $206F85B3, $B966D409, $CE61E49F,
$5EDEF90E, $29D9C998, $B0D09822, $C7D7A8B4,
$59B33D17, $2EB40D81, $B7BD5C3B, $C0BA6CAD,
$EDB88320, $9ABFB3B6, $03B6E20C, $74B1D29A,
$EAD54739, $9DD277AF, $04DB2615, $73DC1683,
$E3630B12, $94643B84, $0D6D6A3E, $7A6A5AA8,
$E40ECF0B, $9309FF9D, $0A00AE27, $7D079EB1,
$F00F9344, $8708A3D2, $1E01F268, $6906C2FE,
$F762575D, $806567CB, $196C3671, $6E6B06E7,
$FED41B76, $89D32BE0, $10DA7A5A, $67DD4ACC,
$F9B9DF6F, $8EBEEFF9, $17B7BE43, $60B08ED5,
$D6D6A3E8, $A1D1937E, $38D8C2C4, $4FDFF252,
$D1BB67F1, $A6BC5767, $3FB506DD, $48B2364B,
$D80D2BDA, $AF0A1B4C, $36034AF6, $41047A60,
$DF60EFC3, $A867DF55, $316E8EEF, $4669BE79,
$CB61B38C, $BC66831A, $256FD2A0, $5268E236,
$CC0C7795, $BB0B4703, $220216B9, $5505262F,
$C5BA3BBE, $B2BD0B28, $2BB45A92, $5CB36A04,
$C2D7FFA7, $B5D0CF31, $2CD99E8B, $5BDEAE1D,
$9B64C2B0, $EC63F226, $756AA39C, $026D930A,
$9C0906A9, $EB0E363F, $72076785, $05005713,
$95BF4A82, $E2B87A14, $7BB12BAE, $0CB61B38,
$92D28E9B, $E5D5BE0D, $7CDCEFB7, $0BDBDF21,
$86D3D2D4, $F1D4E242, $68DDB3F8, $1FDA836E,
$81BE16CD, $F6B9265B, $6FB077E1, $18B74777,
$88085AE6, $FF0F6A70, $66063BCA, $11010B5C,
$8F659EFF, $F862AE69, $616BFFD3, $166CCF45,
$A00AE278, $D70DD2EE, $4E048354, $3903B3C2,
$A7672661, $D06016F7, $4969474D, $3E6E77DB,
$AED16A4A, $D9D65ADC, $40DF0B66, $37D83BF0,
$A9BCAE53, $DEBB9EC5, $47B2CF7F, $30B5FFE9,
$BDBDF21C, $CABAC28A, $53B39330, $24B4A3A6,
$BAD03605, $CDD70693, $54DE5729, $23D967BF,
$B3667A2E, $C4614AB8, $5D681B02, $2A6F2B94,
$B40BBE37, $C30C8EA1, $5A05DF1B, $2D02EF8D);
procedure CRC32Next(P: Pointer; const ByteCount: Cardinal; var CRC32Value: Cardinal);
var
CRC32Val: Cardinal;
I: Cardinal;
Q: ^Byte;
begin
Q:= P;
CRC32Val:= CRC32Value;
for I:= 0 to ByteCount - 1 do
begin
CRC32Val:= (CRC32Val shr 8) xor CRC32Table[Q^ xor (CRC32Val and $FF)];
Inc(Q)
end;
CRC32Value:= CRC32Val;
end;
procedure CRC32Full(P: Pointer; const ByteCount: Cardinal; var CRC32Value: Cardinal);
begin
CRC32Value:= 0;
CRC32Next(P, ByteCount, CRC32Value);
end;
end.



و طریقه استفاده هم :




var
CRC: Cardinal;
MS: TmemoryStream;
begin
MS := TMemorystream.create;
MS.LoadFromfile('1.exe');
CRC32Full(MS.Memory, MS.Size, CRC);
CRC فایل مورد نظر تو متغییر CRC قرار گرفت//
end;

hasanain
شنبه 05 مرداد 1387, 15:53 عصر
با تشکر از زحمات عزیزانی که همفکری کردند و تشکر ویژه از جناب HadiDelphi بابت سورس CRC32 . این هم سورس به زبان VB6 برای کسانی که مثل من نابلد هستند:

لینک (http://www.pscode.com/vb/scripts/ShowCode.asp?txtCodeId=65174&lngWId=1)