PDA

View Full Version : سوال: باز کردن یک فایل exe بصورت باینری و ویرایش کردن



RaminRHK
دوشنبه 02 شهریور 1394, 14:55 عصر
سلام دوستان
من یه سوال داشتم که هرجا دنبالش میگردم به جوابی نرسیدم
ببینید فرض میکنیم من یک برنامه با vb.net نوشتم که یک Button داره و وقتی روش کلیک میکنید پیام میده مثلا name
که میشه به شکل زیر :


Public Class Form1


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox("Name")
End Sub
End Class




حالا اینو کمپایل میکنیم و فایل exe رو به ما میده
حالا میخوام یه برنامه دیگه با vb.net بنویسم که این فایل exe رو باز کنه بجای name بنویسه مثلا Ramin و بعد مجدد اونو کمپایل کنه
ممنون میشم یه نمونه سورس یا راهنمایی بکنید

Reza-HNA
دوشنبه 02 شهریور 1394, 17:31 عصر
اگر اندازه رشته جدیدتون با رشته قبلی یکی باشه یا کمتر میتونید فایل رو به صورت هگز بخونید ، داخلش جستجو کنید و بعد جایگزین کنید و در نهایت سیو کنید ، مثلا فایل exe رو باز کنید به جای name بنویسید amir.
ولی اگر رشته جدید بلند تر از قبلی هست فکر میکنم باید به زبان IL دیکمپایل بشه و بعد رشته عوض بشه و بعد کمپایل و سیو بشه ( یه جورایی مربوط به میشه به مباحث کرک ) که برای این کار نمونه سورس هم موجوده کتابخونه هاش هم اگر اشتباه نکنم dnlib و Mono.Cecil هست .
باز اگر مشکلی بود بگید بیشتر توضیح بدم .
موفق باشید.

hsgpro
دوشنبه 02 شهریور 1394, 18:05 عصر
سلام
خب وقتی هر دو برنامه رو خودتون می نویسید یه جوری در برنامه اول API چیزی درست کنید که برنامه دوم بهش پاس بده تا اونو نشون بده.
مثلاً ساده ترین راهش اینه که در برنامه اول خط فرمان (Command Line) اجرا رو چک کنه و طبق اون پیام رو نشون بده بعد برنامه دوم برنامه اول رو با خط فرمان به خصوص اجرا کنه یا می تونید تنظیمش رو از فایل مثلاً xml هم لود کنید ولی روش خط فرمان بهتره.

RaminRHK
دوشنبه 02 شهریور 1394, 19:03 عصر
یه چیزایی دستگیرم شد ولی راه ساده تری نداره دوستان مثلا من بیام بجای خوندن فایلexe سورس برنامه رو همون سورس رو داخل برنامه بزارم و بعد از تعغیرات برنامه خودش اونو کمپایل کنه؟
برای مثال ما یک برنامه در نظر میگیرم که یک سایت رو باز میکنه من یه فرم جدید میسازم به اسمForm2 و حالا میخوام توسط خود برنامه بعد از ویرایشی که روش انجام دادم اون رو کمپایل کنم؟ یعنی فقط فرم 2 برام کمپایل و یه فایل exe براش ساخته بشه ؟

بعد از این سوال هم یک نگاه به کد زیر بندازین مربوط به سوال پست اول هست :
FileOpen(1, Application.StartupPath & "\stub.exe", OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.Default) Stub = Space(LOF(1))
FileGet(1, Stub)
FileClose(1)
FileOpen(1, s.FileName & ".exe", OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.Default)
FilePut(1, Stub & spl & text1 & spl & text2 & spl & CarbonFiberTextBox4.Text & spl & CheckBox5.CheckState & spl & "Dan" & spl & CheckBox6.CheckState & spl & "Ramin" & spl & CheckBox7.CheckState & spl & CarbonFiberTextBox6.Text)
FileClose(1)
MsgBox("Done")