3 पॉइंट द्वारा GN⁺ 2023-08-12 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • OFRAK Tetris ब्राउज़र में खेला जाने वाला एक Tetris-शैली का गेम है, जिसमें ARM निर्देश गिरते हैं; ब्लॉक्स मिलाने की बजाय आप निर्देशों को व्यवस्थित करके प्रोग्राम के execution flow को बनाते हैं
  • गिरने वाले instruction gadgets को घुमाने के बाद फिक्स किया जाता है, और फिक्स किए गए निर्देशों में से सिर्फ स्क्रीन के सबसे ऊपर वाला निर्देश execute होता है
  • स्कोर R12 जिस memory address की ओर इशारा करता है उसमें स्टोर होता है, और आप R0~R12, LR, PC, SP तथा memory dump देखकर state को ट्रैक कर सकते हैं
  • समय समाप्त होने पर, गलत memory access होने पर, या गलत address पर jump होने पर Game over हो जाता है और execution समाप्त हो जाता है
  • single-step execution, music toggle, logical instructions, infinite mode, गिरने के बीच का अंतराल, और maximum gadget size जैसे options से कठिनाई और execution के तरीके को समायोजित किया जा सकता है

ARM निर्देशों से चलने वाला Tetris

  • OFRAK Tetris एक Tetris-शैली का गेम है जिसमें ARM निर्देशों से बने gadget गिरते हैं
  • उपयोगकर्ता गिरते हुए निर्देशों को घुमाकर बाईं ओर फिक्स करता है और execution flow बनाता है
  • execution नियम

    • निर्देश ऊपर से नीचे गिरते हैं
    • उपयोगकर्ता निर्देशों को घुमाता है और फिक्स करता है
    • फिक्स किए गए निर्देशों में से सबसे ऊपर वाला निर्देश ही execute होता है

स्क्रीन पर दिखाई देने वाली execution state

  • वर्तमान में execute होने वाला निर्देश और उसका address साथ में दिखाया जाता है
    • उदाहरण: add PC, PC, #61
    • उदाहरण: 00010000, 00010004, 00010008
  • registers और memory state देखकर execution के परिणाम को ट्रैक किया जा सकता है
    • R0~R12, LR, PC, SP के मान दिखाए जाते हैं
    • memory क्षेत्र 16-आधारी addresses और 0 से भरे हुए values के रूप में दिखाया जाता है
    • स्कोर Score: 0 की तरह दिखता है

स्कोर स्टोर होना और गेम समाप्ति की शर्तें

  • स्कोर R12 जिस memory address की ओर इशारा करता है उसमें स्टोर होता है
  • निम्न में से कोई एक होने पर गेम समाप्त हो जाता है
    • समय समाप्त हो जाता है
    • गलत memory में access किया जाता है
    • गलत address पर jump किया जाता है
  • समाप्ति स्क्रीन पर Game over. और high score इनपुट क्षेत्र दिखाई देता है

controls और settings

  • बुनियादी controls में single-step execution, gadget फिक्स करना, register rotation, music play/pause, और विवरण दिखाना/छिपाना शामिल हैं
  • gamepad key binding settings भी उपलब्ध हैं
    • Single Step

    • Toggle Music

    • Lock In

    • Rotate Instructions Up / Down / Left / Right

      • Toggle Game Instructions
      • गेम settings में execution conditions और कठिनाई को समायोजित किया जा सकता है
      • Score multiplier
      • Enable Logical Instructions
      • Infinite mode
      • Seconds between drops
      • Maximum gadget size

DEF CON स्थल इवेंट

  • DEF CON में मौजूद उपयोगकर्ता Red Balloon Security टेबल पर जाकर Car Hacking Village में Tetris साथ खेल सकते हैं
  • पर्याप्त ऊँचा स्कोर पाने वालों के लिए इनाम दिए जाने की योजना है

1 टिप्पणियां

 
GN⁺ 2023-08-12
Hacker News राय
  • असेंबली पर बहुत कम काम करने वाले एक प्रोग्रामर के तौर पर, यह सीखने के लिए एक शानदार टूल है
    हर instruction क्या करता है यह देखने के लिए मैंने दूसरे टैब में cheatsheet खोल रखी थी
    हालांकि पहले segfault की वजह से high score -4.8 अरब दिखना थोड़ा निराशाजनक था :-P

  • वाकई शानदार! अब तक मेरा high score 65612 तक गया है
    feedback के तौर पर, help menu खोलने के बाद उसे बंद करने का तरीका साफ़ नहीं था, शायद ? दोबारा दबाना ही तरीका है
    Goblin music पसंद आया, और instructions के साथ खेलने के लिए interface और color coding भी अच्छी है
    अगर कोई sandbox mode हो जिसमें instruction execution का असर पहले से देखा जा सके और game खत्म होने के बाद program बदला जा सके, तो ARM assembly सीखने वालों के लिए यह काफी उपयोगी हो सकता है

    • sandbox mode का idea मुझे पसंद आया
      यह game बनाते हुए कुछ घंटे खेलने के बाद ARM assembly पढ़ने की मेरी speed निश्चित रूप से तेज़ हो गई
  • “score उस address की memory में stored है जिसे R12 point करता है” देखकर हंसी आ गई
    share करने के लिए धन्यवाद, और DEFCON की याद आ गई। शायद अगले साल ही जा पाऊंगा

    • R12 की वजह से आपको हंसी क्यों आई, बता सकते हैं?
    • instructions या addresses के बारे में लगभग कुछ न जानने के कारण, मुझे जानना है कि “score उस address की memory में stored है जिसे R12 point करता है” किस ओर इशारा कर रहा है
      reply आने से पहले page खुला रखा था, इसलिए refresh करने तक जवाब नहीं देख पाया
  • अब तक मैंने दो अच्छी strategies इस्तेमाल की हैं
    पहली, PC को जितने हो सके उतने registers में फैलाना, फिर उन registers को जितनी बार हो सके जोड़ना और sum को address 0 या score वाली location में store करना
    दूसरी, पुराने PC value से assembled instruction को integer के रूप में register में read करना, फिर क्योंकि वह आम तौर पर negative दिखता है, subtraction से उसे non-negative बनाकर score location में store करना
    जानना चाहूंगा कि बाकी लोगों ने कौन-सी strategies try की हैं

  • concept वाकई कमाल है, लेकिन मेरी assembly की समझ बहुत कम है :)
    यह कहता है कि score R12 में stored है, लेकिन R12 0 है तो score 16 क्यों है, समझ नहीं आ रहा
    https://imgur.com/a/RY5jhTu

    • R12 में score का address है
      इस case में address 0 है, यानी data segment की शुरुआत
      score register पीले रंग में है, और वह जिस memory area की ओर point करता है, यानी actual score bytes भी पीले रंग में दिखते हैं
  • computers से परिचित हूं और basic assembly भी थोड़ी जानता हूं, लेकिन वाह, यह तो बिल्कुल समझ नहीं आया

    • अगर कोई specific चीज़ पूछनी हो तो समझा सकता हूं
      बड़े तौर पर, game को और स्पष्ट कैसे बनाया जाए, इस पर आपके विचार भी जानना चाहूंगा
      पता है कि instructions समझाने वाला manual मददगार होगा, लेकिन दूसरे ideas भी welcome हैं
  • खूबसूरत brutalism UI/UX है

  • try करने से पहले “About” दबाया तो नया page खुला और यह दिखा: “इस site का इस्तेमाल जारी रखकर आप cookies के use से सहमत होते हैं”
    यह GDPR violation जैसा लगता है। cookies reject करना consent देने जितना ही आसान होना चाहिए
    खासकर ये cookies site के काम करने के लिए जरूरी भी नहीं लगतीं
    “service cookies और pixel tags, web beacons, clear GIFs, JavaScript जैसी समान technologies का use करती है ताकि server web browser को पहचान सके, visits और usage के समय को समझ सके, trends analyze कर सके, user base को समझ सके, और service को operate व improve कर सके … हम collected information को third parties से मिली information से supplement भी कर सकते हैं, जिसमें third parties द्वारा device पर रखी गई cookies शामिल हैं”
    https://ofrak.com/privacy/#tracking-tools-and-opt-out
    page के नीचे browser settings से cookies delete करने को कहना स्वीकार्य solution नहीं है

    • दुर्भाग्य से ऐसी practice कई websites पर होती है, और कई companies cookie law का ठीक से पालन नहीं कर रहीं
      https://www.cnil.fr/en/refusing-cookies-should-be-easy-accep...
    • मेरी तरफ तो कोई illegal चीज़ store नहीं हुई, सिर्फ़ game settings store हुईं, समझ नहीं आता वह banner क्यों दिखता है
    • site visitors को browser में cookies disable करने के लिए बताने वाला तरीका ठीक apple.com भी इस्तेमाल करता है
  • जानना चाहता हूं कि game को build कैसे किया जाता है
    https://ofrak.com/docs/environment-setup.html देखा, लेकिन Tetris game के बारे में specific जानकारी नहीं मिली
    शायद मैंने कुछ miss किया हो

  • concept सच में बहुत पसंद आया
    high score पाने की key PC में 0 लिखना लगती है
    क्योंकि नए instruction का binary code दाईं ओर दिखने वाले memory area में “add” होता है, और उसके बाद R12 को manipulate करके score maximize किया जा सकता है

    • एक और key है R12 को 4 से divisible न होने वाली value में बदलना
      क्योंकि सभी instructions 4 bytes के हैं और most significant bit हमेशा 1 होता है
      कुछ बार मैं लगभग 2 अरब तक गया, लेकिन average काफी low है ;)