سؤال

لقد حصلت على SWF لتحرير رابط في رمز AS. الحقيقة هي أن SWF يستخدم بعض XML الذي تم إنشاؤه (تم استرداده بالفعل) بواسطة رمز PHP من قاعدة بيانات.

menuXML.load("/sub/page/dynamic.php?genre=" + genre); 

لذا فإن النقطة هي أننا يمكننا استخدام نفس SWF "MainFraim" وملءها بالرسوم المتحركة/المصادر المختلفة بناءً على الرابط المقدم في Dynamic.php؟ النوع = ###

الآن ، لقد استخدمت Flash Decompiler Gold لاستخراج جميع الملفات في SWF ويمكنك فتحها مرة أخرى في Adobe Flash لتعديلها. عند الانتهاء ، أدخل Ctrl+Enter وهناك فور 4 أخطاء برمجية !! الأخطاء: 1x <غير متوقعة "إذا" مواجهتها> 2x <يجب إنهاء كتلة "} '> 1x <ecpected اسم حقل بعد". المشغل أو العامل. >

كيف يمكن أن تكون هذه الأخطاء موجودة ، عندما يعمل SWF الأصلي بشكل مثالي ؟؟!

إذا لم أتمكن من حل هذا ، سأضطر إلى معرفة كيفية إنشاء ملف .php يحاول SWF استخدامه والذي يمكنه تحديد الموارد المناسبة (من قاعدة بيانات أعتقد) لإظهارها (باستخدام؟ النوع = ###)

شكرًا!

هل كانت مفيدة؟

المحلول

لست متأكدًا من أنني أفهم مشكلتك ، لكن يبدو أنك بحاجة إلى تغيير عنوان URL الذي تم نقله إلى طريقة التحميل. يبدو أيضًا أن SWF الخاص بك هو ActionScript 2.0.

من نوع Decompilers نوعًا ما ، ولكن نادراً ما يكون ملف FLA الذي يمكنك إنشاؤه باستخدام decompiler مفيدًا لإنشاء نفس SWF. في بعض الأحيان يكون الكود غير قانوني ، ودائمًا ما يتم ثبات الرسومات.

اضطررت ذات مرة إلى إجراء بعض التغييرات في التعليمات البرمجية البسيطة (مثل تغيير عدد قليل من عناوين URL وغيرها من الأشياء البسيطة) إلى SWF ، والتي لم يكن لدينا مصادر (فقدت ولم تكن هناك نسخة احتياطية ...).

إستعملت المهرج لهذا الأمر وعمل بشكل جيد (لم يكن الأمر صعبًا كما كان من المفترض لأول مرة).

Flasm ليس decompiler ، ولكنه disassembler. يأخذ SWF الخاص بك ، وتوصيف ActionScript Bytecode ويقوم بإنشاء ملف نصي مع رمز يشبه التجميع. يمكنك تحرير هذا الرمز وإعادة تجميع SWF. لا يلمس الرسومات والرسوم المتحركة ، لذلك كان ما أحتاجه ، وربما يمكن أن يعمل من أجلك.

لقد أجريت اختبارًا صغيرًا وعملت بشكل جيد.

لقد بدأت بهذا الرمز في فلوريدا:

var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad = function(ok:Boolean):Void {
    if(ok) {
        _debug_txt.text = "ok";
        _debug_txt.text = xml;
    } else {
        _debug_txt.text = "error";
    }
};

xml.load("/sub/page/dynamic.php");

بعد ذلك ، فتحت موجه CMD (أنا على Windows) ، قرص مضغوط على الدليل الذي يحتوي على SWF وتشغيله:

flasm -d test_flasm.swf > test_flasm.flm

هذا يفصل SWF في ملف text test_flasm.flm. لقد أضفت Flasm إلى مساري التنفيذيين ، ولكن يمكنك فقط استخدام المسار الكامل إلى flasm.exe بدلاً من ذلك.

الجزء ذي الصلة من ملف .flm يبدو مثل:

setMember
push '/sub/page/dynamic.php', 1, 'xml'
getVariable
push 'load'
callMethod

قد تختلف لك ، ولكن إذا كنت تبحث عن عنوان URL ، فستجده. بعد ذلك ، غير هذا عنوان URL إلى:

setMember
push 'test.xml', 1, 'xml'
getVariable
push 'load'
callMethod

ثم ، قمت بإعادة تجميع SWF باستخدام:

flasm -a test_flasm.flm

والآن ، يقوم test_flasm.swf بتحميل "test.xml" بدلاً من "/sub/page/dynamic.php".

أتمنى أن يساعدك هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top