2012-04-16 20 views
6

Altıgen bir değer olarak NSData'nın keyfi bir bloğum varsa, nesnenin arşivlenmeden veya serileştirilmeden önce ne olabileceğini belirlemenin bir yolu var mı? Birkaç tahmin ve kontrol yöntemini umursamıyorum, ama doğru yönde bazı işaretçilere ihtiyacım var.NSData'nın keyfi bir bloğunu çözme?

İçinde onaltılık bir NSData nesnesi var. NSData'nın hangi yöntemlerine bakmalıyım? Denemek için başka sınıflar da var mı?

Kişileri yanıtlamaktan korkmak istemiyorum ama bir Cocoa Touch sınıfı kullanarak kodlanmış olabilecek bir oyun verisi dosyam var. Veriler, bir hex editöründe görüntülendiğinde anlamsız ve bir kullanıcı adı gösterir, bu da onun arşivlenmiş veya kodlanmış bir nesne olduğundan şüphelenmemi sağlar. Onaltılık editörden onayı veriyi denemek ve arşivden çıkarmak için kullandığım örnek bir projeye kopyaladım.

Bunun 3D biçimiyle ilgili olduğuna inanmıyorum, dosya uzantısı isteğe bağlıdır.

İşte veriler. Ben çeviride kaybolan almaz umuyorum:

'µköXN[ÎÀü÷h/F9ó9Vìñ°ceE¸z¶=Hmoshbermú«ó¼Ppù#ÝVÔ=4â®L,K;Êç;ASÀ&Ë÷ëÓ%È;Úf¬G}tmQ;µéüø_87´y©ã©!߶óQòAçÛl©âSG4S½3ýJת9äô¡wxiD²M¼ÏB]39øþ:óñ7ª¾÷躣È3Ï¢ÍEFÍ¢ª»r]BmÁ'Ò+åygÞÅQ?luó>÷ú¼è6¸|}[¼[¶Ñ¦g!\OÎÒJSE..pSß&_ÈEäø)6òëó¨¼2¶ð°æà`ï7Ë=Ã¥:cƧ=L4qG-"µ(ÐÝïß ÓãXkÀ4fzæ·p\ññT<tu¥Æ©;Ìn4£³Ï¢ÌFåG´ 

Ve karşılık gelen onaltılık: herkes o çok takdir bu anlamaya yardımcı olmak önem veriyorsa

27 B5 6B F6 01 00 00 00 58 4E 5B CE C0 FC F7 68 2F 46 86 87 83 39 F3 39 9E 56 EC F1 B0 63 9E 65 45 B8 7A B6 3D 07 99 48 6D 6F 73 68 62 65 72 6D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 86 FA 03 0E AB F3 BC 0B 50 70 F9 23 DD 87 56 03 D4 3D 34 90 E2 AE 4C 2C 94 9E 8E 15 4B 0C 83 8C 3B 03 CA E7 3B 1B 41 53 C0 26 04 CB F7 EB D3 25 C8 3B DA 66 8A AC 47 7D 8A 7F 74 6D 51 3B B5 19 E9 FC F8 5F 38 37 B4 11 0C 79 A9 12 E3 A9 21 DF B6 F3 51 F2 41 E7 DB 85 02 9F 6C A9 E2 53 47 1F 34 86 53 BD 33 FD 4A D7 AA 39 C3 A4 F4 A1 77 78 69 44 B2 4D BC CF 42 5D 33 39 F8 FE 97 3A 81 F3 F1 10 37 AA BE 86 91 F7 1F E8 83 BA A3 C8 33 CF 1D A2 CD 45 7F 46 1F CD A2 AA BB 1A 72 5D 42 02 6D C1 0F 27 D2 2B E5 0B 79 67 DE C5 1A 51 3F 14 6C 75 F3 3E F7 FA BC E8 36 8E B8 7C 02 1C 7D 01 00 92 8C 19 5B BC 5B B6 D1 A6 67 7F 21 5C 84 13 4F CE 0C D2 4A 53 19 82 45 1B 2E 2E 96 70 53 DF 26 5F C8 1C 45 8F E4 F8 29 36 F2 EB 9D 95 F3 A8 BC 32 B6 F0 B0 E6 91 98 1A E0 99 60 EF 37 CB 3D C3 A5 3A 63 0C C6 A7 3D 4C 34 71 47 2D 22 B5 28 D0 DD EF DF 09 D3 E3 58 6B C0 17 34 66 7A E6 B7 70 5C F1 F1 54 3C 74 94 75 A5 C6 15 A9 9E 14 3B CC 15 10 83 6E 34 A3 B3 CF 0F A2 9C CC 8E 46 8C E5 00 00 47 B4 17 05 00 00 00 00 

.

+0

+1, Benzersiz soru. – CodaFi

+0

Whoops, hex değeri. – Moshe

+0

Bu nedenle, bir "NSData" örneği tarafından temsil edilen veri bloğu, bazı ObjC sınıfının bir örneğini ("** nesnesi ** ne olmuş olabilir") tutar? Ya da herhangi bir şey içerebilir? –

cevap

2

NSData'nın rasgele bir bloğu hex değeri olarak varsa, nesnenin arşivlenmeden veya serileştirilmeden önce ne olabileceğini belirlemenin bir yolu var mı?

Gerçekten değil. Bu, UTI, extension, MIME tipi kullanılmadan keyfi dosyaların doğru bir şekilde okunmasıyla ilgili 'önemsiz'. Elbette, programınızın tüm bu dosyaları/formatları okumayı da desteklemesi gerekiyor.

Birkaç tahmin ve kontrol yöntemini umursamıyorum, ancak doğru yönde bazı işaretçilere ihtiyacım var. Imkansız bir görev istemiyorsanız, sorununuzu/girdilerinizi daraltmanız gerekir.

İçinde onaltılık bir NSData nesnesi var. NSData'nın hangi yöntemlerine bakmalıyım?

Yalnızca length baytlık bir veri blobudur. Herhangi bir şeyi temsil edebilir - nereden geldiğini bilmiyorsanız.

Denenecek başka sınıflar var mı?

Belki NSCoder veya (İYE veya MIME türü ile karşılaştırılabilir olacaktır) kendi bilgilerinizi girmek için biraz iç gözlem ve destek sunar başka seri hale/arşiv aracılığıyla tüm verilerinizi kaydederek başlayacaktı.

Düzenleme:

uzakta yanıtlayan insanları korkutmak istemiyorum ama büyük olasılıkla bir Kakao Dokunmatik sınıfını kullanarak kodlanmış oyun verilerinin bir dosya var. Veriler, bir hex editöründe görüntülendiğinde anlamsız ve bir kullanıcı adı gösterir, bu da onun arşivlenmiş veya kodlanmış bir nesne olduğundan şüphelenmemi sağlar. Onaltılık editörden onayı veriyi denemek ve arşivden çıkarmak için kullandığım örnek bir projeye kopyaladım.

bu API'leri kullanılarak veriler birden fazla yol temsil edilebilir. Muhtemelen 1) özel bir dosya biçiminde 2) anahtarlı bir arşivle karşılaşıyorsunuz.

ikincisi nontrivial verilerin gösterimleri için daha kolaydır. Arşivlenmemişken kullanabileceğiniz herhangi bir objc sınıfını tanımlamanız gerekir. Bu durumda, birkaç örnek gösterim, ihtiyaç duyacağınız veri yapılarının kaba bir taslağını sunacaktır (geleneksel uygulamalar altında). Unarchiver'ın açabiliyorsa, bir NSDictionary'a benzer bir arşiv de olabilir. Bu, diğer kanallara göre daha kolay bir sorundur, çünkü arşivleme genellikle kakaodaki üyelere eşlenmiş olan anahtarlara ve değerlere düşer.

Edit2:

dosya Çizim şey dizinden geldi. Bu gamedata.i3d denir

(omuz silkme)

+0

bu verileri kaydedilmiş başka biri gibi geliyor bana ve içeriği hakkında birkaç (farz) kısıtlamaları vardır, ancak genel durumda bu mümkün olan tek cevaptır. –

+0

@ IuliusCæsar aye - sadece OP'nin ** Edit ** 'i okuyun. Karşılıklı düzenleme… – justin

0

okumak için NSKeyedUnarchiver kullanmayı deneyin. Verileri depolamak için NSArray, NSDictionary ve NSString gibi standart Foundation kapsayıcılarını kullanmak nadir değildir, bu yüzden şanslı olabilirsiniz. Özel sınıflar söz konusu olduğunda açıkçası işe yaramaz, ancak denemek için zamanınızdan 15 dakika geçebilir.

+0

Denedim, bazı kodları yayınlamaya dikkat et? – Moshe

+1

Denediyseniz, kodunuzu ve sonuçlarınızı gönderin.Ama bu yine de uzun bir atış. Üzerinde çok fazla zaman harcayarak fazla fayda göremiyorum. – Caleb

İlgili konular