# Native Code > برنامه نویسی در Delphi > مباحث عمومی دلفی و پاسکال >  امن کردن برنامه ،‌حداقل در مقابل Resource Hacker

## Mojgan110

بله ! بله !! متوجه هستم که تاپیک امنیت نرم افزار هم داریم ! ولی اونجا سطح مطالبش فراتر از سواله من بود ( قلمروی ژنرال اینپرایز)  . نخواستم الکی کثیفش کنم  :خجالت: 

یک برنامه ای نوشتم که میخوام به یک نفر بدهمش ، ولی خب مجانی .
اون هم میدونم که میخواد با چیزی مثل Resource Hacker ( فقط اسمش را شنیدم) ، حتی همون قسمت About برنامه ام را هم که اسمم را داخلش نوشته ام را هم دستکاری کنه و به اسم کافی نتش بنویسه !  

خب زورم میاد دیگه !!  من زحمت بکشم و چیزی بنویسم و مجانی بهش بدم ولی اون حتی به اسمم توی قسمت about هم رحم نکنه ! 

واسه همین ،‌میخواستم ببینم چه چیزهایی واسه جلوگیری از این امور ( در همین حد ) سراغ دارید که بتونم استفاده کنم از آنها ؟

متشکرم.

----------


## Touska

یک راح ساده ، استفاده از ابزار فشرده ساز مثل Aspack و غیره ...

ولی بر عکس Aspack هم موجود هست ولی از هیچی بهتره.

موفق باشید :)

----------


## MNosouhi

یه راه خیلی ساده :
فرضا در فرم About یه Label داری که داخل اون مشخصات خودت رو نوشتی . برای اینکه طرف نتونه اون رو دستکاری کنه کافیه در رویداد OnFormShow فرم Aboute برنامت مشخصات خودت رو داخل Caption عنصر Label بریزی . با این کار حتی اگر طرف با برنامه ای بیاد و Caption رو تغییر بده در موقع اجرا دوباره Label مقدار جدید میگیره و مشخصات خودت رو نشون میده.

----------


## shobair

> بله ! بله !! متوجه هستم که تاپیک امنیت نرم افزار هم داریم ! ولی اونجا سطح مطالبش فراتر از سواله من بود ( قلمروی ژنرال اینپرایز)  . نخواستم الکی کثیفش کنم 
> 
> یک برنامه ای نوشتم که میخوام به یک نفر بدهمش ، ولی خب مجانی .
> اون هم میدونم که میخواد با چیزی مثل Resource Hacker ( فقط اسمش را شنیدم) ، حتی همون قسمت About برنامه ام را هم که اسمم را داخلش نوشته ام را هم دستکاری کنه و به اسم کافی نتش بنویسه !  
> 
> خب زورم میاد دیگه !!  من زحمت بکشم و چیزی بنویسم و مجانی بهش بدم ولی اون حتی به اسمم توی قسمت about هم رحم نکنه ! 
> 
> واسه همین ،‌میخواستم ببینم چه چیزهایی واسه جلوگیری از این امور ( در همین حد ) سراغ دارید که بتونم استفاده کنم از آنها ؟
> 
> متشکرم.


سلام

برنامه های پکر زیادی برای این کار وجود دارند. مثل UPX, ASPack, ASProtect, MoleBox, Petit و غیره. بعضیاشون خیلی قوی هستند. در مورد Resource Hacker باید بگم خیلی ضعیفه و هیچ کدوم از این پکر ها رو باز نمیکنه ولی برنامه هایی وجود دارند که میتونند بعضیهاشون رو باز کنند. من قویترین پکرهایی که دیدم MoleBox و ASProtect و بعضی نسخه های UPX بوده.

شبیر

----------


## fotondiamond

ولی من در کل از روش Pesare_khob v رو پیشنهاد می کنم، چون تمام این پکرهایی که دوستان گفتن همگی از پکرهای معروف هستن و  سریعا آنپکر اونا Release  میشه.

----------


## ali_abbasi22145

> یه راه خیلی ساده :
> فرضا در فرم About یه Label داری که داخل اون مشخصات خودت رو نوشتی . برای اینکه طرف نتونه اون رو دستکاری کنه کافیه در رویداد OnFormShow فرم Aboute برنامت مشخصات خودت رو داخل Caption عنصر Label بریزی . با این کار حتی اگر طرف با برنامه ای بیاد و Caption رو تغییر بده در موقع اجرا دوباره Label مقدار جدید میگیره و مشخصات خودت رو نشون میده.


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

----------


## shobair

> ولی من در کل از روش Pesare_khob v رو پیشنهاد می کنم، چون تمام این پکرهایی که دوستان گفتن همگی از پکرهای معروف هستن و  سریعا آنپکر اونا Release  میشه.


سلام

اتفاقا اینجوری نیست! شما یک برنامه رو با همین روش درست کنید من در عرض 10 دقیقه براتون کرکش میکنم. چون رشته های حرفی عیناً در متن برنامه تکرار می شوند.

شبیر

----------


## MNosouhi

> اتفاقا اینجوری نیست! شما یک برنامه رو با همین روش درست کنید من در عرض 10 دقیقه براتون کرکش میکنم. چون رشته های حرفی عیناً در متن برنامه تکرار می شوند.


هرچی باشه از روش Pack کردن بهتره . در ضمن کد کردن یه رشته که کاری نداره.

----------


## Bahram0110

> ولی من در کل از روش Pesare_khob v رو پیشنهاد می کنم، چون تمام این پکرهایی که دوستان گفتن همگی از پکرهای معروف هستن و  سریعا آنپکر اونا Release  میشه.


شاید این روش برای دوست mojgan110 جواب بده ولی باز هم یه مشکلی هست و اون استفاده از یه Hex Edit ِ
که با اون می شه فایل اجرایی رو مثل یه فایل متنی باز کنی و هر متنی رو که دوست داشتی باهاش عوض کنی.

راه حل یکم پیشرقته ترش اینه که
 در زمان طراحی برنامه: تنهاتون رو به رمز در بیارید
 در زمان لود فایل:متن ها رو رمزگشایی کنید و نشون بدید.
البته برای کارهای عادی نمی خواد زیاد رو این روش سرمایه گذاری کنید.
من در خدمتم!
--------------------



> سلام
> این ارزانترین راه ممکن می تواند باشد ولی من خیلی خوب متوجه نشدم چون برنامه هک کردن را ندارم که تست کنم.
> لطفا یک مثال ساده دلفی که روش شما را انجام می دهد اینجا آپلود کنید.


منظورشون اینه که به کپشن پیش فرض کنترل ها کاری نداشته باشیم و در زمان لود فایل اونها رو مقدار بدیم.
مثلا:
on form load
button01.caption = 'OK';

----------


## arash_ebrahimi_nk

> شاید این روش برای دوست mojgan110 جواب بده ولی باز هم یه مشکلی هست و اون استفاده از یه Hex Edit ِ
> که با اون می شه فایل اجرایی رو مثل یه فایل متنی باز کنی و هر متنی رو که دوست داشتی باهاش عوض کنی.
> 
> راه حل یکم پیشرقته ترش اینه که
>  در زمان طراحی برنامه: تنهاتون رو به رمز در بیارید
>  در زمان لود فایل:متن ها رو رمزگشایی کنید و نشون بدید.
> البته برای کارهای عادی نمی خواد زیاد رو این روش سرمایه گذاری کنید.
> من در خدمتم!
> --------------------
> ...


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

----------


## shobair

> هرچی باشه از روش Pack کردن بهتره . در ضمن کد کردن یه رشته که کاری نداره.


سلام

نکته همین جاست! شما یک با این کار رو بکن، مثلا بجای کاراکترها، کد اونها رو بذار. بعد با یک هگزا ادیتور برنامه کامپایل شده رو باز کن و رشته ای که نوشتی رو جستجو کن. آقای دلفی لطف کرده و خودش کد رو تبدیل به کاراکتر کرده!!! 
من روشی خیلی پیشرفته تر رو هم کار کردم. اصولاً آبجکت رو از ایتدا روی فرم نذاشتم، بلکه اون رو create کردم. ولی باز هم امن نیست. خودم میتونم عوضش کنم!

ضمناً کی میگه پکرها خوب نیستند؟؟ من نمونه هایی از UPX دستکاری شده دارم که حتی بهترین unPacker ها هم نمیتونن تشخیص بدن چی هست، چه برسه به اینکه بازش کنن.

شبیر

----------


## Mojgan110

> باز هم یه مشکلی هست و اون استفاده از یه Hex Edit ِ
> که با اون می شه فایل اجرایی رو مثل یه فایل متنی باز کنی و هر متنی رو که دوست داشتی باهاش عوض کنی.


خب  فایل اجرایی با دلفی میسازیم .. درست ..  حالا اگه با برنامه های Hex Edit آنرا دستکاری کنیم ، خب مگه نباید* دوباره بتونه کامپایل بشه* تا مقدارهای جدید را نشون بده ؟ خب خوده Hex Edit ها مگه میونند کامپایل هم بکنند ؟ 




> راه حل یکم پیشرقته ترش اینه که
>  در زمان طراحی برنامه: تنهاتون رو به رمز در بیارید
>  در زمان لود فایل:متن ها رو رمزگشایی کنید و نشون بدید.


خب مثلا من بیام و فلان رشته ام را کد کنم .. مثلا با فلان عدد آنرا XOR کنم !! خب بالاخره همان فلان عدد را داخل سورس برنامه ام که نوشته ام دیگه !!  اون را پیدا نمیکنند یعنی ؟




> من نمونه هایی از UPX دستکاری شده دارم که حتی بهترین unPacker ها هم نمیتونن تشخیص بدن چی هست، چه برسه به اینکه بازش کنن.


من UPX 2.02 را دارم .. چطوره ؟


ضمنا نظرتان چی هست که چندین تا Packer مختلف را اعمال کنیم به برنامه ؟ :لبخند گشاده!:

----------


## dkhatibi

> خب  فایل اجرایی با دلفی میسازیم .. درست ..  حالا اگه با برنامه های Hex Edit آنرا دستکاری کنیم ، خب مگه نباید* دوباره بتونه کامپایل بشه* تا مقدارهای جدید را نشون بده ؟ خب خوده Hex Edit ها مگه میونند کامپایل هم بکنند ؟


Hex Editor ها فایل اجرایی را به زبان ماشین ذخیره می کنند که دیگر لازم به کامپایل مجدد آن نیست و تغییرات اعمال شده در فایل اجرایی لحاظ می گردد.

----------


## soroush_vs

برنامه ای که با ASProtect پروتکت شده باشه به راحتی باDEDE دامپ میشه پس ASProtect فایدهای نداره.
من ابزارهای پروتکت زیادی دیدم اما هیچ کدوم به درد خور نبورند. فقط Obsidium رو خوب و قابل قبول دیدم

----------


## fotondiamond

> من UPX 2.02 را دارم .. چطوره ؟
> ضمنا نظرتان چی هست که چندین تا Packer مختلف را اعمال کنیم به برنامه ؟


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

یه سری پکرهای دستکاری شده که آقای شبیر گفتن میتونه عملیات آنپک رو سخت کنه نه غیر ممکن.

----------


## soroush_vs

لطفا تگه توضیحی میدید مثل هم بیارید.
یکی از ایرادات این فروم هیمنه که اعضا توضیحات مفیدی رو بدون منبع و بدون مثال میدن.
لطفا بگید که کدوم پکر ها با هم سازگارند.و این مطلب علمی هست یا تجربی. فردا اگه برنامه اجرا شد ولی تنها یکی از فرم ها اجرا نشد چی؟

----------


## shobair

> پک کردن  یه فایل با پکرهای مختلف هم خوبه ولی تنها پکرهای معدودی هستن که با همدیگه سازگازند. یعنی شما اگه دوتا پکر غیر سازگار رو با هم استفاده کنین فایل خراب میشه.
> 
> یه سری پکرهای دستکاری شده که آقای شبیر گفتن میتونه عملیات آنپک رو سخت کنه نه غیر ممکن.


سلام

هیچ چیزی غیر ممکن نیست. ولی سخت بودن آنپک شدن، خودش میتونه انگیزه خوبی باشه.

شبیر

----------


## SoftDevCo

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

  کار کرکر رو سخت می کنه ولی غیر ممکن نمی کنه، شاید در عرض 5 دقیقه کرک بشه.

----------


## Bahram0110

> خب مثلا من بیام و فلان رشته ام را کد کنم .. مثلا با فلان عدد آنرا XOR کنم !! خب بالاخره همان فلان عدد را داخل سورس برنامه ام که نوشته ام دیگه !!  اون را پیدا نمیکنند یعنی ؟


اولا xor یکی از ساده ترین الگوریتم های رمزنگاریه , ثانیا اگه با xor هم رمز کنی تقریبا محاله که یه کاربر عادی متوجه الگوریتم شما بشه!

----------


## RezaCPU

راحت ترین راه در آوردن کد اسکی متن مورد نظر و اعمال یک عملیات ریاضی روی اعداد بدست آمده است که در نهایت برنامه شما هنگام اجرا کد بدست آمده را با عدد شما مقایسه کند در صورت اختلاف مانع اجرای برنامه شود.
مثال:
کد اسکی ali
a=97
l=108
i=105
حال میتوان (n=2*(97+108+105
عدد n را هر بار در برنامه محاسبه کرده و با حاصل عدد قبلی مقایسه کنید.
امید وارم کمکی کرده باشم

----------


## fotondiamond

> لطفا تگه توضیحی میدید مثل هم بیارید.
> یکی از ایرادات این فروم هیمنه که اعضا توضیحات مفیدی رو بدون منبع و بدون مثال میدن.
> لطفا بگید که کدوم پکر ها با هم سازگارند.و این مطلب علمی هست یا تجربی. فردا اگه برنامه اجرا شد ولی تنها یکی از فرم ها اجرا نشد چی؟


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

روش RezeCpu  هم خوبه و کار کرک رو سخت میکنه نه غیرممکن، میخوام بگم که کرکر میتونه همون مقایسه ای رو که شما انجام میدید تا عدد مربوطه رو با عنوان Label چک کنه رو پیدا کنه و کلک اون If رو به راحتی بکنه.

----------


## joker

چیزی به اسم روش  codeInjection  را امتحان کردید ؟ 
البته همیشه عوض کردن یک شرط یا یک متن راحت تر از این کارها هست :)
باید ببینی طرفی که میخوای برنامه را بهش بدی چقدر حالیشه :)
اصلا این کار ارزش داره یا نه ؟ 
همون UPX را بهش بدی فکر کنم بس باشه  :لبخند گشاده!:

----------


## fotondiamond

ممنون Joker جان روش شما کار کرک رو سخت تر میکنه. البته فک می کنم Red Joker صحیح تره   :چشمک:

----------


## pbm_soy

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

----------


## joker

این یه نمونه که "
1- متن کد شده هست
2- فایل را در مقابل آنپک شدن ( مثثثلا) محافظت میکنه 
( خدا InlienPatch کردن را برای همین افرید)

 البته بشدت ابتدایی :) ولی بدک نیست :)


پیوست :
1- InlinePatch به روشی گفته میشه که فایل پک شده را بدون نیاز به آنپک کردن کرک میکنن به این صورت که محل OEP را پیدا میکنن ( حالا نپرسین OEP چیه  Orginan Entry Point یا نقطه شروع برنامه ) بعد اون را به یه قسمت دیگه فوروارد میکنن  اونجا ( که اکثر محلی از فایل هست که دیتای خالی و بلا استفاده وجود داره ) کد نویسی مربوط به کرک در حافظه انجام میشه و بعد بر میگرده به همون OEP اصلی ... اینطوری هیچ وقت حجم فایل تغییر نمیکنه و در اکثر موارد CRC چک برنامه هم آنچنان متوجه نمیشه ( پکر داریم که اینم متوجه بشه ) و الی آخر.......
2- میتونید آنپک کنید ( با UPX ) بعد CRC ها را پچ کنید بعد هم بگردین دنبال قسمتی که کار دیکود کردن را انجام میده
(یه تبدیل ساده هست) بر اساس تغییری که انجام میده متنی که میخواهید باشه را به هگز محاسبه کنید و جایگزین کنید.

----------


## oVERfLOW

استفاده از بیشتر محافظ‌ها برای حفاظت فایل اجرایی دلفی بی فایده هست
چون با کمک DeDe امکان Dump اون از حافظه به دیسک سخت وجود داره

بنابراین فقط استفاده از محافظهایی که از قابلیت‌های Code Redirection ، رمزگذاری پویا و حذف بخش‌های مورد نظر شما رو داشته باشن می‌تونن تا حدودی مفید باشن
ولی در کل استفاده از دلفی خیلی امنیت نرم‌افزار رو پایین میاره...

----------


## Inprise

مطلب فوق غیر فنی و فاقد صحت هست .

----------


## Mojgan110

> این یه نمونه که "
> 1- متن کد شده هست
> 2- فایل را در مقابل آنپک شدن ( مثثثلا) محافظت میکنه 
> ( خدا InlienPatch کردن را برای همین افرید)
> 
> البته بشدت ابتدایی :) ولی بدک نیست :)
> 
> 
> .


ممنون.
من فایله نمونه شما را داخل notepad باز کردم ، بعدن دنبال کلمه Button گشتم ، پیدا شد ، بعدن دنبال کلمه Label گشتم ، ولی پیدا نشد ... یعنی شما اصلا اون متنها را مثلا با Canvas نوشته اید آیا ؟

----------


## Mojgan110

یک سوال ::
همه هی میگن که فلان پکر ، آنپکرش هم هست و اینا .

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

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

----------


## joker

> یک سوال ::
> همه هی میگن که فلان پکر ، آنپکرش هم هست و اینا .
>  ولی من در مقالات ژنرال اینپرایز خوندم که راه صحیح این هست که بعد از پک کردن ، به کمک یک هگز ادیتور ، جاها و نشانه هایی که باعث میشه بتوان تشخیص داد که از چه پکرهایی استفاده شده را دستکاری و عوض کنیم.
>  حالا اگر این کار را که ژنرال فرموده اند را هم انجام بدهیم ، اصلا چطور قابل تشخیص میتونه باشه که از چه پکری استفاده شده که بخواد آنپکرش را بزنه ؟ هاین ؟


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


در مورد label ... من از متن ساده استفاده کردم .
حتی متن لیبل هم به دقیقا همینه که نوشته شده هست .... 
( توی یک تایمر هم گذاشتم که مثلا یه کم کار سخت تر بشه ولی نتیجه ظاهرا یکیه )
این که شما توی نوتپد ( بابا حداقل یه هگز ادیتور استفاده کن ) کلمه label را پیدا نکردی به خاطر اینه که فایل پک شده هست ... اول باید آنپکش کنید... ( تقریبا از این upx ساده تر پیدا نمیشه ها )


آورفلو جان بابا کمی تجدید نظر کن :)

----------


## shobair

سلام

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

نرم افزار PEiD اصولاً یک FreeWare هستش و من ضمیمهء این پست میکنمش.

شبیر

----------


## fotondiamond

جوکر جان ممنون از اطلاعاتت ،در ضمن تو که خودت این کاره ای از روشهایی بگو که کار کرک رو سخت تر میکنه مثل همون نوشتن چند تا فانکشن که هر بار یکی رو فراخوانی کنی

----------


## Amir Lajevardi

جناب Shobair از شما و همچنین joker عزیز به خاطر نکات ارزنده و اطلاعات مفیدتون تشکر میکنم.

فقط یه سوال دارم، این برنامه PEiD که قرار دادید، میتونه ملاک مناسبی برای تشخیص امنیت نرم افزار باشه؟؟ یعنی به عبارت دیگه اگر این برنامه نتونه تشخیص بده نرم افزار از چه Packer استفاده میکنه و همچنین نتونه اونرو unpack کنه، میشه گفت برنامه از حداقل امنیت برخوردار است و توسط کرکرهای آماتور و نیمه حرفه ای مورد لطف قرار نخواهد گرفت؟؟

----------


## Mojgan110

من آموزش آنپک کردن PE Compact را پیدا کردم که میگذارم اینجا ( بصورت فلش):

http://www.teamicu.org/lafarge/Unpac...pact.v2.7x.rar

----------


## joker

> جناب Shobair از شما و همچنین joker عزیز به خاطر نکات ارزنده و اطلاعات مفیدتون تشکر میکنم.
> فقط یه سوال دارم، این برنامه PEiD که قرار دادید، میتونه ملاک مناسبی برای تشخیص امنیت نرم افزار باشه؟؟ یعنی به عبارت دیگه اگر این برنامه نتونه تشخیص بده نرم افزار از چه Packer استفاده میکنه و همچنین نتونه اونرو unpack کنه، میشه گفت برنامه از حداقل امنیت برخوردار است و توسط کرکرهای آماتور و نیمه حرفه ای مورد لطف قرار نخواهد گرفت؟؟


 اصلا و ابدا ... با این برنامه پک کن ( تقریبا شبیه به UPX  عمل میکنه ولی peID نمیتونه نوع واقعی پکر استفاده شده را تشخیص بده ...( البته فعلا تا یه sig براش بدن بیرون که کار 30 ثانیه هست )
 کرکش هم یه جورایی راحت تر از Upx هست  SFX ) :چشمک:

----------


## Mojgan110

من که بلد نیستم ، ولی توی صحبتهای جوکر ! ، یک MUP دیدم ... این هم که میگذارم ، آموزشه MUP و Inlining هست : 

http://inf.75host.com/Tutorials/Exestealth.Complete.rar

----------


## shobair

> جناب Shobair از شما و همچنین joker عزیز به خاطر نکات ارزنده و اطلاعات مفیدتون تشکر میکنم.
> 
> فقط یه سوال دارم، این برنامه PEiD که قرار دادید، میتونه ملاک مناسبی برای تشخیص امنیت نرم 
> افزار باشه؟؟ یعنی به عبارت دیگه اگر این برنامه نتونه تشخیص بده نرم افزار از چه Packer استفاده میکنه و همچنین نتونه اونرو unpack کنه، میشه گفت برنامه از حداقل امنیت برخوردار است و توسط کرکرهای آماتور و نیمه حرفه ای مورد لطف قرار نخواهد گرفت؟؟


سلام

این موضوع که PEiD بتونه تشخیص بده از چه پکری استفاده شده یا خیر نمیتونه خیلی ملاک امنیت باشه. اصولاً امنیت هیچ ملاکی نداره بغیر از اینکه در عمل درصد کرک شدن برنامه پائین باشه. بهترین نرم افزاری که برای این کار دیدم، شاید باورتون نشه ولی ضدویروس BitDefender 8 بود! چون موقع اسکن کردن فایل تمام پکرهاش رو هم تشخیص میداد. مثلاً اگر فایلی ابتدا با UPX بعد با ASPack و بعد با Petit پک شده بود (به فرض! چون یادم نیست این سه تا با هم کار میکردند یا نه) BitDefender 8 تمام اونها رو شناسائی و نشون میداد. البته بعضی پکرها از الگوریتم های مبتنی بر تصادف استفاده میکنند و معمولاً شناسائی نمیشن. مثل ASProtect و یا MoleBox. در مجموع اگر فقط از پکر استفاده کنید، نمیتونید خیلی مطمئن باشید که امنیت رو رعایت کردید. مگر اینکه کد برنامه خودش امنیت رو بیشتر کنه.

شبیر

----------


## seyedof

سلام
برای کسی که خودش کرک کردن رو بلد باشه چندان نیازی به دونستن نوع برنامه پکر یا حفاظت کننده نیست. هرچند دونستنش کمک میکنه مخصوصا برای کسانی که میخوان با استفاده از برنامه های unpacker  یا stripper محافظ رو حذف کنند. ولیکن تقریبا تمام این نرم افزارهای فشرده ساز و محافظ با استفاده از OllyDbg ، رفتن به OEP و دامپ کردن و سپس ایجاد مجدد Reloaction Table با استفاده از برنامه هایی مانند ImpRec به راحتی قابل باز شدن هستند. اصولا بیشتر قفلها هم با همین روش باز میشن و نیازی به دونستن نوع قفل یا فشرده ساز هم نیست.
ممنون علی

----------


## Inprise

> ولیکن تقریبا تمام این نرم افزارهای فشرده ساز و محافظ با استفاده از OllyDbg ، رفتن به OEP و دامپ کردن و سپس ایجاد مجدد Reloaction Table با استفاده از برنامه هایی مانند ImpRec به راحتی قابل باز شدن هستند. اصولا بیشتر قفلها هم با همین روش باز میشن و نیازی به دونستن نوع قفل یا فشرده ساز هم نیست.


این حرف مال مدتها قبل هست . حالا خیلی وقته اینطور نیست ؛

----------


## Bahram0110

> مثلاً اگه رشته ها رو بصورت هگزان ذخیره کنیم و بعد در موقع لود شدن بصورت رشته در بیاریم میشه رمزگذاری؟


این هم یه جور رمز گذاریه!




> لطفا تگه توضیحی میدید مثل هم بیارید.
> این مطلب علمی هست یا تجربی


 هم علمی و هم تجربی




> استفاده از بیشتر محافظ‌ها برای حفاظت فایل اجرایی دلفی بی فایده هست
> چون با کمک DeDe امکان Dump اون از حافظه به دیسک سخت وجود داره
> 
> بنابراین فقط استفاده از محافظهایی که از قابلیت‌های Code Redirection ، رمزگذاری پویا و حذف بخش‌های مورد نظر شما رو داشته باشن می‌تونن تا حدودی مفید باشن
> ولی در کل استفاده از دلفی خیلی امنیت نرم‌افزار رو پایین میاره...


دلفی از VC به خاطر سختی و از VB به خاطر دلایل خیلی زیادی حتی امنیت فایل اجرایی بهتره

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




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


1- اگه جاهایی که مشخص کنندهء نوع پکر است را دستکاری کنیم پکر اون تقریبا قابل تشخیص نیست. 

2 - من این کار رو انجام دادم ولی خود توابعی که به برنامهء پک شده شما، توسط برنامهء پکر اضافه می شوند همین قسمت ها را بررسی می کنند و در صورت برابر نبودن فایل را اجرا نمی کنند. 
CRC    ERROR
لا اقل رو پکر هایی که من استفاده کردم جواب نداد.

راه حل : شاید اگه قسمت Anti Debug و(یا) CRC Check را در تنظیمات پکر غیر فعال کنید جواب بده!

----------


## Mojgan110

خب ! من طبق صحبتهای اینجا ، برنامه HexEdit 3.0 را نصب کردم . ( البته نسخه 30 روزه)

بعد یک فرم ساختم در دلفی ، و چیزی داخل Caption آن نوشتم ( از طریق خاصیت پرایرتیز).

همین !

حالاهمون برنامه ی یک فرمی بالا را با  HexEdit باز کردم !، وارد منوی Find Replace شدم و عبارتی که داخل کپشن _ فرم نوشته بودم را نوشتم که مثلا با یک چیز دیگر عوض شود.
ولی نشد !

این فکر کنم ساده ترین حالت و کار باشه .  میتونید لطفا فعلا همین کار را توضیح بدهید که چطور انجام بدهیم ؟ 
متشکر

----------


## shobair

> خب ! من طبق صحبتهای اینجا ، برنامه HexEdit 3.0 را نصب کردم . ( البته نسخه 30 روزه)
> 
> بعد یک فرم ساختم در دلفی ، و چیزی داخل Caption آن نوشتم ( از طریق خاصیت پرایرتیز).
> 
> همین !
> 
> حالاهمون برنامه ی یک فرمی بالا را با  HexEdit باز کردم !، وارد منوی Find Replace شدم و عبارتی که داخل کپشن _ فرم نوشته بودم را نوشتم که مثلا با یک چیز دیگر عوض شود.
> ولی نشد !
> 
> ...


سلام

من جای شما بودم از UltraEdit یا WinHex استفاده می کردم. (WinHex بهتره) شما اساس کار رو درست انجام دادید ولی ممکنه اشتباهاتی داشته باشید. مثلاً Save نکرده باشید.

شبیر

----------


## kont_200

بهترین کار برای این عمل استفاده از crc32 هست وبس
--------------------
بهترین کار برای این عمل استفاده از crc32 هست وبس

----------


## rainstorm

در مقابل SourceRescuer که سورس فایل های EXE دلفی رو باز می کنه چه حرفی برای گفتن دارید؟؟؟؟؟
(اگر خواستین SourceRescuer رو پیوست می کنم)

----------


## arash_ebrahimi_nk

> در مقابل SourceRescuer که سورس فایل های EXE دلفی رو باز می کنه چه حرفی برای گفتن دارید؟؟؟؟؟
> (اگر خواستین SourceRescuer رو پیوست می کنم)


سورس رو به زبان اسمبلی باز میکنه ؟  :لبخند گشاده!:  
لطفاً پیوست کنید.

----------


## SoftDevCo

> در مقابل SourceRescuer که سورس فایل های EXE دلفی رو باز می کنه چه حرفی برای گفتن دارید؟؟؟؟؟
> (اگر خواستین SourceRescuer رو پیوست می کنم)


چه جلب...............

----------


## Amir Lajevardi

> در مقابل SourceRescuer که سورس فایل های EXE دلفی رو باز می کنه چه حرفی برای گفتن دارید؟؟؟؟؟
> (اگر خواستین SourceRescuer رو پیوست می کنم)


نظر من اینه که این برنامه ضعیف تر از این صحبتهاست که تهدیدی به شمار بره ، حتی برنامه pack شده با packer عادی رو هم نمیتونه تشخیص بده. همونطور که توی توضیحاتش اومده Event Procedure هایی که تولید میکنه فقط آدرس کد اجرایی رو در داخل فایل EXE نشون میده...

توضیحات برنامه :

*EMS Source Rescuer™* is an easy-to-use wizard application which can help you to restore your lost source code. If you lose your Delphi® or C++‎Builder® project sources, but have an executable file, then this tool can rescue part of lost sources. Rescuer produces all project forms and data modules with all assigned properties and events. Produced event procedures don't have a body (it is not a decompiler), but have an address of code in executable file. In most cases Rescuer saves 50-90% of your time to project restoration.
 
سایت مربوطه :

http://www.sqlmanager.net/en/products/tools/sourcerescuer

----------


## arash_ebrahimi_nk

لطفاً یه پکر که سرعت اجرای فایل رو کند نکنه (درجه اول) و قدرتمند هم باشه (درجه دوم) معرفی کنید.

----------


## joker

اینم ChangeMe ورژن 2 *ویژه دوستداران  OllyDBG*  :چشمک: 
اینبار با چیزی پک نشده کار راحت تره :)

----------


## arash_ebrahimi_nk

> اینم ChangeMe ورژن 2 *ویژه دوستداران  OllyDBG* 
> اینبار با چیزی پک نشده کار راحت تره :)


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

______


پکری که پسورد نذاره - سرعت رو کند نکنه - حجم رو زیاد بالا نبره - قدرتمند هم باشه - یه نفر معرفی کنه. [-o<

----------


## مهدی کرامتی

> در مقابل SourceRescuer که سورس فایل های EXE دلفی رو باز می کنه چه حرفی برای گفتن دارید؟؟؟؟؟
> (اگر خواستین SourceRescuer رو پیوست می کنم)


1- این ابزار فقط میتواند فرم های ساخته شده در دلفی (*.dfm) را، آنهم بشرطی که فایل اجرایی پک نشده باشد استخراج میکند، آنهم بدون کدهای اجرایی (فقط قالب فرم).

2- نیازی به یادآوری قوانین سایت هست؟!

----------


## joker

> شما که سورس رو نذاشتید
> _____
> پکری که پسورد نذاره - سرعت رو کند نکنه - حجم رو زیاد بالا نبره - قدرتمند هم باشه - یه نفر معرفی کنه. [-o<


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

----------


## rainstorm

منظورتون از پک کردن فایل اجرایی چیه و چه جوری میشه این کار رو انجام داد؟

----------


## arash_a

از دوستان کسی میشه این برنامه ی منو هک کنه ؟

----------


## Mojgan110

سوال سوال :
فرض کنین که داخل برنامه مون ، از یک سری کامپوننتهای جدیدی که ماله خوده دلفی نیستند هم استفاده کرده باشیم. خب هرچی که استفاده میکنیم ، به لیست uses هم استفاده میشه.
حالا میخواهم طوری باشه که وقتی دارند فایل اجرایی را نگاه میکنند و اینا ، نتوانند متوجه بشند که اسمه کامپوننتهایی که استفاده کرده ایم ، چه بوده ؟
چی کار باید کرد حالا ؟
مخسی

----------


## soroush_vs

عزیزان دلم!
فایل اگر Pack هم بشه در حالت RunTimeمیشه با DEDE اون رو Dump کرد و فایل های با پسوند pas رو ذخیره کرد.
راه حل استفاده از Protector ها است. مانند Obsidium1.3

----------


## M A R S H A L

> عزیزان دلم!
> فایل اگر Pack هم بشه در حالت RunTimeمیشه با DEDE اون رو Dump کرد و فایل های با پسوند pas رو ذخیره کرد.
> راه حل استفاده از Protector ها است. مانند Obsidium1.3


شما یه جوری میگی فایلهای Pas برنامه رو میده بیرون که یکی ندونه فکر میکنه به کدهای اصلی نوشته شده توسط برنامه نویس (پاسکال) رو میده. بهتره قید میکردید که داخل این فایلهای pas  فقط دستورات اسمبلی ترجمه شده و آدرسهای فراخوانی روالها وجود داره.
مورد دوم :
دلیل تاکید شما رو برای استفاده از Obsidium متوجه نشدم. اما بنظر شخصی من بین پروتکتورهای موجود هیچی Exe Cryptor نمیشه.
The Mida هم بد نیست. روش حفاظتی جالبی داره اگه اشتباه نکنم 20 تا Thread ناظر بر صحت عملکرد پروتکتورش در زمان اجرای برنامه پروتکت شده ایجاد میکنه.
مورد سوم:
چه دلیل قانع کننده ای بر "عدم" توانایی و ضعف برنامه های دلفی در مقابل کرک شدن وجود داره ؟ و آیا در برنامه تولید شده زبانهای دیگر این مشکل وجود ندارد؟
آیا برنامه نهایی به زبانی غیر از زبان ماشین ترجمه میشود؟
آیا برنامه ای که به زبان ماشین ترجمه شده قابل ترجمه به کدهای متناظر خود در اسمبلی نمیباشد؟
مسئله کرک شدن یا نشدن یه برنامه مستلزم استفاده از روشهای حرفه ای و ابتکاری در حین کد نویسی هست که برنامه رو "دیر کرک تر" میکنه.

----------


## Bahram0110

> سوال سوال :
> فرض کنین که داخل برنامه مون ، از یک سری کامپوننتهای جدیدی که ماله خوده دلفی نیستند هم استفاده کرده باشیم. خب هرچی که استفاده میکنیم ، به لیست uses هم استفاده میشه.
> حالا میخواهم طوری باشه که وقتی دارند فایل اجرایی را نگاه میکنند و اینا ، نتوانند متوجه بشند که اسمه کامپوننتهایی که استفاده کرده ایم ، چه بوده ؟
> چی کار باید کرد حالا ؟
> مخسی


به نظر من که راهی نداره! حتی اگه برنامه رو پک، انکریپت یا . . . کنی

----------


## Delphi_Developer

> از دوستان کسی میشه این برنامه ی منو هک کنه ؟


بابا ملت Lock سخت افزاری میذارن برنامشون Crack میشه شما به یه Timer دل بستی ؟!!!
بیا اینم فایل Crack شدش :

----------


## iranianprogrammers

جسارتا                    !

----------


## hossein taghi zadeh

یکی از  راه‌هایی که برای ایمن کردن exe های دلفی وجود داره : 

فشرده کردن Resource با برنامه UPX و سپس کد کردن Resource برنامه با Scramable

(تست شده با Resource Hacker, EXEScope, DeDe, PE Explorer نمی‌شه فرم هاشو دستکاری کرد.)

_____________________________________
با اهل دل شرح غم خود نمی‌کنم    تقدیر غصه دل من ناشنیدن است

----------


## Hamid_PaK

از این ساده تر نمی شد آنپکش کرد ، تغییری در بنیان UPX نمی داد و ساده شناخته و آنپک شد !!!

یا حق ...

----------


## Delphi_Developer

سلام

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



> جسارتا !
> فایل های ضمیمه changeme2.zip


الان ساعت 3 صبحه ! فردا نگاش میکنم خبرشو بهت میدم ...

----------


## Delphi_Developer

> جسارتا !
> فایل های ضمیمه changeme2.zip


سلام
ببخشید این چند مدت سرم شلوغ بود نتونستم بیام این سایت - - - این رو امروز دیدم یادم اومد ببخشید - اگه منظور شما به تغییر دادن این هست => من راحت تغییرش دادم اینم فایلش :

----------


## Mohammad_Mnt

بعد از خوندن 64 پست، من راه حل مناسبی ندیدم. چه مانع‌هایی می شه برای ک.رک.ر ها گذاشت ؟

----------


## Batman

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

----------


## Batman

با سلام
دوستان اینم آدرس همون برنامه هستش اگه توانستید تغییر بدید لطفا توی همون تاپیک بحث رو ادامه بدید
با سلام
https://barnamenevis.org/showth...t=73976&page=2
موفق باشید

----------


## milad.a

ولی من در مورد این که داخل فرم لود بنویسیم تقریبا مطمینم که امنیت خیلی بالایی داره!

----------


## mehdi_naghous

بهترین پکر که میتونی استفاده کنی themedia هستش برای کار با پکرها و انپکرها توی سایت www.tuts4you.com یه سری بزن

----------


## Mahmood_M

این تاپیک قفل شد :

1. این بحث برای 4 سال پیش هست ، اگر مایل به بحث جدیدی هستید تاپیک جدیدی ایجاد کنید

2. این موضوع مربوط به دلفی نمی شه و بهتره در بخش امنیت نرم افزار بحث رو پیگیری کنید

موفق باشید ...

----------

