نمایش نتایج: از شماره 1 تا 12 , از مجموع 12
  1. #1
    تاریخ عضویت
    Aug 2013
    محل سکونت
    windows/system32
    نوشته ها
    79
    تشکر از ارسال
    215
    Thanked 8 Times in 7 Posts

    الگورینم پسورد و بانک اطلاعاتی

    سلام دوستان
    دو تا سوال داشتم

    اول دومی رو میگم بعد سوال اولی رو مطرح میکنم.

    به این کد دقت کنید
    کد:
    if password=12345 then
    open
    else
    close
    end if
    بیشتر برنامه برای وارد شدن به محیط کاربری از این الگوریتم استفاده می کنن و کرکر ها با یه دستکاری کوچک از این مانع رد میشن
    حالا میخواستم بدونم راهی و یا الگوریتمی وجود داره که این قطعه کد رو بدون استفاده از شرط و بدون سریز شدن بافر به خوبی انجام بده؟
    بر خاتم انبیاء محمـــــــــــــــــد صلوات بفرست.
    (انشالا مشکلت حل شه!)

  2. #2
    تاریخ عضویت
    Aug 2008
    نوشته ها
    600
    تشکر از ارسال
    519
    Thanked 100 Times in 55 Posts
    هر کاری کنید بازم کرکر میتونه جامپ کنه. اما در بهنرین حالت اینه که برنامه رو درگیر این شرط کنید.
    مثلا :
    در بانک اطلاعاتی دیتا رو کد کنید و ذخیره کنید. در اینجا کلید باز کردن دیتای کد شده ، درگیر با شرططتون باشه.
    اینچوری اگه جامپ کنه دیتا رو نمیتونه دیکد کنه و حتما باید مقدار صحیح رو بررسی کنه.
    البته این روش هم قابل دور زدن هست.
    و روشی دیگر :
    خود من شرطهای برنامه رو به صورت پوینتر و بدون IF مینویسم.
    یعنی اگر مقدار فلان شرط True بود بپر سر پوینتر فلان پروسیجر. اینجوری بازم کار سخت تر میشه.
    موفق باشید.
    ویرایش توسط Delphi_7 : 10-08-2013 در ساعت 01:45 AM
    صد سال ره مسجد و ميخانه بگيري
    عمرت به هدر رفته اگر دست نگيري

    بشنو از پير خرابات تو اين پند
    هر دست که دادي به همان دست بگيري...

  3. کاربر زیر از Delphi_7 به علت ارسالش ابراز تشکر کرد.

    web01 (10-07-2013)

  4. #3
    تاریخ عضویت
    Aug 2010
    نوشته ها
    159
    تشکر از ارسال
    55
    Thanked 119 Times in 55 Posts
    برنامه نویسی یک اصولی که داره که شکر خدا برنامه نویس های ایرانی بیشترشون اصلا نمی دونن چی هست که بخوان بهش عمل کنن
    نتیجه این می شه که راهکار هایی مثل TFS استفادش توی ایران صفر مطلقه

    این رو گفتم برای این که شما برنامه ات رو طبق اصول بنویس و مباحثی مثل Obfuscation رو اگر خودت برش تسلط داری برو سراغش در غیر این صورت بدش دست پروتکتور ها و افرادی که در این زمینه فعالیت می کنن البته Obfuscation به تنهایی توصیه نمی شه و استفاده اصلی اش برای جلوگیری از کرک نیست
    ویرایش توسط 4n0nym0us : 10-07-2013 در ساعت 03:24 AM
    I'm Not Related To Anonymous Group
    بنده ارتباطی به گروه Anonymous ندارم

  5. کاربر زیر از 4n0nym0us به علت ارسالش ابراز تشکر کرد.

    web01 (10-07-2013)

  6. #4
    تاریخ عضویت
    Aug 2005
    محل سکونت
    Karaj
    نوشته ها
    906
    تشکر از ارسال
    369
    Thanked 655 Times in 314 Posts
    نقل قول نوشته اصلی توسط Delphi_7 نمایش پست ها
    هر کاری کنید بازم کرکر میتونه جامپ کنه. اما در بهنرین حالت اینه که برنامه رو درگیر این شرط کنید.
    مثلا :
    خود من شرطهای برنامه رو به صورت پوینتر و بدون IF مینویسم.
    یعنی اگر مقدار فلان شرط True بود بپر سر پوینتر فلان پروسیجر. اینجوری بازم کار سخت تر میشه.

    انجام پروژه های نرم افزاری در کمترین زمان و نازلترین قیمت
    برای تماس به آیدی Arashjeyjey در یاهو مسنجر پیام بدید.

    http://www.jeyjey.blogfa.com

  7. 2کاربر از JeyJey به علت ارسالش تشکر کردند.

    silverfox (10-07-2013),web01 (10-07-2013)

  8. #5
    تاریخ عضویت
    Nov 2011
    نوشته ها
    58
    تشکر از ارسال
    81
    Thanked 17 Times in 9 Posts
    نقل قول نوشته اصلی توسط web01 نمایش پست ها
    سلام دوستان
    دو تا سوال داشتم

    اول دومی رو میگم بعد سوال اولی رو مطرح میکنم.

    به این کد دقت کنید
    کد:
    if password=12345 then
    open
    else
    close
    end if
    بیشتر برنامه برای وارد شدن به محیط کاربری از این الگوریتم استفاده می کنن و کرکر ها با یه دستکاری کوچک از این مانع رد میشن
    حالا میخواستم بدونم راهی و یا الگوریتمی وجود داره که این قطعه کد رو بدون استفاده از شرط و بدون سریز شدن بافر به خوبی انجام بده؟
    واقعا برنامه ای هست که این جوری چک کنه !!؟
    :|
    اصلا این الگوریتمه ؟؟؟؟؟؟ :||||
    ما این دیتابیس مربوط به برنامه رو salt میکنیم ! و دوباره چند مرحله کد میکنیم ! آخرش کرک میشه !

  9. #6
    تاریخ عضویت
    Sep 2007
    نوشته ها
    273
    تشکر از ارسال
    45
    Thanked 119 Times in 88 Posts
    سلام

    اين كه تقريبا رد كردنش ساده هست عزيز من !
    اما باز براي يه خرده پيچيده كردن كار ميتوني با تلفيق اسمبلي با كدهات و انكريپت كردن پسوردت (تا بر اساس پسوردي كه وارد ميكني عمل بشه) و با استفاده از راهكار Delphi_7 عزيز اين كار رو انجام بدي.
    حالا اگه نمونه بخوايي دم دست دارم اما اين رو هم بگم كه اگه زباني كه داري مينويسي اسمبلي ايتلاين نداشته باشه با اين روش نميشه.


    موفق باشيد.

  10. کاربر زیر از h4sh3m به علت ارسالش ابراز تشکر کرد.

    web01 (10-07-2013)

  11. #7
    تاریخ عضویت
    Aug 2013
    محل سکونت
    windows/system32
    نوشته ها
    79
    تشکر از ارسال
    215
    Thanked 8 Times in 7 Posts
    ممنون از همتون به جوابم رسیدم
    و به گفته اقا ارش که نقل از Delphi_7 کرده بود پوینتر میتونه کارو سخت میکنه

    حالا سوال اولیم میخوام بپرسم
    ما میخوایم یه برنامه پرتابل به همراه بانک اطلاعاتی sql داشته باشیم
    تنها راهی که به ذهنم زد ریسورس کردن بانک داخل برنامست داخل نت فقط تونستم ریسورس تصویر-موزیک و... رو پیدا کنم ولی از پایگاه داده حرفی نزده بود
    دوستان سورسی با زبان ویژال دارن ؟ و یا راهنمایی در این مورد؟
    بر خاتم انبیاء محمـــــــــــــــــد صلوات بفرست.
    (انشالا مشکلت حل شه!)

  12. #8
    تاریخ عضویت
    Sep 2003
    نوشته ها
    600
    تشکر از ارسال
    0
    Thanked 100 Times in 23 Posts
    اگر تجربه و توان فنی برای امن کردن برنامه ای که نوشتی نداری بهتره وقتت رو برای بالا بردن کیفیت برنامت بذاری و در نهایت از کسی که بلده بخوای تا قسمتهای لازمه رو پیاده سازی کنه. معمولا در تیمهای نرم افزاری افرادی هستند که فقط وظیفه پیاده سازی قسمتهای امنیتی و تست اون قسمتها رو انجام میدن. اگه خودت سعی کنی بدون داشتن تجربه و علم کافی اینکارو انجام بدی نتیجش میشه کلی وقت و انرژی که از دست میدی و در نهایت از اینکه یه کرکر تازه کار تونسته ترتیب برنامتو بده مدتها متعجب میمونی و همه چی به باد میره... (البته بعدش دیگه تقریبا یاد میگیری امنیت نرم افزار یعنی چی !)

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

    کد:
    Adress = CheckFunc(password);
    call Adress
    همین روش ساده میتونه خیلی پیچیده تر پیاده شه تا کرکر مجبور باشه برای دور زدنش حتما یک پسورد درست داشته باشه یا مدت زیادی صرف آنالیز کدهای درون تابع کنه تا بفهمه چجوری کار میکنه...

    روشها میتونه از خیلی ساده تا خیلی پیچیده بسته به دانش فرد متغیر باشه...

  13. 4کاربر از Magic_h2001 به علت ارسالش تشکر کردند.

    Delphi_7 (10-08-2013),net (10-07-2013),t3rr0r1st (10-08-2013),web01 (10-07-2013)

  14. #9
    تاریخ عضویت
    Aug 2013
    محل سکونت
    windows/system32
    نوشته ها
    79
    تشکر از ارسال
    215
    Thanked 8 Times in 7 Posts
    از همتون ممنونم بابت توصیه های که می کنید نمیدونم با چه زبونی تشکر کنم (البته به غیر از فاسی زبون دیگه رو بلد نیستم) بخاطر تجربه چندساله شما که در اختیار بقیه قرار می دید
    بنظرم دکمه تشکر براتون کمه و مجبور که اسپم بدم
    بر خاتم انبیاء محمـــــــــــــــــد صلوات بفرست.
    (انشالا مشکلت حل شه!)

  15. #10
    تاریخ عضویت
    Sep 2007
    نوشته ها
    273
    تشکر از ارسال
    45
    Thanked 119 Times in 88 Posts
    سلام

    پيرو پست حاج مجيك من قبلا يه كرك مي برا مسابقه كرك آشيانه نوشتم (حاج hepl3r رو ببين برا جوابش ;) ) كه سورسش رو ببيني متوجه ميشي دقيقا همون كاري كه قبلا گفتم رو تو يه سطح ابتدايي اومدم و پياده كردم.
    سورس به زبان دلفي 7 هست.


    موفق باشيد.
    فایل های پیوست شده فایل های پیوست شده

  16. کاربر زیر از h4sh3m به علت ارسالش ابراز تشکر کرد.

    web01 (10-07-2013)

  17. #11
    تاریخ عضویت
    Aug 2013
    محل سکونت
    windows/system32
    نوشته ها
    79
    تشکر از ارسال
    215
    Thanked 8 Times in 7 Posts
    از اونجای که به زبان دلفی تسلط ندارم نمیتونم کدهای دلفی رو بررسی کنم
    بخاطر اینکه از اول با ویژال اشنا شدم تصمیم یه درست کردن پروژه اخر ترم با این زبان شدم
    و نمیتونم ریسورس بانک رو داخل برنامه م پیداه سازی کنم
    بر خاتم انبیاء محمـــــــــــــــــد صلوات بفرست.
    (انشالا مشکلت حل شه!)

  18. #12
    تاریخ عضویت
    Aug 2008
    نوشته ها
    600
    تشکر از ارسال
    519
    Thanked 100 Times in 55 Posts
    نقل قول نوشته اصلی توسط Z4R4THUSTR4 نمایش پست ها
    با دقت نخوندی آرش : گفتم شرط بدون IF .
    قرار نیست هروقت خواستیم شرطی تعیین کنیم از IF استفاده بشه:
    مثال زیر رو ببین :
    کد:
    Ptr := Pointer(integer(dm1.Q_Anbar.RecordCount < 100) * longint(ptr2)
                + (1 - integer(dm1.Q_Anbar.RecordCount < 100)) * longint(ptr1));
    اینحا IF در کار نیست . اما داریم مقدار RecordCount یک کوئری رو بررسی میکنیم.
    و پیرو صحبتهای حاج مجیک :
    کد زیر مقداری رو بررسی میکنه و پوینتر رو تغییر میده ، برای ادامه روند :
    کد:
    var
        ptr1, ptr2, Ptr: Pointer;
    کد:
    case input of
          1:
            begin
              dm1.Connection1.Connected := false;
              dm1.Connection1.ConnectionString :=
                'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + MyPath +
                'db\db.mdb' +
                ';Persist Security Info=False;Jet OLEDB:Database Password=1';
    
              Ptr := Pointer(integer(FileExists(MyPath + 'DB\db.mdb')) *
                longint(ptr2) + (1 - integer(FileExists(MyPath + 'DB\db.mdb'))) *
                longint(ptr1));
              TProcedureType(Ptr)(input + 1);
            end;
          2:
            begin
              dm1.Connection1.Connected := True;
    
              Ptr := Pointer(integer(dm1.Connection1.Connected) * longint(ptr2) +
                (1 - integer(dm1.Connection1.Connected)) * longint(ptr1));
              TProcedureType(Ptr)(input + 1);
            end;
          3:
            begin
    ویرایش توسط Delphi_7 : 10-08-2013 در ساعت 01:57 AM
    صد سال ره مسجد و ميخانه بگيري
    عمرت به هدر رفته اگر دست نگيري

    بشنو از پير خرابات تو اين پند
    هر دست که دادي به همان دست بگيري...

  19. کاربر زیر از Delphi_7 به علت ارسالش ابراز تشکر کرد.

    web01 (10-08-2013)

 

 

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •