PDA

View Full Version : سوال: آدرس درایو ها در محیط DEBUG



bluray
شنبه 18 اردیبهشت 1389, 11:17 صبح
سلام
یه سوال از اساتید داشتم و اون هم اینکه چطوری می شه در محیط دیباگ بفهمیم آدرس شروع یک درایو در رم چیه؟
مثلا می دونیم که آدرس شروع درایو فلاپی 2700 هست و با دستور زیر 128بایت اول موجود در این درایو به ما نمایش داده می شه:
D 2700
می خوام با دونستن این آدرس مثلا 128بایت اول درایو دی رو dump کنم . در آینده می خوام با این روش در کپی کردن و ریکاوری کردن کارهایی رو انجام بدم .
اگر راهی موجوده که این آدرس رو بفهمم بگید ممنون می شم .آخه اگه بخوایم 128بایت 128بایت بریم جلو برای رد کردن 30گیگابایت فکر کنم باید 1سال کار کرد:لبخند:

tdkhakpur
شنبه 18 اردیبهشت 1389, 18:59 عصر
می خوام با دونستن این آدرس مثلا 128بایت اول درایو دی رو dump کنم . در آینده می خوام با این روش در کپی کردن و ریکاوری کردن کارهایی رو انجام بدم .

این کار شما مثل این میماند که آدرس منزلتان را به کسی بدید و بگید سر کوچه ما یک ماشین هم و ایستاده .خب حتما هم اطلاع دارید که ram جایی هست که داده ها داخل اون قرار میگیرند و تضمین هم نیست که حتما باید اونجا قرار بگیرد.

اگر راهی موجوده که این آدرس رو بفهمم بگید ممنون می شم .آخه اگه بخوایم 128بایت 128بایت بریم جلو برای رد کردن 30گیگابایت فکر کنم باید 1سال کار کرد
شما برای چی از وقفه 13h استفاده نمیکنید?

bluray
سه شنبه 21 اردیبهشت 1389, 18:44 عصر
این کار شما مثل این میماند که آدرس منزلتان را به کسی بدید و بگید سر کوچه ما یک ماشین هم و ایستاده .خب حتما هم اطلاع دارید که ram جایی هست که داده ها داخل اون قرار میگیرند و تضمین هم نیست که حتما باید اونجا قرار بگیرد.

شما برای چی از وقفه 13h استفاده نمیکنید?
می شه بیشتر توضیح بدی .
ببین دوست عزیز ، تاحالا شده یه سی دی قفل دار کپ کنی روی سیستمت؟
دیدی ارور می ده؟ خوب وقتی اون ارور رو جواب ندی و کامپیوتر رو همونجا خاموش کنی ، فایل ها داخل سیستمت کپی شده اما معلوم نیست کجای اون درایو هست و تو هم نمی تونی ببینیش .
حالا لازمه لودش کنی توی رم ، بعدش تغییراتی درش اعمال کنی و بعد دوباره بنویسیش . برای لود کردن باید آدرس محلش رو بگی . یعنی مثلا بگی فلان سکتور رو برام لود کن . خوب می دونی این فایل کجا میره و در چه سکتوری؟
جدا از اون سوال دیگه من هم برای این هست که من بتونم یه قسمتی که مورد نظرم هست رو با دستور دامپ ببینم .
لود کردن مد نظر نیست .

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

tdkhakpur
سه شنبه 21 اردیبهشت 1389, 19:02 عصر
تاحالا شده یه سی دی قفل دار کپ کنی روی سیستمت؟
دیدی ارور می ده؟
اصلا این کار با اون چیزی که شما میگید متفاوته وقتی به یک سی دی قفل گذاشته میشود معنیش این نیست که از شما کد برای ورود بخواد بلکه داخل سی دی مکانهایی را با فرمت متفاوت کد گذاری میکند یعنی به معنی فیزیکی آن محل را بیستر می سوزاند و وقتی درایو شما به این محل میرسد نمیتواند از فرمت قرار داده شده در سی دی عبور کند و کد دوباره بخوان سی دی مدام تکرار میشود و شما مجبوذ میشوید عملیات را abort کنید و اون داده هایی را که تا این لحظه خوانده شده است با توجه به مطالب شما درست هست و خوانده شده و در ram یا هارد جای گرفته است.
ولی به احتمال بسیار زیاد این داده ها به درد نخواهند شد چون حتما هم ناقص خواهید بود و مانند نقشه ای میماند که نصفش یا بیشتر پاره شده باشد.

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

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

حالا لازمه لودش کنی توی رم ، بعدش تغییراتی درش اعمال کنی و بعد دوباره بنویسیش . برای لود کردن باید آدرس محلش رو بگی . یعنی مثلا بگی فلان سکتور رو برام لود کن . خوب می دونی این فایل کجا میره و در چه سکتوری؟

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

bluray
پنج شنبه 23 اردیبهشت 1389, 16:43 عصر
اصلا این کار با اون چیزی که شما میگید متفاوته وقتی به یک سی دی قفل گذاشته میشود معنیش این نیست که از شما کد برای ورود بخواد بلکه داخل سی دی مکانهایی را با فرمت متفاوت کد گذاری میکند یعنی به معنی فیزیکی آن محل را بیستر می سوزاند و وقتی درایو شما به این محل میرسد نمیتواند از فرمت قرار داده شده در سی دی عبور کند و کد دوباره بخوان سی دی مدام تکرار میشود و شما مجبوذ میشوید عملیات را abort کنید و اون داده هایی را که تا این لحظه خوانده شده است با توجه به مطالب شما درست هست و خوانده شده و در ram یا هارد جای گرفته است.
ولی به احتمال بسیار زیاد این داده ها به درد نخواهند شد چون حتما هم ناقص خواهید بود و مانند نقشه ای میماند که نصفش یا بیشتر پاره شده باشد.

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

ببینید لازم به این کار نیست همانطور که بالا اشاره کردم شما برای چی دو بار کار رو انجام میدید شما داده ها را توسط وقفه 13h و یا سایر ابزار ها بصورت سطح پایین از اروی دیسک بخوانید مطمئنا با این کار هم اطلاع خواهید داشت که کجای ram قرار دادید حالا همان گفته های خودتان را پیاده سازی کنید.
موفق باشید.
منم با حرفت موافقم اما بحث ما برای مثلا روی سی دی آهنگی هست که از 10تا فایل توش 9تاش کپی می شه و آخری ارور می ده . یا مشابه این و هدفمون هم رد کردن این نقطه و طی کردنش هست .این تز رو استادمون داده و هرچی ما گفتیم استاد این در موارد خاصی شدنی هست اون گفت برید و این موارد رو پیدا کنید(سی دی هایی که روش قفل سخت افزاری هست) ، پیاده سازی کنید در محیط دیباگ و 3نمره پایان ترم رو بگیرید یا باهاش خداحافظی کنید .
اون فایل کپی می شه و البته می شه گفت کامل کپی می شه اما چیزی نیست که شما بتونی ببینیش . اگر آدرسی که فایل درونش ریخته می شه رو پیدا کنم حله . یه تغییراتی بلدیم روش بدیم در محیط debug

اما اگه امکان داره در مورد سرویس 13یه مقداری توضیح بده و جزئیات درونش رو با مثال بهم بگو .

tdkhakpur
پنج شنبه 23 اردیبهشت 1389, 17:53 عصر
اگه امکان داره در مورد سرویس 13یه مقداری توضیح بده و جزئیات درونش رو با مثال بهم بگو .
اصلا بحث فایل را در مورد خواندن مستقیم داده از دیسک را از ذهن خود دور کنید. در این حالت - فایلی در میان نیست اگر بخواهید با بحث خواندن فایل وارد قضیه شوید توابع موجود که کار خواندن فایل را انجام میدهند اجازه عبور از مرز قفل را به شما نخواهند داد!!
شما در مورد فلاپی صحبت کردید ولی حالا بحث را به یک وسیله بلوکی از نوع شبکه انتقال دادید.
به هر صورت من در مورد فلاپی و هارد گفته ها را بگم شما در مورد cd rom امتحان کنید. البته به نظرم نرم افزار شناسایی cd rom باید روی سیستم نصب شده باشد.
وقفه 13h یک بصورت زیر یک تراک را داخل ram لود میکند.


buffer db 1024 dup(?)

push ds
pop es
lea bx, buffer
mov ah, 2
mov dl, 2 ;شماره درایو
mov dh, 1 ; شماره هد
mov al, 1 ; تعداد سکتور هایی که باید خوانده شود
mov ch, 1 ; شماره تراک
mov cl , 1 ; شماره سکتور
int 13h

با استفاده از کد فوق شما میتوانید از درایو c به مقدار یک سکتور که در حالت استاندارد 512 بایت هست از سکتور 1 و هد 1 و تراک 1 خوانده و داخل buffer بریزید.