Bilgi Android Programlama Rehberim (QC #1) - QCN Yedekleme Fonksiyonu

Zenlty

Firmware Team Leader at OMIX Mobile Technology
VIP Üye
Katılım
23 Haz 2018
Mesajlar
1,120
Tepkime puanı
5,741
Puanları
113
Yaş
22
Konum
Beşiktaş , İstanbul , Türkiye
Çevrimdışı
Merhaba, bu yazımda sizlere QCN yedekleme fonksiyonlarını nasıl kullanabileceğinizi anlatacağım.
Android Programlama Rehberim adlı serinin ilk konusu olacak, bundan sonra bu tarz yönetimsel araçların kullanılması, yönetilmesi ve yürütülebilmesinden bahsedeceğim.
UYARI : Burada anlatılan işlemler yalnızca onarım ve bakım amaçlıdır.
UYARI : Bu rehberi kullanarak yapılan işlemlerden doğacak herhangi bir sorundan kullanıcı sorumludur.
UYARI : Bu rehber ZENLTY tarafından GSMTURKEY için hazırlanmıştır. Başka kaynaklarda izinsiz şekilde paylaşılıp çoğaltılması etik değildir.
UYARI : Bu rehber Qualcomm yonga setine sahip cihazlar içindir.
UYARI : Bu tarz bir rehber ve kaynağı ücretsiz şekilde sizlerle paylaşıyorum, konuyu paylaşıp beğenerek destek olmayı unutmayın.


1615484131469.png
QCN ve beraberindeki terimlerin anlamlarını aşağıda verdiğim konumda açıkladım, konuya ufak göz atarak bilgi edinebilirsiniz.
1615484101041.png
Konu başlığında (QC) diye bahsettiğim aslında QC adlı Windows komut satırında çalışan bir programdır. 2016 yılında SFT tarafından hazırlanmıştır.
Bu da içerdiği fonksiyonlar
1615484626275.png

Gereksinimler ve Belirteçler

Kod:
Diag Port (COM)
SPC Code (Default : 000000)
QCN Yedek Yeri (Path)

Yedekleme İşlemi
Araçları indirip bir klasöre çıkartın.
Pencere_Aç.bat 'ı çalıştırın.


Karşınıza benzer şekilde bir komut satırı açılacak.
1615485025072.png
Aracı qc.exe yazıp çalıştırıyoruz ve herhangi bir yardım çıktısı alamıyoruz.
1615485102462.png
Programı incelemeye alıp gereksinimlerini inceliyoruz.
1615485230253.png
Araç bizden bir adet serialport yani DIAG Port ve filesave yani QCN yedeklenecek komut istiyor.
Yalnızca bu istenilenleri vermek yeterli olmayacaktır çünkü inceleme esnasında aracın birden çok fonksiyonu olduğunu gördüm, bu araç argumanlarla çalışıyor. Yedekleme işlemi için qcnread adlı argumanı kulanacağız.
1615485415734.png
Port argumanı için spesifik bir çalışma yapılmamış ne yazılsa tutacak şekilde yazılan argumanların sırasına göre alıyor.
Burada portu 3. argumandan alacak öncesine ek getirmemiş gerekiyor ben -p argumanını kullanmayı tercih ediyorum.
1615485757520.png
SPC bir gereksinim olduğu için bunu da tanıtmamız gerekiyor.
1615485855879.png
Yine yazılan argumanların sırasından aldığı çok belli. Arguman olarak -spc kullanalım. Eğer cihazın SPC kodunu bilmiyorsanız spc default olarak 000000 olacaktır.
Örnek kullanımı şu şekilde yapıyoruz
Kod:
qc.exe qcnread -p COM3 -f C:/Temp -spc 000000
Bu aracı C# programlama dilinde kullanabilmek için şu şekilde bir kullanım sağlayabilirsiniz.
Bir adet port için textbox, bir adet dosya kayıt yeri için savefiledialog ve log çıktısı bir textbox eklemeniz yeterli olur.

C#:
    Process process = new Process();
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.RedirectStandardOutput = true;
    process.StartInfo.RedirectStandardError = true;
    process.StartInfo.CreateNoWindow = true;
    process.StartInfo.FileName = "cmd.exe";
    process.StartInfo.Arguments = string.Concat(new string[]
    {
        "./c qc qcnread -p ",
        this.comport.Text,
        " -f ",
        this.SaveFileDialog1.FileName.ToString(),
        " -spc 000000"
    });
    process.Start();
    string[] array = process.StandardOutput.ReadToEnd().Split(new char[]
    {
        '\n'
    });
    foreach (string text in array)
    {
        this.log_box1.AppendText(text.Replace("COM" + this.ComPortstrp2.Text, this.ComPortstrp22.Text));
    }
    this.updatelog("Backup QCN Done \r\n", Color.LightGreen, true);
Bu aracı Visual Basic dilinde kullanabilmek için şu şekilde kullanım sağlayabilirsiniz.
Bir adet port için textbox, bir adet dosya kayıt yeri için savefiledialog ve log çıktısı bir textbox eklemeniz yeterli olur.

Kod:
    Dim process As Process = New Process()
    process.StartInfo.UseShellExecute = False
    process.StartInfo.RedirectStandardOutput = True
    process.StartInfo.RedirectStandardError = True
    process.StartInfo.CreateNoWindow = True
    process.StartInfo.FileName = "cmd.exe"
    process.StartInfo.Arguments = String.Concat(New String() { "./c qc qcnread -p ", Me.ComPortstrp2.Text, " -f ", Me.SaveFileDialog1.FileName.ToString(), " -spc 000000" })
    process.Start()
    Dim array As String() = process.StandardOutput.ReadToEnd().Split(New Char() { vbLf })
    For Each text As String In array
        Me.log_box1.AppendText(text.Replace("COM" + Me.ComPortstrp2.Text, Me.ComPortstrp22.Text))
    Next
    Me.updatelog("Backup QCN Done " & vbCrLf, Color.LightGreen, True)
Üst düzey programcılar ve tersine mühendisliği sevenler için IL kodlarını da paylaşıyorum.
Kod:
.method private
    instance void BackupWorker1_DoWork (
        object sender,
        class [System]System.ComponentModel.DoWorkEventArgs e
    ) cil managed
{
    // Header Size: 12 bytes
    // Code Size: 372 (0x174) bytes
    // LocalVarSig Token: 0x1100004B RID: 75
    .maxstack 4
    .locals init (
        [0] string,
        [1] string,
        [2] string[],
        [3] class [System]System.Diagnostics.Process,
        [4] string,
        [5] string[],
        [6] char[],
        [7] int32,
        [8] string[],
        [9] bool
    )

    /* 0x0003003C 00           */ IL_0000: nop
    /* 0x0003003D 02           */ IL_0001: ldarg.0
    /* 0x0003003E 6F55000006   */ IL_0002: callvirt  instance class QC_Network_Repair_Tool__Dev_Time__.HuraButton QC_Network_Repair_Tool__Dev_Time__.Form1::get_BackBTN()
    /* 0x00030043 16           */ IL_0007: ldc.i4.0
    /* 0x00030044 6FEA00000A   */ IL_0008: callvirt  instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Enabled(bool)
    /* 0x00030049 00           */ IL_000D: nop
    /* 0x0003004A 73EB00000A   */ IL_000E: newobj    instance void [System]System.Diagnostics.Process::.ctor()
    /* 0x0003004F 0D           */ IL_0013: stloc.3
    /* 0x00030050 7259050070   */ IL_0014: ldstr     "netstat"
    /* 0x00030055 0B           */ IL_0019: stloc.1
    /* 0x00030056 7269050070   */ IL_001A: ldstr     "-aon"
    /* 0x0003005B 0A           */ IL_001F: stloc.0
    /* 0x0003005C 09           */ IL_0020: ldloc.3
    /* 0x0003005D 6FEC00000A   */ IL_0021: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x00030062 16           */ IL_0026: ldc.i4.0
    /* 0x00030063 6FED00000A   */ IL_0027: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_UseShellExecute(bool)
    /* 0x00030068 00           */ IL_002C: nop
    /* 0x00030069 09           */ IL_002D: ldloc.3
    /* 0x0003006A 6FEC00000A   */ IL_002E: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x0003006F 17           */ IL_0033: ldc.i4.1
    /* 0x00030070 6FEE00000A   */ IL_0034: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_RedirectStandardOutput(bool)
    /* 0x00030075 00           */ IL_0039: nop
    /* 0x00030076 09           */ IL_003A: ldloc.3
    /* 0x00030077 6FEC00000A   */ IL_003B: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x0003007C 17           */ IL_0040: ldc.i4.1
    /* 0x0003007D 6FEF00000A   */ IL_0041: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_RedirectStandardError(bool)
    /* 0x00030082 00           */ IL_0046: nop
    /* 0x00030083 09           */ IL_0047: ldloc.3
    /* 0x00030084 6FEC00000A   */ IL_0048: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x00030089 17           */ IL_004D: ldc.i4.1
    /* 0x0003008A 6FF000000A   */ IL_004E: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_CreateNoWindow(bool)
    /* 0x0003008F 00           */ IL_0053: nop
    /* 0x00030090 09           */ IL_0054: ldloc.3
    /* 0x00030091 6FEC00000A   */ IL_0055: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x00030096 7273050070   */ IL_005A: ldstr     "cmd.exe"
    /* 0x0003009B 6FF100000A   */ IL_005F: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_FileName(string)
    /* 0x000300A0 00           */ IL_0064: nop
    /* 0x000300A1 09           */ IL_0065: ldloc.3
    /* 0x000300A2 6FEC00000A   */ IL_0066: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x000300A7 1B           */ IL_006B: ldc.i4.5
    /* 0x000300A8 8D4C000001   */ IL_006C: newarr    [mscorlib]System.String
    /* 0x000300AD 1305         */ IL_0071: stloc.s   V_5
    /* 0x000300AF 1105         */ IL_0073: ldloc.s   V_5
    /* 0x000300B1 16           */ IL_0075: ldc.i4.0
    /* 0x000300B2 72B9080070   */ IL_0076: ldstr     "./c qc qcnread -p "
    /* 0x000300B7 A2           */ IL_007B: stelem.ref
    /* 0x000300B8 00           */ IL_007C: nop
    /* 0x000300B9 1105         */ IL_007D: ldloc.s   V_5
    /* 0x000300BB 17           */ IL_007F: ldc.i4.1
    /* 0x000300BC 02           */ IL_0080: ldarg.0
    /* 0x000300BD 6F45000006   */ IL_0081: callvirt  instance class [System.Windows.Forms]System.Windows.Forms.ComboBox QC_Network_Repair_Tool__Dev_Time__.Form1::get_ComPortstrp2()
    /* 0x000300C2 6FCF00000A   */ IL_0086: callvirt  instance string [System.Windows.Forms]System.Windows.Forms.ComboBox::get_Text()
    /* 0x000300C7 A2           */ IL_008B: stelem.ref
    /* 0x000300C8 00           */ IL_008C: nop
    /* 0x000300C9 1105         */ IL_008D: ldloc.s   V_5
    /* 0x000300CB 18           */ IL_008F: ldc.i4.2
    /* 0x000300CC 72DF080070   */ IL_0090: ldstr     " -f "
    /* 0x000300D1 A2           */ IL_0095: stelem.ref
    /* 0x000300D2 00           */ IL_0096: nop
    /* 0x000300D3 1105         */ IL_0097: ldloc.s   V_5
    /* 0x000300D5 19           */ IL_0099: ldc.i4.3
    /* 0x000300D6 02           */ IL_009A: ldarg.0
    /* 0x000300D7 6F5B000006   */ IL_009B: callvirt  instance class [System.Windows.Forms]System.Windows.Forms.SaveFileDialog QC_Network_Repair_Tool__Dev_Time__.Form1::get_SaveFileDialog1()
    /* 0x000300DC 6F0001000A   */ IL_00A0: callvirt  instance string [System.Windows.Forms]System.Windows.Forms.FileDialog::get_FileName()
    /* 0x000300E1 6F0101000A   */ IL_00A5: callvirt  instance string [mscorlib]System.String::ToString()
    /* 0x000300E6 A2           */ IL_00AA: stelem.ref
    /* 0x000300E7 00           */ IL_00AB: nop
    /* 0x000300E8 1105         */ IL_00AC: ldloc.s   V_5
    /* 0x000300EA 1A           */ IL_00AE: ldc.i4.4
    /* 0x000300EB 72C1050070   */ IL_00AF: ldstr     " -spc 000000"
    /* 0x000300F0 A2           */ IL_00B4: stelem.ref
    /* 0x000300F1 00           */ IL_00B5: nop
    /* 0x000300F2 1105         */ IL_00B6: ldloc.s   V_5
    /* 0x000300F4 28F300000A   */ IL_00B8: call      string [mscorlib]System.String::Concat(string[])
    /* 0x000300F9 6FF400000A   */ IL_00BD: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_Arguments(string)
    /* 0x000300FE 00           */ IL_00C2: nop
    /* 0x000300FF 09           */ IL_00C3: ldloc.3
    /* 0x00030100 6FEC00000A   */ IL_00C4: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x00030105 72DB050070   */ IL_00C9: ldstr     "Tools\\"
    /* 0x0003010A 6FF500000A   */ IL_00CE: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_WorkingDirectory(string)
    /* 0x0003010F 00           */ IL_00D3: nop
    /* 0x00030110 09           */ IL_00D4: ldloc.3
    /* 0x00030111 6FF600000A   */ IL_00D5: callvirt  instance bool [System]System.Diagnostics.Process::Start()
    /* 0x00030116 26           */ IL_00DA: pop
    /* 0x00030117 09           */ IL_00DB: ldloc.3
    /* 0x00030118 6FF700000A   */ IL_00DC: callvirt  instance class [mscorlib]System.IO.StreamReader [System]System.Diagnostics.Process::get_StandardOutput()
    /* 0x0003011D 6FF800000A   */ IL_00E1: callvirt  instance string [mscorlib]System.IO.StreamReader::ReadToEnd()
    /* 0x00030122 17           */ IL_00E6: ldc.i4.1
    /* 0x00030123 8D80000001   */ IL_00E7: newarr    [mscorlib]System.Char
    /* 0x00030128 1306         */ IL_00EC: stloc.s   V_6
    /* 0x0003012A 1106         */ IL_00EE: ldloc.s   V_6
    /* 0x0003012C 16           */ IL_00F0: ldc.i4.0
    /* 0x0003012D 1F0A         */ IL_00F1: ldc.i4.s  10
    /* 0x0003012F 9D           */ IL_00F3: stelem.i2
    /* 0x00030130 1106         */ IL_00F4: ldloc.s   V_6
    /* 0x00030132 6FD000000A   */ IL_00F6: callvirt  instance string[] [mscorlib]System.String::Split(char[])
    /* 0x00030137 0C           */ IL_00FB: stloc.2
    /* 0x00030138 08           */ IL_00FC: ldloc.2
    /* 0x00030139 1308         */ IL_00FD: stloc.s   V_8
    /* 0x0003013B 16           */ IL_00FF: ldc.i4.0
    /* 0x0003013C 1307         */ IL_0100: stloc.s   V_7
    /* 0x0003013E 2B41         */ IL_0102: br.s      IL_0145
    // loop start (head: IL_0145)
        /* 0x00030140 1108         */ IL_0104: ldloc.s   V_8
        /* 0x00030142 1107         */ IL_0106: ldloc.s   V_7
        /* 0x00030144 9A           */ IL_0108: ldelem.ref
        /* 0x00030145 1304         */ IL_0109: stloc.s   V_4
        /* 0x00030147 02           */ IL_010B: ldarg.0
        /* 0x00030148 6F41000006   */ IL_010C: callvirt  instance class [System.Windows.Forms]System.Windows.Forms.RichTextBox QC_Network_Repair_Tool__Dev_Time__.Form1::get_log_box1()
        /* 0x0003014D 1104         */ IL_0111: ldloc.s   V_4
        /* 0x0003014F 72E9050070   */ IL_0113: ldstr     "COM"
        /* 0x00030154 02           */ IL_0118: ldarg.0
        /* 0x00030155 6F45000006   */ IL_0119: callvirt  instance class [System.Windows.Forms]System.Windows.Forms.ComboBox QC_Network_Repair_Tool__Dev_Time__.Form1::get_ComPortstrp2()
        /* 0x0003015A 6FCF00000A   */ IL_011E: callvirt  instance string [System.Windows.Forms]System.Windows.Forms.ComboBox::get_Text()
        /* 0x0003015F 28E400000A   */ IL_0123: call      string [mscorlib]System.String::Concat(string, string)
        /* 0x00030164 02           */ IL_0128: ldarg.0
        /* 0x00030165 6F43000006   */ IL_0129: callvirt  instance class QC_Network_Repair_Tool__Dev_Time__.HuraComboBox QC_Network_Repair_Tool__Dev_Time__.Form1::get_ComPortstrp22()
        /* 0x0003016A 6FCF00000A   */ IL_012E: callvirt  instance string [System.Windows.Forms]System.Windows.Forms.ComboBox::get_Text()
        /* 0x0003016F 6F6D00000A   */ IL_0133: callvirt  instance string [mscorlib]System.String::Replace(string, string)
        /* 0x00030174 6FDC00000A   */ IL_0138: callvirt  instance void [System.Windows.Forms]System.Windows.Forms.TextBoxBase::AppendText(string)
        /* 0x00030179 00           */ IL_013D: nop
        /* 0x0003017A 1107         */ IL_013E: ldloc.s   V_7
        /* 0x0003017C 17           */ IL_0140: ldc.i4.1
        /* 0x0003017D D6           */ IL_0141: add.ovf
        /* 0x0003017E 1307         */ IL_0142: stloc.s   V_7
        /* 0x00030180 00           */ IL_0144: nop

        /* 0x00030181 1107         */ IL_0145: ldloc.s   V_7
        /* 0x00030183 1108         */ IL_0147: ldloc.s   V_8
        /* 0x00030185 8E           */ IL_0149: ldlen
        /* 0x00030186 B7           */ IL_014A: conv.ovf.i4
        /* 0x00030187 FE04         */ IL_014B: clt
        /* 0x00030189 1309         */ IL_014D: stloc.s   V_9
        /* 0x0003018B 1109         */ IL_014F: ldloc.s   V_9
        /* 0x0003018D 2DB1         */ IL_0151: brtrue.s  IL_0104
    // end loop

    /* 0x0003018F 02           */ IL_0153: ldarg.0
    /* 0x00030190 72E9080070   */ IL_0154: ldstr     "Backup QCN Done \r\n"
    /* 0x00030195 28E700000A   */ IL_0159: call      valuetype [System.Drawing]System.Drawing.Color [System.Drawing]System.Drawing.Color::get_LightGreen()
    /* 0x0003019A 17           */ IL_015E: ldc.i4.1
    /* 0x0003019B 6F62000006   */ IL_015F: callvirt  instance void QC_Network_Repair_Tool__Dev_Time__.Form1::updatelog(string, valuetype [System.Drawing]System.Drawing.Color, bool)
    /* 0x000301A0 00           */ IL_0164: nop
    /* 0x000301A1 02           */ IL_0165: ldarg.0
    /* 0x000301A2 6F55000006   */ IL_0166: callvirt  instance class QC_Network_Repair_Tool__Dev_Time__.HuraButton QC_Network_Repair_Tool__Dev_Time__.Form1::get_BackBTN()
    /* 0x000301A7 17           */ IL_016B: ldc.i4.1
    /* 0x000301A8 6FEA00000A   */ IL_016C: callvirt  instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Enabled(bool)
    /* 0x000301AD 00           */ IL_0171: nop
    /* 0x000301AE 00           */ IL_0172: nop
    /* 0x000301AF 2A           */ IL_0173: ret
Bilgilendirme : Artık Qualcomm yonga setinde QCN yedekleme işlemleri yapıp uzaya çıktığını sananlara bakarak gülebilirsiniz.
Bir sonraki eğitimimizde QCN editleme işlemini yapmayı göstereceğim.
Konu altına istediğiniz herhangi bir konuda rehber talebinde bulunabilirsiniz.
İyi geliştirmeler dilerim.


Lütfen konu altına yorum yaparken Teşekkürler, Elinize sağlık, süper, sağol, helal olsun gibi kelimeler yazıp konuları kirletmeyelim. Herkes aradığını bu mesajlar yüzünden bulamıyor. Altta beğen butonuna basmanız yeterlidir. Konu ile ilgili sorununuzu veya çözümünüz varsa yorum yapın. Konu ile alakasız cevaplar silinecektir.
 
Moderatör tarafında düzenlendi:
Anlatım çok iyi fakat indirme bağlantısını koymayı unutmuş olabilir misiniz?
 
Merhaba, bu yazımda sizlere QCN yedekleme ve geri yükleme fonksiyonlarını nasıl kullanabileceğinizi anlatacağım.
Android Programlama Rehberim adlı serinin ilk konusu olacak, bundan sonra bu tarz yönetimsel araçların kullanılması, yönetilmesi ve yürütülebilmesinden bahsedeceğim.
UYARI : Burada anlatılan işlemler yalnızca onarım ve bakım amaçlıdır.
UYARI : Bu rehberi kullanarak yapılan işlemlerden doğacak herhangi bir sorundan kullanıcı sorumludur.
UYARI : Bu rehber ZENLTY tarafından GSMTURKEY için hazırlanmıştır. Başka kaynaklarda izinsiz şekilde paylaşılıp çoğaltılması etik değildir.
UYARI : Bu rehber Qualcomm yonga setine sahip cihazlar içindir.
UYARI : Bu tarz bir rehber ve kaynağı ücretsiz şekilde sizlerle paylaşıyorum, konuyu paylaşıp beğenerek destek olmayı unutmayın.


Ekli dosyayı görüntüle 14941
QCN ve beraberindeki terimlerin anlamlarını aşağıda verdiğim konumda açıkladım, konuya ufak göz atarak bilgi edinebilirsiniz.
Ekli dosyayı görüntüle 14940
Konu başlığında (QC) diye bahsettiğim aslında QC adlı Windows komut satırında çalışan bir programdır. 2016 yılında SFT tarafından hazırlanmıştır.
Bu da içerdiği fonksiyonlar
Ekli dosyayı görüntüle 14942

Gereksinimler ve Belirteçler

Kod:
Diag Port (COM)
SPC Code (Default : 000000)
QCN Yedek Yeri (Path)

Yedekleme İşlemi
Araçları indirip bir klasöre çıkartın.
Pencere_Aç.bat 'ı çalıştırın.


Karşınıza benzer şekilde bir komut satırı açılacak.
Ekli dosyayı görüntüle 14943
Aracı qc.exe yazıp çalıştırıyoruz ve herhangi bir yardım çıktısı alamıyoruz.
Ekli dosyayı görüntüle 14944
Programı incelemeye alıp gereksinimlerini inceliyoruz.
Ekli dosyayı görüntüle 14945
Araç bizden bir adet serialport yani DIAG Port ve filesave yani QCN yedeklenecek komut istiyor.
Yalnızca bu istenilenleri vermek yeterli olmayacaktır çünkü inceleme esnasında aracın birden çok fonksiyonu olduğunu gördüm, bu araç argumanlarla çalışıyor. Yedekleme işlemi için qcnread adlı argumanı kulanacağız.
Ekli dosyayı görüntüle 14946
Port argumanı için spesifik bir çalışma yapılmamış ne yazılsa tutacak şekilde yazılan argumanların sırasına göre alıyor.
Burada portu 3. argumandan alacak öncesine ek getirmemiş gerekiyor ben -p argumanını kullanmayı tercih ediyorum.
Ekli dosyayı görüntüle 14947
SPC bir gereksinim olduğu için bunu da tanıtmamız gerekiyor.
Ekli dosyayı görüntüle 14948
Yine yazılan argumanların sırasından aldığı çok belli. Arguman olarak -spc kullanalım. Eğer cihazın SPC kodunu bilmiyorsanız spc default olarak 000000 olacaktır.
Örnek kullanımı şu şekilde yapıyoruz
Kod:
qc.exe qcnread -p COM3 -f C:/Temp -spc 000000
Bu aracı C# programlama dilinde kullanabilmek için şu şekilde bir kullanım sağlayabilirsiniz.
Bir adet port için textbox, bir adet dosya kayıt yeri için savefiledialog ve log çıktısı bir textbox eklemeniz yeterli olur.

C#:
    Process process = new Process();
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.RedirectStandardOutput = true;
    process.StartInfo.RedirectStandardError = true;
    process.StartInfo.CreateNoWindow = true;
    process.StartInfo.FileName = "cmd.exe";
    process.StartInfo.Arguments = string.Concat(new string[]
    {
        "./c qc qcnread -p ",
        this.comport.Text,
        " -f ",
        this.SaveFileDialog1.FileName.ToString(),
        " -spc 000000"
    });
    process.Start();
    string[] array = process.StandardOutput.ReadToEnd().Split(new char[]
    {
        '\n'
    });
    foreach (string text in array)
    {
        this.log_box1.AppendText(text.Replace("COM" + this.ComPortstrp2.Text, this.ComPortstrp22.Text));
    }
    this.updatelog("Backup QCN Done \r\n", Color.LightGreen, true);
Bu aracı Visual Basic dilinde kullanabilmek için şu şekilde kullanım sağlayabilirsiniz.
Bir adet port için textbox, bir adet dosya kayıt yeri için savefiledialog ve log çıktısı bir textbox eklemeniz yeterli olur.

Kod:
    Dim process As Process = New Process()
    process.StartInfo.UseShellExecute = False
    process.StartInfo.RedirectStandardOutput = True
    process.StartInfo.RedirectStandardError = True
    process.StartInfo.CreateNoWindow = True
    process.StartInfo.FileName = "cmd.exe"
    process.StartInfo.Arguments = String.Concat(New String() { "./c qc qcnread -p ", Me.ComPortstrp2.Text, " -f ", Me.SaveFileDialog1.FileName.ToString(), " -spc 000000" })
    process.Start()
    Dim array As String() = process.StandardOutput.ReadToEnd().Split(New Char() { vbLf })
    For Each text As String In array
        Me.log_box1.AppendText(text.Replace("COM" + Me.ComPortstrp2.Text, Me.ComPortstrp22.Text))
    Next
    Me.updatelog("Backup QCN Done " & vbCrLf, Color.LightGreen, True)
Üst düzey programcılar ve tersine mühendisliği sevenler için IL kodlarını da paylaşıyorum.
Kod:
.method private
    instance void BackupWorker1_DoWork (
        object sender,
        class [System]System.ComponentModel.DoWorkEventArgs e
    ) cil managed
{
    // Header Size: 12 bytes
    // Code Size: 372 (0x174) bytes
    // LocalVarSig Token: 0x1100004B RID: 75
    .maxstack 4
    .locals init (
        [0] string,
        [1] string,
        [2] string[],
        [3] class [System]System.Diagnostics.Process,
        [4] string,
        [5] string[],
        [6] char[],
        [7] int32,
        [8] string[],
        [9] bool
    )

    /* 0x0003003C 00           */ IL_0000: nop
    /* 0x0003003D 02           */ IL_0001: ldarg.0
    /* 0x0003003E 6F55000006   */ IL_0002: callvirt  instance class QC_Network_Repair_Tool__Dev_Time__.HuraButton QC_Network_Repair_Tool__Dev_Time__.Form1::get_BackBTN()
    /* 0x00030043 16           */ IL_0007: ldc.i4.0
    /* 0x00030044 6FEA00000A   */ IL_0008: callvirt  instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Enabled(bool)
    /* 0x00030049 00           */ IL_000D: nop
    /* 0x0003004A 73EB00000A   */ IL_000E: newobj    instance void [System]System.Diagnostics.Process::.ctor()
    /* 0x0003004F 0D           */ IL_0013: stloc.3
    /* 0x00030050 7259050070   */ IL_0014: ldstr     "netstat"
    /* 0x00030055 0B           */ IL_0019: stloc.1
    /* 0x00030056 7269050070   */ IL_001A: ldstr     "-aon"
    /* 0x0003005B 0A           */ IL_001F: stloc.0
    /* 0x0003005C 09           */ IL_0020: ldloc.3
    /* 0x0003005D 6FEC00000A   */ IL_0021: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x00030062 16           */ IL_0026: ldc.i4.0
    /* 0x00030063 6FED00000A   */ IL_0027: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_UseShellExecute(bool)
    /* 0x00030068 00           */ IL_002C: nop
    /* 0x00030069 09           */ IL_002D: ldloc.3
    /* 0x0003006A 6FEC00000A   */ IL_002E: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x0003006F 17           */ IL_0033: ldc.i4.1
    /* 0x00030070 6FEE00000A   */ IL_0034: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_RedirectStandardOutput(bool)
    /* 0x00030075 00           */ IL_0039: nop
    /* 0x00030076 09           */ IL_003A: ldloc.3
    /* 0x00030077 6FEC00000A   */ IL_003B: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x0003007C 17           */ IL_0040: ldc.i4.1
    /* 0x0003007D 6FEF00000A   */ IL_0041: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_RedirectStandardError(bool)
    /* 0x00030082 00           */ IL_0046: nop
    /* 0x00030083 09           */ IL_0047: ldloc.3
    /* 0x00030084 6FEC00000A   */ IL_0048: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x00030089 17           */ IL_004D: ldc.i4.1
    /* 0x0003008A 6FF000000A   */ IL_004E: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_CreateNoWindow(bool)
    /* 0x0003008F 00           */ IL_0053: nop
    /* 0x00030090 09           */ IL_0054: ldloc.3
    /* 0x00030091 6FEC00000A   */ IL_0055: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x00030096 7273050070   */ IL_005A: ldstr     "cmd.exe"
    /* 0x0003009B 6FF100000A   */ IL_005F: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_FileName(string)
    /* 0x000300A0 00           */ IL_0064: nop
    /* 0x000300A1 09           */ IL_0065: ldloc.3
    /* 0x000300A2 6FEC00000A   */ IL_0066: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x000300A7 1B           */ IL_006B: ldc.i4.5
    /* 0x000300A8 8D4C000001   */ IL_006C: newarr    [mscorlib]System.String
    /* 0x000300AD 1305         */ IL_0071: stloc.s   V_5
    /* 0x000300AF 1105         */ IL_0073: ldloc.s   V_5
    /* 0x000300B1 16           */ IL_0075: ldc.i4.0
    /* 0x000300B2 72B9080070   */ IL_0076: ldstr     "./c qc qcnread -p "
    /* 0x000300B7 A2           */ IL_007B: stelem.ref
    /* 0x000300B8 00           */ IL_007C: nop
    /* 0x000300B9 1105         */ IL_007D: ldloc.s   V_5
    /* 0x000300BB 17           */ IL_007F: ldc.i4.1
    /* 0x000300BC 02           */ IL_0080: ldarg.0
    /* 0x000300BD 6F45000006   */ IL_0081: callvirt  instance class [System.Windows.Forms]System.Windows.Forms.ComboBox QC_Network_Repair_Tool__Dev_Time__.Form1::get_ComPortstrp2()
    /* 0x000300C2 6FCF00000A   */ IL_0086: callvirt  instance string [System.Windows.Forms]System.Windows.Forms.ComboBox::get_Text()
    /* 0x000300C7 A2           */ IL_008B: stelem.ref
    /* 0x000300C8 00           */ IL_008C: nop
    /* 0x000300C9 1105         */ IL_008D: ldloc.s   V_5
    /* 0x000300CB 18           */ IL_008F: ldc.i4.2
    /* 0x000300CC 72DF080070   */ IL_0090: ldstr     " -f "
    /* 0x000300D1 A2           */ IL_0095: stelem.ref
    /* 0x000300D2 00           */ IL_0096: nop
    /* 0x000300D3 1105         */ IL_0097: ldloc.s   V_5
    /* 0x000300D5 19           */ IL_0099: ldc.i4.3
    /* 0x000300D6 02           */ IL_009A: ldarg.0
    /* 0x000300D7 6F5B000006   */ IL_009B: callvirt  instance class [System.Windows.Forms]System.Windows.Forms.SaveFileDialog QC_Network_Repair_Tool__Dev_Time__.Form1::get_SaveFileDialog1()
    /* 0x000300DC 6F0001000A   */ IL_00A0: callvirt  instance string [System.Windows.Forms]System.Windows.Forms.FileDialog::get_FileName()
    /* 0x000300E1 6F0101000A   */ IL_00A5: callvirt  instance string [mscorlib]System.String::ToString()
    /* 0x000300E6 A2           */ IL_00AA: stelem.ref
    /* 0x000300E7 00           */ IL_00AB: nop
    /* 0x000300E8 1105         */ IL_00AC: ldloc.s   V_5
    /* 0x000300EA 1A           */ IL_00AE: ldc.i4.4
    /* 0x000300EB 72C1050070   */ IL_00AF: ldstr     " -spc 000000"
    /* 0x000300F0 A2           */ IL_00B4: stelem.ref
    /* 0x000300F1 00           */ IL_00B5: nop
    /* 0x000300F2 1105         */ IL_00B6: ldloc.s   V_5
    /* 0x000300F4 28F300000A   */ IL_00B8: call      string [mscorlib]System.String::Concat(string[])
    /* 0x000300F9 6FF400000A   */ IL_00BD: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_Arguments(string)
    /* 0x000300FE 00           */ IL_00C2: nop
    /* 0x000300FF 09           */ IL_00C3: ldloc.3
    /* 0x00030100 6FEC00000A   */ IL_00C4: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x00030105 72DB050070   */ IL_00C9: ldstr     "Tools\\"
    /* 0x0003010A 6FF500000A   */ IL_00CE: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_WorkingDirectory(string)
    /* 0x0003010F 00           */ IL_00D3: nop
    /* 0x00030110 09           */ IL_00D4: ldloc.3
    /* 0x00030111 6FF600000A   */ IL_00D5: callvirt  instance bool [System]System.Diagnostics.Process::Start()
    /* 0x00030116 26           */ IL_00DA: pop
    /* 0x00030117 09           */ IL_00DB: ldloc.3
    /* 0x00030118 6FF700000A   */ IL_00DC: callvirt  instance class [mscorlib]System.IO.StreamReader [System]System.Diagnostics.Process::get_StandardOutput()
    /* 0x0003011D 6FF800000A   */ IL_00E1: callvirt  instance string [mscorlib]System.IO.StreamReader::ReadToEnd()
    /* 0x00030122 17           */ IL_00E6: ldc.i4.1
    /* 0x00030123 8D80000001   */ IL_00E7: newarr    [mscorlib]System.Char
    /* 0x00030128 1306         */ IL_00EC: stloc.s   V_6
    /* 0x0003012A 1106         */ IL_00EE: ldloc.s   V_6
    /* 0x0003012C 16           */ IL_00F0: ldc.i4.0
    /* 0x0003012D 1F0A         */ IL_00F1: ldc.i4.s  10
    /* 0x0003012F 9D           */ IL_00F3: stelem.i2
    /* 0x00030130 1106         */ IL_00F4: ldloc.s   V_6
    /* 0x00030132 6FD000000A   */ IL_00F6: callvirt  instance string[] [mscorlib]System.String::Split(char[])
    /* 0x00030137 0C           */ IL_00FB: stloc.2
    /* 0x00030138 08           */ IL_00FC: ldloc.2
    /* 0x00030139 1308         */ IL_00FD: stloc.s   V_8
    /* 0x0003013B 16           */ IL_00FF: ldc.i4.0
    /* 0x0003013C 1307         */ IL_0100: stloc.s   V_7
    /* 0x0003013E 2B41         */ IL_0102: br.s      IL_0145
    // loop start (head: IL_0145)
        /* 0x00030140 1108         */ IL_0104: ldloc.s   V_8
        /* 0x00030142 1107         */ IL_0106: ldloc.s   V_7
        /* 0x00030144 9A           */ IL_0108: ldelem.ref
        /* 0x00030145 1304         */ IL_0109: stloc.s   V_4
        /* 0x00030147 02           */ IL_010B: ldarg.0
        /* 0x00030148 6F41000006   */ IL_010C: callvirt  instance class [System.Windows.Forms]System.Windows.Forms.RichTextBox QC_Network_Repair_Tool__Dev_Time__.Form1::get_log_box1()
        /* 0x0003014D 1104         */ IL_0111: ldloc.s   V_4
        /* 0x0003014F 72E9050070   */ IL_0113: ldstr     "COM"
        /* 0x00030154 02           */ IL_0118: ldarg.0
        /* 0x00030155 6F45000006   */ IL_0119: callvirt  instance class [System.Windows.Forms]System.Windows.Forms.ComboBox QC_Network_Repair_Tool__Dev_Time__.Form1::get_ComPortstrp2()
        /* 0x0003015A 6FCF00000A   */ IL_011E: callvirt  instance string [System.Windows.Forms]System.Windows.Forms.ComboBox::get_Text()
        /* 0x0003015F 28E400000A   */ IL_0123: call      string [mscorlib]System.String::Concat(string, string)
        /* 0x00030164 02           */ IL_0128: ldarg.0
        /* 0x00030165 6F43000006   */ IL_0129: callvirt  instance class QC_Network_Repair_Tool__Dev_Time__.HuraComboBox QC_Network_Repair_Tool__Dev_Time__.Form1::get_ComPortstrp22()
        /* 0x0003016A 6FCF00000A   */ IL_012E: callvirt  instance string [System.Windows.Forms]System.Windows.Forms.ComboBox::get_Text()
        /* 0x0003016F 6F6D00000A   */ IL_0133: callvirt  instance string [mscorlib]System.String::Replace(string, string)
        /* 0x00030174 6FDC00000A   */ IL_0138: callvirt  instance void [System.Windows.Forms]System.Windows.Forms.TextBoxBase::AppendText(string)
        /* 0x00030179 00           */ IL_013D: nop
        /* 0x0003017A 1107         */ IL_013E: ldloc.s   V_7
        /* 0x0003017C 17           */ IL_0140: ldc.i4.1
        /* 0x0003017D D6           */ IL_0141: add.ovf
        /* 0x0003017E 1307         */ IL_0142: stloc.s   V_7
        /* 0x00030180 00           */ IL_0144: nop

        /* 0x00030181 1107         */ IL_0145: ldloc.s   V_7
        /* 0x00030183 1108         */ IL_0147: ldloc.s   V_8
        /* 0x00030185 8E           */ IL_0149: ldlen
        /* 0x00030186 B7           */ IL_014A: conv.ovf.i4
        /* 0x00030187 FE04         */ IL_014B: clt
        /* 0x00030189 1309         */ IL_014D: stloc.s   V_9
        /* 0x0003018B 1109         */ IL_014F: ldloc.s   V_9
        /* 0x0003018D 2DB1         */ IL_0151: brtrue.s  IL_0104
    // end loop

    /* 0x0003018F 02           */ IL_0153: ldarg.0
    /* 0x00030190 72E9080070   */ IL_0154: ldstr     "Backup QCN Done \r\n"
    /* 0x00030195 28E700000A   */ IL_0159: call      valuetype [System.Drawing]System.Drawing.Color [System.Drawing]System.Drawing.Color::get_LightGreen()
    /* 0x0003019A 17           */ IL_015E: ldc.i4.1
    /* 0x0003019B 6F62000006   */ IL_015F: callvirt  instance void QC_Network_Repair_Tool__Dev_Time__.Form1::updatelog(string, valuetype [System.Drawing]System.Drawing.Color, bool)
    /* 0x000301A0 00           */ IL_0164: nop
    /* 0x000301A1 02           */ IL_0165: ldarg.0
    /* 0x000301A2 6F55000006   */ IL_0166: callvirt  instance class QC_Network_Repair_Tool__Dev_Time__.HuraButton QC_Network_Repair_Tool__Dev_Time__.Form1::get_BackBTN()
    /* 0x000301A7 17           */ IL_016B: ldc.i4.1
    /* 0x000301A8 6FEA00000A   */ IL_016C: callvirt  instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Enabled(bool)
    /* 0x000301AD 00           */ IL_0171: nop
    /* 0x000301AE 00           */ IL_0172: nop
    /* 0x000301AF 2A           */ IL_0173: ret
Bilgilendirme : Artık Qualcomm yonga setinde QCN yedekleme işlemleri yapıp uzaya çıktığını sananlara bakarak gülebilirsiniz.
Bir sonraki eğitimimizde QCN editleme işlemini yapmayı göstereceğim.
Konu altına istediğiniz herhangi bir konuda rehber talebinde bulunabilirsiniz.
İyi geliştirmeler dilerim.


Lütfen konu altına yorum yaparken Teşekkürler, Elinize sağlık, süper, sağol, helal olsun gibi kelimeler yazıp konuları kirletmeyelim. Herkes aradığını bu mesajlar yüzünden bulamıyor. Altta beğen butonuna basmanız yeterlidir. Konu ile ilgili sorununuzu veya çözümünüz varsa yorum yapın. Konu ile alakasız cevaplar silinecektir.
kusura bakmasanız kunlandığınız editör nedir
 
"Yedekleme İşlemi
Araçları indirip bir klasöre çıkartın.
Pencere_Aç.bat 'ı çalıştırın"
araçları nereden indirelim hocam
 
Emeğinize sağlık hocam, acaba qc.exe'yi nerede bulabiliriz. Paylaşırsanız çok sevinirim. Şimdiden teşekküler 👋👍
 
Merhaba, bu yazımda sizlere QCN yedekleme fonksiyonlarını nasıl kullanabileceğinizi anlatacağım.
Android Programlama Rehberim adlı serinin ilk konusu olacak, bundan sonra bu tarz yönetimsel araçların kullanılması, yönetilmesi ve yürütülebilmesinden bahsedeceğim.
UYARI : Burada anlatılan işlemler yalnızca onarım ve bakım amaçlıdır.
UYARI : Bu rehberi kullanarak yapılan işlemlerden doğacak herhangi bir sorundan kullanıcı sorumludur.
UYARI : Bu rehber ZENLTY tarafından GSMTURKEY için hazırlanmıştır. Başka kaynaklarda izinsiz şekilde paylaşılıp çoğaltılması etik değildir.
UYARI : Bu rehber Qualcomm yonga setine sahip cihazlar içindir.
UYARI : Bu tarz bir rehber ve kaynağı ücretsiz şekilde sizlerle paylaşıyorum, konuyu paylaşıp beğenerek destek olmayı unutmayın.


Ekli dosyayı görüntüle 14941
QCN ve beraberindeki terimlerin anlamlarını aşağıda verdiğim konumda açıkladım, konuya ufak göz atarak bilgi edinebilirsiniz.
Ekli dosyayı görüntüle 14940
Konu başlığında (QC) diye bahsettiğim aslında QC adlı Windows komut satırında çalışan bir programdır. 2016 yılında SFT tarafından hazırlanmıştır.
Bu da içerdiği fonksiyonlar
Ekli dosyayı görüntüle 14942

Gereksinimler ve Belirteçler

Kod:
Diag Port (COM)
SPC Code (Default : 000000)
QCN Yedek Yeri (Path)

Yedekleme İşlemi
Araçları indirip bir klasöre çıkartın.
Pencere_Aç.bat 'ı çalıştırın.


Karşınıza benzer şekilde bir komut satırı açılacak.
Ekli dosyayı görüntüle 14943
Aracı qc.exe yazıp çalıştırıyoruz ve herhangi bir yardım çıktısı alamıyoruz.
Ekli dosyayı görüntüle 14944
Programı incelemeye alıp gereksinimlerini inceliyoruz.
Ekli dosyayı görüntüle 14945
Araç bizden bir adet serialport yani DIAG Port ve filesave yani QCN yedeklenecek komut istiyor.
Yalnızca bu istenilenleri vermek yeterli olmayacaktır çünkü inceleme esnasında aracın birden çok fonksiyonu olduğunu gördüm, bu araç argumanlarla çalışıyor. Yedekleme işlemi için qcnread adlı argumanı kulanacağız.
Ekli dosyayı görüntüle 14946
Port argumanı için spesifik bir çalışma yapılmamış ne yazılsa tutacak şekilde yazılan argumanların sırasına göre alıyor.
Burada portu 3. argumandan alacak öncesine ek getirmemiş gerekiyor ben -p argumanını kullanmayı tercih ediyorum.
Ekli dosyayı görüntüle 14947
SPC bir gereksinim olduğu için bunu da tanıtmamız gerekiyor.
Ekli dosyayı görüntüle 14948
Yine yazılan argumanların sırasından aldığı çok belli. Arguman olarak -spc kullanalım. Eğer cihazın SPC kodunu bilmiyorsanız spc default olarak 000000 olacaktır.
Örnek kullanımı şu şekilde yapıyoruz
Kod:
qc.exe qcnread -p COM3 -f C:/Temp -spc 000000
Bu aracı C# programlama dilinde kullanabilmek için şu şekilde bir kullanım sağlayabilirsiniz.
Bir adet port için textbox, bir adet dosya kayıt yeri için savefiledialog ve log çıktısı bir textbox eklemeniz yeterli olur.

C#:
    Process process = new Process();
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.RedirectStandardOutput = true;
    process.StartInfo.RedirectStandardError = true;
    process.StartInfo.CreateNoWindow = true;
    process.StartInfo.FileName = "cmd.exe";
    process.StartInfo.Arguments = string.Concat(new string[]
    {
        "./c qc qcnread -p ",
        this.comport.Text,
        " -f ",
        this.SaveFileDialog1.FileName.ToString(),
        " -spc 000000"
    });
    process.Start();
    string[] array = process.StandardOutput.ReadToEnd().Split(new char[]
    {
        '\n'
    });
    foreach (string text in array)
    {
        this.log_box1.AppendText(text.Replace("COM" + this.ComPortstrp2.Text, this.ComPortstrp22.Text));
    }
    this.updatelog("Backup QCN Done \r\n", Color.LightGreen, true);
Bu aracı Visual Basic dilinde kullanabilmek için şu şekilde kullanım sağlayabilirsiniz.
Bir adet port için textbox, bir adet dosya kayıt yeri için savefiledialog ve log çıktısı bir textbox eklemeniz yeterli olur.

Kod:
    Dim process As Process = New Process()
    process.StartInfo.UseShellExecute = False
    process.StartInfo.RedirectStandardOutput = True
    process.StartInfo.RedirectStandardError = True
    process.StartInfo.CreateNoWindow = True
    process.StartInfo.FileName = "cmd.exe"
    process.StartInfo.Arguments = String.Concat(New String() { "./c qc qcnread -p ", Me.ComPortstrp2.Text, " -f ", Me.SaveFileDialog1.FileName.ToString(), " -spc 000000" })
    process.Start()
    Dim array As String() = process.StandardOutput.ReadToEnd().Split(New Char() { vbLf })
    For Each text As String In array
        Me.log_box1.AppendText(text.Replace("COM" + Me.ComPortstrp2.Text, Me.ComPortstrp22.Text))
    Next
    Me.updatelog("Backup QCN Done " & vbCrLf, Color.LightGreen, True)
Üst düzey programcılar ve tersine mühendisliği sevenler için IL kodlarını da paylaşıyorum.
Kod:
.method private
    instance void BackupWorker1_DoWork (
        object sender,
        class [System]System.ComponentModel.DoWorkEventArgs e
    ) cil managed
{
    // Header Size: 12 bytes
    // Code Size: 372 (0x174) bytes
    // LocalVarSig Token: 0x1100004B RID: 75
    .maxstack 4
    .locals init (
        [0] string,
        [1] string,
        [2] string[],
        [3] class [System]System.Diagnostics.Process,
        [4] string,
        [5] string[],
        [6] char[],
        [7] int32,
        [8] string[],
        [9] bool
    )

    /* 0x0003003C 00           */ IL_0000: nop
    /* 0x0003003D 02           */ IL_0001: ldarg.0
    /* 0x0003003E 6F55000006   */ IL_0002: callvirt  instance class QC_Network_Repair_Tool__Dev_Time__.HuraButton QC_Network_Repair_Tool__Dev_Time__.Form1::get_BackBTN()
    /* 0x00030043 16           */ IL_0007: ldc.i4.0
    /* 0x00030044 6FEA00000A   */ IL_0008: callvirt  instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Enabled(bool)
    /* 0x00030049 00           */ IL_000D: nop
    /* 0x0003004A 73EB00000A   */ IL_000E: newobj    instance void [System]System.Diagnostics.Process::.ctor()
    /* 0x0003004F 0D           */ IL_0013: stloc.3
    /* 0x00030050 7259050070   */ IL_0014: ldstr     "netstat"
    /* 0x00030055 0B           */ IL_0019: stloc.1
    /* 0x00030056 7269050070   */ IL_001A: ldstr     "-aon"
    /* 0x0003005B 0A           */ IL_001F: stloc.0
    /* 0x0003005C 09           */ IL_0020: ldloc.3
    /* 0x0003005D 6FEC00000A   */ IL_0021: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x00030062 16           */ IL_0026: ldc.i4.0
    /* 0x00030063 6FED00000A   */ IL_0027: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_UseShellExecute(bool)
    /* 0x00030068 00           */ IL_002C: nop
    /* 0x00030069 09           */ IL_002D: ldloc.3
    /* 0x0003006A 6FEC00000A   */ IL_002E: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x0003006F 17           */ IL_0033: ldc.i4.1
    /* 0x00030070 6FEE00000A   */ IL_0034: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_RedirectStandardOutput(bool)
    /* 0x00030075 00           */ IL_0039: nop
    /* 0x00030076 09           */ IL_003A: ldloc.3
    /* 0x00030077 6FEC00000A   */ IL_003B: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x0003007C 17           */ IL_0040: ldc.i4.1
    /* 0x0003007D 6FEF00000A   */ IL_0041: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_RedirectStandardError(bool)
    /* 0x00030082 00           */ IL_0046: nop
    /* 0x00030083 09           */ IL_0047: ldloc.3
    /* 0x00030084 6FEC00000A   */ IL_0048: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x00030089 17           */ IL_004D: ldc.i4.1
    /* 0x0003008A 6FF000000A   */ IL_004E: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_CreateNoWindow(bool)
    /* 0x0003008F 00           */ IL_0053: nop
    /* 0x00030090 09           */ IL_0054: ldloc.3
    /* 0x00030091 6FEC00000A   */ IL_0055: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x00030096 7273050070   */ IL_005A: ldstr     "cmd.exe"
    /* 0x0003009B 6FF100000A   */ IL_005F: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_FileName(string)
    /* 0x000300A0 00           */ IL_0064: nop
    /* 0x000300A1 09           */ IL_0065: ldloc.3
    /* 0x000300A2 6FEC00000A   */ IL_0066: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x000300A7 1B           */ IL_006B: ldc.i4.5
    /* 0x000300A8 8D4C000001   */ IL_006C: newarr    [mscorlib]System.String
    /* 0x000300AD 1305         */ IL_0071: stloc.s   V_5
    /* 0x000300AF 1105         */ IL_0073: ldloc.s   V_5
    /* 0x000300B1 16           */ IL_0075: ldc.i4.0
    /* 0x000300B2 72B9080070   */ IL_0076: ldstr     "./c qc qcnread -p "
    /* 0x000300B7 A2           */ IL_007B: stelem.ref
    /* 0x000300B8 00           */ IL_007C: nop
    /* 0x000300B9 1105         */ IL_007D: ldloc.s   V_5
    /* 0x000300BB 17           */ IL_007F: ldc.i4.1
    /* 0x000300BC 02           */ IL_0080: ldarg.0
    /* 0x000300BD 6F45000006   */ IL_0081: callvirt  instance class [System.Windows.Forms]System.Windows.Forms.ComboBox QC_Network_Repair_Tool__Dev_Time__.Form1::get_ComPortstrp2()
    /* 0x000300C2 6FCF00000A   */ IL_0086: callvirt  instance string [System.Windows.Forms]System.Windows.Forms.ComboBox::get_Text()
    /* 0x000300C7 A2           */ IL_008B: stelem.ref
    /* 0x000300C8 00           */ IL_008C: nop
    /* 0x000300C9 1105         */ IL_008D: ldloc.s   V_5
    /* 0x000300CB 18           */ IL_008F: ldc.i4.2
    /* 0x000300CC 72DF080070   */ IL_0090: ldstr     " -f "
    /* 0x000300D1 A2           */ IL_0095: stelem.ref
    /* 0x000300D2 00           */ IL_0096: nop
    /* 0x000300D3 1105         */ IL_0097: ldloc.s   V_5
    /* 0x000300D5 19           */ IL_0099: ldc.i4.3
    /* 0x000300D6 02           */ IL_009A: ldarg.0
    /* 0x000300D7 6F5B000006   */ IL_009B: callvirt  instance class [System.Windows.Forms]System.Windows.Forms.SaveFileDialog QC_Network_Repair_Tool__Dev_Time__.Form1::get_SaveFileDialog1()
    /* 0x000300DC 6F0001000A   */ IL_00A0: callvirt  instance string [System.Windows.Forms]System.Windows.Forms.FileDialog::get_FileName()
    /* 0x000300E1 6F0101000A   */ IL_00A5: callvirt  instance string [mscorlib]System.String::ToString()
    /* 0x000300E6 A2           */ IL_00AA: stelem.ref
    /* 0x000300E7 00           */ IL_00AB: nop
    /* 0x000300E8 1105         */ IL_00AC: ldloc.s   V_5
    /* 0x000300EA 1A           */ IL_00AE: ldc.i4.4
    /* 0x000300EB 72C1050070   */ IL_00AF: ldstr     " -spc 000000"
    /* 0x000300F0 A2           */ IL_00B4: stelem.ref
    /* 0x000300F1 00           */ IL_00B5: nop
    /* 0x000300F2 1105         */ IL_00B6: ldloc.s   V_5
    /* 0x000300F4 28F300000A   */ IL_00B8: call      string [mscorlib]System.String::Concat(string[])
    /* 0x000300F9 6FF400000A   */ IL_00BD: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_Arguments(string)
    /* 0x000300FE 00           */ IL_00C2: nop
    /* 0x000300FF 09           */ IL_00C3: ldloc.3
    /* 0x00030100 6FEC00000A   */ IL_00C4: callvirt  instance class [System]System.Diagnostics.ProcessStartInfo [System]System.Diagnostics.Process::get_StartInfo()
    /* 0x00030105 72DB050070   */ IL_00C9: ldstr     "Tools\\"
    /* 0x0003010A 6FF500000A   */ IL_00CE: callvirt  instance void [System]System.Diagnostics.ProcessStartInfo::set_WorkingDirectory(string)
    /* 0x0003010F 00           */ IL_00D3: nop
    /* 0x00030110 09           */ IL_00D4: ldloc.3
    /* 0x00030111 6FF600000A   */ IL_00D5: callvirt  instance bool [System]System.Diagnostics.Process::Start()
    /* 0x00030116 26           */ IL_00DA: pop
    /* 0x00030117 09           */ IL_00DB: ldloc.3
    /* 0x00030118 6FF700000A   */ IL_00DC: callvirt  instance class [mscorlib]System.IO.StreamReader [System]System.Diagnostics.Process::get_StandardOutput()
    /* 0x0003011D 6FF800000A   */ IL_00E1: callvirt  instance string [mscorlib]System.IO.StreamReader::ReadToEnd()
    /* 0x00030122 17           */ IL_00E6: ldc.i4.1
    /* 0x00030123 8D80000001   */ IL_00E7: newarr    [mscorlib]System.Char
    /* 0x00030128 1306         */ IL_00EC: stloc.s   V_6
    /* 0x0003012A 1106         */ IL_00EE: ldloc.s   V_6
    /* 0x0003012C 16           */ IL_00F0: ldc.i4.0
    /* 0x0003012D 1F0A         */ IL_00F1: ldc.i4.s  10
    /* 0x0003012F 9D           */ IL_00F3: stelem.i2
    /* 0x00030130 1106         */ IL_00F4: ldloc.s   V_6
    /* 0x00030132 6FD000000A   */ IL_00F6: callvirt  instance string[] [mscorlib]System.String::Split(char[])
    /* 0x00030137 0C           */ IL_00FB: stloc.2
    /* 0x00030138 08           */ IL_00FC: ldloc.2
    /* 0x00030139 1308         */ IL_00FD: stloc.s   V_8
    /* 0x0003013B 16           */ IL_00FF: ldc.i4.0
    /* 0x0003013C 1307         */ IL_0100: stloc.s   V_7
    /* 0x0003013E 2B41         */ IL_0102: br.s      IL_0145
    // loop start (head: IL_0145)
        /* 0x00030140 1108         */ IL_0104: ldloc.s   V_8
        /* 0x00030142 1107         */ IL_0106: ldloc.s   V_7
        /* 0x00030144 9A           */ IL_0108: ldelem.ref
        /* 0x00030145 1304         */ IL_0109: stloc.s   V_4
        /* 0x00030147 02           */ IL_010B: ldarg.0
        /* 0x00030148 6F41000006   */ IL_010C: callvirt  instance class [System.Windows.Forms]System.Windows.Forms.RichTextBox QC_Network_Repair_Tool__Dev_Time__.Form1::get_log_box1()
        /* 0x0003014D 1104         */ IL_0111: ldloc.s   V_4
        /* 0x0003014F 72E9050070   */ IL_0113: ldstr     "COM"
        /* 0x00030154 02           */ IL_0118: ldarg.0
        /* 0x00030155 6F45000006   */ IL_0119: callvirt  instance class [System.Windows.Forms]System.Windows.Forms.ComboBox QC_Network_Repair_Tool__Dev_Time__.Form1::get_ComPortstrp2()
        /* 0x0003015A 6FCF00000A   */ IL_011E: callvirt  instance string [System.Windows.Forms]System.Windows.Forms.ComboBox::get_Text()
        /* 0x0003015F 28E400000A   */ IL_0123: call      string [mscorlib]System.String::Concat(string, string)
        /* 0x00030164 02           */ IL_0128: ldarg.0
        /* 0x00030165 6F43000006   */ IL_0129: callvirt  instance class QC_Network_Repair_Tool__Dev_Time__.HuraComboBox QC_Network_Repair_Tool__Dev_Time__.Form1::get_ComPortstrp22()
        /* 0x0003016A 6FCF00000A   */ IL_012E: callvirt  instance string [System.Windows.Forms]System.Windows.Forms.ComboBox::get_Text()
        /* 0x0003016F 6F6D00000A   */ IL_0133: callvirt  instance string [mscorlib]System.String::Replace(string, string)
        /* 0x00030174 6FDC00000A   */ IL_0138: callvirt  instance void [System.Windows.Forms]System.Windows.Forms.TextBoxBase::AppendText(string)
        /* 0x00030179 00           */ IL_013D: nop
        /* 0x0003017A 1107         */ IL_013E: ldloc.s   V_7
        /* 0x0003017C 17           */ IL_0140: ldc.i4.1
        /* 0x0003017D D6           */ IL_0141: add.ovf
        /* 0x0003017E 1307         */ IL_0142: stloc.s   V_7
        /* 0x00030180 00           */ IL_0144: nop

        /* 0x00030181 1107         */ IL_0145: ldloc.s   V_7
        /* 0x00030183 1108         */ IL_0147: ldloc.s   V_8
        /* 0x00030185 8E           */ IL_0149: ldlen
        /* 0x00030186 B7           */ IL_014A: conv.ovf.i4
        /* 0x00030187 FE04         */ IL_014B: clt
        /* 0x00030189 1309         */ IL_014D: stloc.s   V_9
        /* 0x0003018B 1109         */ IL_014F: ldloc.s   V_9
        /* 0x0003018D 2DB1         */ IL_0151: brtrue.s  IL_0104
    // end loop

    /* 0x0003018F 02           */ IL_0153: ldarg.0
    /* 0x00030190 72E9080070   */ IL_0154: ldstr     "Backup QCN Done \r\n"
    /* 0x00030195 28E700000A   */ IL_0159: call      valuetype [System.Drawing]System.Drawing.Color [System.Drawing]System.Drawing.Color::get_LightGreen()
    /* 0x0003019A 17           */ IL_015E: ldc.i4.1
    /* 0x0003019B 6F62000006   */ IL_015F: callvirt  instance void QC_Network_Repair_Tool__Dev_Time__.Form1::updatelog(string, valuetype [System.Drawing]System.Drawing.Color, bool)
    /* 0x000301A0 00           */ IL_0164: nop
    /* 0x000301A1 02           */ IL_0165: ldarg.0
    /* 0x000301A2 6F55000006   */ IL_0166: callvirt  instance class QC_Network_Repair_Tool__Dev_Time__.HuraButton QC_Network_Repair_Tool__Dev_Time__.Form1::get_BackBTN()
    /* 0x000301A7 17           */ IL_016B: ldc.i4.1
    /* 0x000301A8 6FEA00000A   */ IL_016C: callvirt  instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Enabled(bool)
    /* 0x000301AD 00           */ IL_0171: nop
    /* 0x000301AE 00           */ IL_0172: nop
    /* 0x000301AF 2A           */ IL_0173: ret
Bilgilendirme : Artık Qualcomm yonga setinde QCN yedekleme işlemleri yapıp uzaya çıktığını sananlara bakarak gülebilirsiniz.
Bir sonraki eğitimimizde QCN editleme işlemini yapmayı göstereceğim.
Konu altına istediğiniz herhangi bir konuda rehber talebinde bulunabilirsiniz.
İyi geliştirmeler dilerim.


Lütfen konu altına yorum yaparken Teşekkürler, Elinize sağlık, süper, sağol, helal olsun gibi kelimeler yazıp konuları kirletmeyelim. Herkes aradığını bu mesajlar yüzünden bulamıyor. Altta beğen butonuna basmanız yeterlidir. Konu ile ilgili sorununuzu veya çözümünüz varsa yorum yapın. Konu ile alakasız cevaplar silinecektir.
Güzel Konu = { Türk Forumlarında Aranan İçerik };
Samimi Olarak Teşekkür ediyorum.
Ayrıca qcn yi aynı metodla geri yükleme komutları da mevcut mu?
ve ekliyorum. Mrt key için de kendi başına qcn yükleyen bir program var, inceleme şansınız olabilir mi?
 
Güzel Konu = { Türk Forumlarında Aranan İçerik };
Samimi Olarak Teşekkür ediyorum.
Ayrıca qcn yi aynı metodla geri yükleme komutları da mevcut mu?
ve ekliyorum. Mrt key için de kendi başına qcn yükleyen bir program var, inceleme şansınız olabilir mi?
Restore yapılabilir evet. Link atarsanız MRT Key i inceleyebilirim.
 
Thank you sir but where is the tool link and please share with us how can we edit qcn file again thank you.
 
@Zenlty qc.exe adlı dosyayı bulamadım. bide c# için vermiş olduğunuz örnek kod lar eksikmi ?
 
Geri
Üst Alt