Çalıştırılan programın kendi crcsini hesaplaması

Başlatan z, 03 Haziran 2015, 15:29:19

ErsinErce

CRC kontrolü ile uğraşmanız gereksiz uğraş hocam
program kırılacağı zaman kontrol noktası aşılmaya çalışılır, crc hesaplandıktan eşit midir diye bakan kısım yani

ayrıca sorunuza çözüm olarak bir const blok oluşturup CRC sonucu istediğiniz gibi olana kadar değiştirmek tek çözüm gibi geliyor.
@Icarus un da dediği gibi CRC sonucunu CRC işlemine eklerseniz sonucunuz 0 çıkar. buradan denemenizi hızlandırabilirsiniz

Programı korumak için rus bebekleri benzer bir yapı kullanmak daha mantıklı geliyor bana
yani progamınızı encrypted bir şekilde sıkıştırıp başka bir progamın içine gömdüğünüzü düşünün
bu program içindeki sıkıştırılmış veriyi alıp ram'e açarak ramden çalışmasını sağlayacak.
asıl program kodlarına ram'i tarayarak anca ulaşabilirsiniz.

ram üzerinde de çalışılan bloğa erişim engeli yapabilirseniz hw atak yapmadan kimse kodunuza bakamaz


ssl tarzı public - private key mantığıyla şifrelerseniz şifrenizde korunmuş olur.

engerex

 Şifreleme, RAM'de çalıştırma olaylarına girerseniz muhtemelen bazı antivirüsler potansiyel tehlikeli gözüyle bakacaktır.

z

Alıntı yapılan: Icarus - 03 Haziran 2015, 19:39:41
@z: CRC'i sabit ve sıfır olarak kabul edersen şöyle yapılabilir.
A = Dosyadaki binary data ise
CRC(A + CRC(A)) = 0 olur

CRC(A + CRC(A)) = 0

Bunu nasıl yazdın anlamadım.


@ErsinErce

Öncelikle nerelerdeydin onca zamandır. Çoktandır yoktun piyasada.

Hocam amacım kodu birilerinden korumak değil. Eğer kodumun koduna virüs bulaşırsa çalışmayı kessin ve hata mesajı ile kullanıcıyı uyarsın.




Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Icarus

@z: Abi crc çoğu zaman kontrol böyle yapılıyor crc("mesaj + crc") == 0 şeklinde. Aynı zamanda mesela CRC ile sıfır değeri ile oluşan burst error'lerin kontrolü ise CRC("mesaj + crc'nin aynı tabanda tersi") == "Crc polinomundan gelen Hep Sabit bir değer" şekinde oluyor.

Alıntı yapılan: ErsinErce - 03 Haziran 2015, 20:21:44
ram üzerinde de çalışılan bloğa erişim engeli yapabilirseniz hw atak yapmadan kimse kodunuza bakamaz
Hayır çok rahatlıkla hem çözer hem çözümlüş halini tekrar exe yapar hemde rahatlıkla değiştirir.

z

Hala anlamadım. Bu dediğin Check Sum hesabında okey ama CRC de olmaz diye düşünüyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com


ErsinErce

Alıntı yapılan: z - 03 Haziran 2015, 22:49:07
CRC(A + CRC(A)) = 0

Bunu nasıl yazdın anlamadım.


@ErsinErce

Öncelikle nerelerdeydin onca zamandır. Çoktandır yoktun piyasada.

Hocam amacım kodu birilerinden korumak değil. Eğer kodumun koduna virüs bulaşırsa çalışmayı kessin ve hata mesajı ile kullanıcıyı uyarsın.

Merhaba hocam şehir şehir dolaşmaktan pek fırsat bulamıyorum, sık sık ankaradayım aslında bir dahaki gelişime haber vermeye çalışırım müsaitseniz bir çay içeriz =)

konuya dönersek;

check sum adından da anlaşılacağı gibi toplam kontrölü bu direk toplama işlemide olabilir (örneğin bit parity) ve ya bir fonksiyonda olabilir (CRC)

bu kavram karmaşasından kurtulduktan sonra @Icarus'un verdiği adresten şu örneği yapalım;

CRC-16  P(x) = x16+ x15+ x1+ x0 toplama fonksiyonumuz olsun

12345678 verisini girdiğimizde toplam olarak bize 0xe420 değerini veriyor

https://ghsi.de/CRC/index.php?Polynom=11000000000000011&Message=12345678

bu veriye elde ettiğimiz sayıyı sonuna eklersek yani

12345678e420 haline getirirsek aynı fonksiyonun çıkışı 0 çıkıyor

https://ghsi.de/CRC/index.php?Polynom=11000000000000011&Message=12345678e420


trgtylcnky

Aslına bu yaptığınız crc'nin mantığına aykırı. Yani mesela ortada f(x+k)=k diye bir fonksiyon var. Siz f(x)'i biliyorsunuz ve buradan k'yı bulmaya çalışıyorsunuz. Zaten bu bulunabilecek olsaydı crc'nin bir mantığı kalmazdı çünkü bu işlemin makul sürede yapılamaması lazım. Eğer bu işlem makul bir sürede yapılabilseydi programı değiştiren kişi de yapabilirdi.

z

CRC nin amacı bu değilki.

Bahsettiğin şey H fonksiyonları.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

trgtylcnky

Bilemiyorum ama diyelim ki bunu programın değişip değişmediğini anlamak için kullandınız. Bir program kodu var ve siz onun içine crc sonucunu eklediğinizde toplam programın crc'si değişecek. Yani o kodu eklediğinizde crc'nin ne olacağını bulmanız ya da eklediğiniz şeyi nötralize edecek bir şey varsa onu eklemeniz lazım. Bunu siz yapabiliyorsanız programı değiştiren de yapabilir demek istedim.

engerex

 Amaca uygun en basit yöntem dosya adını AD.CRC32hash.EXE olarak adlandırma. Dezavantajı kullanıcının dosya adını değiştirme ihtimali. Sanıyorum çalışmanızda böyle bir sorunda olmayacağı için rahatlıkla kullanabilirsiniz. Çalışan uygulama kendi crc322sini hesaplayabilir. Windowsta bu dosya kullanılıyor diye hata vermez. Eğer bu yöntem işinizi görmezse veya sorunla karşılaşırsanız yardımcı olurum.