ساخت توییک حالت روح برای واتس‌اپ‌ [iOS]

از قدیم روایت بوده که کار خودتون رو با میم شروع کنید. سطح آموزش: متوسطپیش‌نیاز ها: دستگاه JailBreak شده، آشنایی با Tweak و ابزار های اولیه مثل Theos و قطعا اگه ویندوز دارید فکر نکنم بتونید کاری از پیش ببرید.یکم راجع به خودمبه عنوان یک نوب ۲ ساله در زمینه‌ی جیلبریک با تجربه‌ی خیلی کمی که در این زمینه دارم گفتم اینجا جای خوبیه برای اینکه تجربه‌هام رو توش ثبت کنم و با توجه به این حافظه‌ی داغونی که دارم، هر موقع نیاز داشتم برگردم و بخونم و همچنین شاید به درد دیگران هم بخوره.** این توییک رو حدودا اوایل فروردین ۹۸ نوشتم و خب اسکرین‌شات از ترمینال و نتایج ندارم قرار بدم و دیگه هم حوصله‌ی دوباره طی کردن این پروسه رو ندارم، سعی میکنم شبیه ترین چیز های ممکن به نتایج رو براتون قرار بدم. **قراره توی این ویرگول نحوه و پروسه‌ی ساخت یکی از توییک هام رو براتون توضیح بدم.چکیدهاولین توییک (Tweak) نسبتا رسمی بود و یکم هم استقبال شد و به مزاج بعضی ها خفن اومد وظیفه‌ش این بود که میتونست وقتی شما مسیج شخصی رو در واتس‌اپ seen میکنید، تیک آبی نخوره، همون ابتدا خیلی ها حمله کردن که این چه توییکیه؟ خود واتس‌اپ همچین قابلیتی داره، خب آره داشت ولی فرقش این بود که اگه از خود اپ گزینه‌ی Read receipt رو غیر فعال میکردید، باعث میشد شما نتونید بفهمید شخص مقابل هم مسیج شما رو دیده یا نه؟ یعنی عملا شما دیگه تیک آبی نمیدیدید ولی این توییک فقط قرار بود برای دیگران رو نشون بده و برای شما رو مخفی کنه. (احتمالا باید چندبار این جمله رو بخونید تا درک کنید چون خودم چندبار خوندمش تا بفهمم چی نوشتم)ایده اجرایی به شکل سنتی بود که از طریق disassembler و Reveal و از این قبیل برنامه‌ها بود که خداروشکر iOS دولووپر های ایرانی توی این زمینه ‌خدا هستن و بهش نمی‌پردازم.ایده دوم استفاده از ابزاری به اسم Frida بود که باهاش آشنا شدم و اتفاقا یکی از دوستان هم قبلا شبیه به همین توییک رو پیاده کرده بود ولی خب من بازم مینویسمش.مقدمات اولیهمثل روال عادی شما قطعا به ابزار Theos نیاز داریدو البته این دفعه Fridaکمی مقدمه چینی بیشتر و توضیحات اضافه‌ترتوییک (Tweak) خب میشه گفت یک لایبرری داینامیکه که میتونید چیزی که مد نظرتون هست رو به اپلیکیشن مورد نظرتون تزریق کنید تا تغییرات رو بنا به خواسته‌ی خودتون اعمال کنید.نصب Theos: اگه آشنا نیستید یا لازمه که داکیومنتش رو مطالع کنید میتونید از اینجا بهش دسترسی پیدا کنید.نصب Frida: داکیومنت نسبتا خوبی داره و کار رو راه میندازه که میتونید از اینجا به نحوه نصب و استفاده‌ش پی ببرید.یک مرحله‌ی دیگهلازمه شما ابزار Frida رو توی دیسوایس جیل شدتون هم داشته باشید که میتونید با رفتن به Cydia و اضافه کردن https://build.frida.re به مخازن قبلی، این ابزار رو هم روی گوشی نصب و ران کنید. توضیحات کامل توی Frida نوشته شده.لازمه که متودی که دنباش هستیم رو پیدا کنیم، خب نحوه‌ی کار به چه شکل هست؟اینجا Frida وارد عمل میشه، لازمه توی ترمینال دستور frida-ps -U | grep -i whatsapp رو بنویسید و ps به معنای نشون دادن پروسس های فعلی که در حال ران شدن هستند هست و -U هم بع منظور این هست که دیوایس شما با USB به مک‌‌/‌لپ‌تاپ شما متصله (پس وصل کنید)خروجی چیزی شبیه به عکس زیر خواهد بود:قسمت مهم برای ما PID هست که خب برای هر کسی متفاوته، دنبال PID واتس‌‌اپ میگردیم و میبینیم (بر فرض) PIDش برابر ۱۴۳۲ هست.سراغ کامند بعدی میریم یعنی: frida-trace -U -m "-[* *Receipt*]"حالا اگه داکیومنت رو خوب نخونده باشید براتون این سوال پیش میاد که frida trace چیه و از کجا اومد؟وقتی استفاده میشه و به کار میاد که بخوایم متود ها رو چاپ کنیم (وقتی که صدا زده میشن) و در قسمت بعدی یک فیلتر براش نوشتیم که فقط اون هایی رو چاپ کن که مرتبط باشن و توشون از receipt استفاده شدهخروجی چیزی شبیه به این خواهد شد: 54599 ms -[WAChatViewController enqueueMessagesForSendingReadReceipts:0x1d0a41080] 54662 ms -[XMPPConnection sendReadReceiptsForMessagesIfNeeded:0x1d085d2b0] 54662 ms | -[WAMessage needsSendReadReceipt] 54662 ms | -[WAMessage needsSendReadReceipt] 54662 ms | -[WAMessage needsSendReadReceipt] 54662 ms | -[WAMessage needsSendReadReceipt] 54662 ms | -[WAMessage needsSendReadReceipt] 54662 ms | -[WAMessage needsSendReadReceipt] 54662 ms | -[WAMessage needsSendReadReceipt] 54663 ms | -[XMPPMultiReceipt addReceiptId:0x1d1243300 edit:0x0] 54663 ms -[ XMPPConnectionMain sendReadReceiptsForMessagesIfNeeded:0x1d0a41080] 54663 ms | -[WAMessage needsSendReadReceipt] 54663 ms | -[WAMessage needsSendReadReceipt] 54663 ms | -[WAMessage needsSendReadReceipt] 54663 ms | -[WAMessage needsSendReadReceipt] 54663 ms | -[WAMessage needsSendReadReceipt] 54663 ms | -[WAMessage needsSendReadReceipt] 54663 ms | -[WAMessage needsSendReadReceipt]و خب اگه یکم دقت بالایی داشته باشیم و انگلیسیمون نسبتا خوب باشه میتونیم بفهمیم چیز یکه دنبال هستیم [XMPPConnectionMain sendReadReceiptsForMessagesIfNeeded]خواهد بود، اگه نه هم حدس و آزمایش کردن متود هایی که بهش مشکوک هستید هیجان خاصی داره و میتونید با تست کردن متود های مختلف به نتایج خیلی جالبی برسید.نوبت هوک کردن میرسه با Theos یک قالب توییک میسازید به کمک دستور $ frida-ps -Uai میتونید باندل اپ رو به دست بیارید (کلی راه دیگه هم هست ولی خب این دم دست تره) خروجی شبیه به نتیجه‌ی زیر خواهد بود: $ frida-ps -Uai PID Name Identifier --- ------ --------------- 1432 whatsapp net.whatsapp.WhatsAppداخل فایل Tweak.xm چی بنویسیم؟ابتدا باید به XMPPConnectionMain هوک بزنیم و sendReadReceiptsForMessagesIfNeeded رو خالی کال کنیم. یعنی چیزی به شکل زیر: %hook XMPPConnectionMain - (void) sendReadReceiptsForMessagesIfNeeded:(id)arg { } %end شاید موفق نباشید و خب لازمه که چندبار تلاش کنید و از Alert استفاده کنید تا مطمن بشید که اصلا کار میکنه؟ یا مشکل از چیز دیگه‌ایه. سورس کد رو با Alert رو توی خط بعدی لینک میدم و کافیه از کامنت در بیاریدش.توییک رو اینجا قرار دادم.سعی کردم خلاصه و مفید توضیح بدم و بیشتر داکیومنت ها رو به پای خودتون بذارم، همچنین دلیلی نداشت خوبو مفید توضیح بدم، چون شک دارم حتی ۱۰ نفر هم این آموزش به دردشون بخوره و ازش استفاده بکنن، بیشتر برای اینکه جایی ثبتش کنم نوشتمش.تا حد امکان به سوالات و مشکلات احتمالی دوستان پاسخ داده میشه، موفق باشیدلینک ردیت این توییک: Reddit سورس این توییک برای علاقمندان: Githubسورس دیگه برای مطالعه و تمرین پریمیوم سازی اپلیکیشن های پولی:‌ Github لینک Repo سیدیا ی شخصی خودم برای نصب این و چند توییک دیگه: Nimk.ir/repoو در آخر امیدوارم روزی اون‌قدر انگیزه‌ی کافی داشته بشم تا چیزی که علاقه دارم رو ادامه بدم و خدمتی به بقیه بکنم، نه اینکه به دلیل مسایل پیش پا افتاده بیخیال همه چیز بشم. موفق باشید.