صفحهها: 1 2 3 4 5 6 7 8 9 10 11
سلام آقا سعيد
خيلي ممنون از آموزشي كه گذاشتيد اما چند تا سوال داشتم :
1- دستكاري تابع شمارنده تاريخ 30 روز ترايال چه ضرورتي داشت؟ در حالي كه برنامه رو با همون دستور ريتورن مي شه كرك كرد و به درستي كار مي كنه.
2- اون تابعي كه ما به كلي ازبين برديمش و مانع اجراي اون شديم ( با استفاده از دستور ريتورن ) در ابتدا فايل Wake.ini رو باز مي كرد يا مقداري رو از داخل اون مي خوند و بعد مقدار " برنامه رجيستر شده است" رو مي گرفت و لي در ادامه به سمتي پيش مي رفت كه مقدار " برنامه رجيستر نشده است" رو گرفته و در نهايت اون رو نمايش مي داد!
اما در اين بين هيچ دستور شرطي خاصي وجود نداشت كه بشه اون رو تغيير داد تا روند برنامه به سمت پيغام خطا پيش نره.
آيا برنامه نويس از كدها يا روشي خاص استفاده كرده كه نيازي به دستور شرطي نداشته يا اينكه دستور شرطي رو داخل چندين تابع تو در تو مخفي كرده تا تريس همه اونها در حوصله كركر نباشه؟
سلام
خوب هستيد
در مورد سئوال اول. بر اساس تجربه به من ثابت شده كه همچين برنامه هايي معمولا چندين تابع چك كننده ديگر رندوم دارند كه بر اساس رويداد هاي اجرا ميشن و برنامه رو قفل مبكنند. بخاطر جلوگيري از كار اين توابع در صورت وابسطه بودن به محاسبه تاريخ توسط تابع مورد نظر اين كار رو كردم .
در مورد سئوال دوم
اين برنامه به اين صورت عمل ميكنه كه در صورت درست بودن نوشته نمايش دهنده رو توي حافطه با مقدار
register ok! تغيير ميده . توسط توابع تو در تو . اين يكي از روش هاي محافظتي برنامه است كه مجيك جامپ از بين برود !
توي يك برنامه ديگه كه بررسي ميكردم ديدم سريال بعد از تغيير و تحول وقتي با رشته خطا تركيب مي شد مقدار تبريك ريجيستر رو به شما ميداد اينم يك روش از اين نوع روش ها
اميدوارم كمك كنه
خيلي ممنون از توضيحي كه داديد اما يه سوال خارج از بحث!
برنامه هايي كه با Mew پك مي شن رو هيچ جوري نمي تونم دوباره باز سازي كنم. نه با دامپ نه با آنپكرهايي كه پيدا كردم ممكنه يه راهنمائي بفرمائيد؟
راستي من برنامه رو طوري تغيير دادم كه جاي پيغام ها جابجا بشه ، يعني در ابتدا متن آنرجيستر رو بگيره و در آخر متن رجيستر شدن رو . وقتي برنامه رو اجرا مي كنم به من پيغام Tanx For Register مي ده ولي برنامه رجيستر نمي شه.
به نظر مياد با درست بودن شرط يكي از توابع كلا برنامه رو از تابع ريتورن مي كنه و بايد به جاي دستور جامپ به دنبال يه دستور ريتورن اساسي باشيم تا اون تابع اصلي رو پيدا كنيم.
Di Di نوشته است:خيلي ممنون از توضيحي كه داديد اما يه سوال خارج از بحث!
برنامه هايي كه با Mew پك مي شن رو هيچ جوري نمي تونم دوباره باز سازي كنم. نه با دامپ نه با آنپكرهايي كه پيدا كردم ممكنه يه راهنمائي بفرمائيد؟
سلام خوب هستيد
ميتونيد يك نمونه بگداريد ببينم چون اين نوع از پكر ها روش كارشون يكي است اما بعضي ها تغييراتي توشن ميدن بايد بنا به تغييرات روش دامپ رو تغيير داد
درر مورد دومي درست متوجه نشدم ميشه برتامه پچ شده رو بگداريد تاببنيم
ممنون
به اميد ديدار
سلام
اين برنامه رو چند سال پيش يكي از بچه هاي سايت براي كرك گذاشته بودن!! شايد خودتون هم قبلا ديده باشيد.
اين برنامه رو به راحتي مي شه دامپ كرد ولي بعد از دامپ كدها اصلا جالب نيستند!!!
http://rapidshare.com/files/114994526/st..._.zip.html
اون برنامه رو هم يه بار در محيط OllyDbg تغيير دادم و چون كاري نكرد ذخيره اش نكردم ... الان دوباره انجام مي دم و پچش رو مي زارم .
سلام خوب هستيد
اين فكر كنم كمك كنه
کد:
File: ser_SCORM.zip
DownloadLink: http://rapidshare.com/files/111859443/ser_SCORM.zip
File-Size: 0.74 MB
Uploaded: 2008/05/02, 02:12:45
----------------------------------------------------------------------------------------------
saeedsmk نوشته است:اين برنامه به اين صورت عمل ميكنه كه در صورت درست بودن نوشته نمايش دهنده رو توي حافطه با مقدار
register ok! تغيير ميده . توسط توابع تو در تو . اين يكي از روش هاي محافظتي برنامه است كه مجيك جامپ از بين برود !
با 2 تا بايت ميشه رجيسترش کرد
اصل مجيک بايت از من نيست من افست رو خودم تغير دادم
کد:
Type : Magic byte or Magic jump
Offset :
00439DCC . 8B33 MOV ESI,DWORD PTR DS:[EBX]
Change to :
00439DCC . 33F6 XOR ESI,ESI
yonas021 نوشته است:دوستان ممنون امامیشه اینو کرک کنیداموزششو هم بذارید فک کنم خیلی ساده باشه
در دلفی
2 تا Edit بگزاريد و يک button
کد:
procedure TForm1.Button1Click(Sender: TObject);
var i,r,r1,r2:integer;
begin
for i := 1 to length(edit1.text) do begin
r := r +(ord(edit1.text[i])) shl 3;
r1 := length(edit1.text) shl 3 ;
r2 := (r + r1) shl 2;
edit2.Text := inttostr(r2);
end;
end;
برنامه به تعداد کاراکتر ورودی User,
آن ها رو به Decimal تبديل ميکنه و با هم جمع ميکنه بعد SHL رو با 3 ميگيره.
کد:
for i := 1 to length(edit1.text) do begin
r := r +(ord(edit1.text[i])) shl 3;
حالا باز به تعداد حروفUser باز SHL اون رو با 3 ميگيره
کد:
r1 := length(edit1.text) shl 3 ;
قسمت آخر هم 2 قسمت اول و دوم رو جمع ميکنه و SHL رو با 2 ميگيره
کد:
r2 := (r + r1) shl 2;
صفحهها: 1 2 3 4 5 6 7 8 9 10 11