vb.androidcv.com	android-dev.net

استنساخ الواتساب بلس + الواتساب الرسمً

استنساخ الواتساب الرسمً والبلس غٌر المعد مستقبال كنسخه مستقلة اتبع معً الخطوات التالٌه خططوة بخططوة : مالحظة : شرحً سٌعتمد بنسخً باسم مسار ogwhatsapp وهذا ما ستغٌره باسم الخاص بك.

- 1 القٌمام بنفس عملٌة االستنساخ فً الشرح جزء .3 والذي سبق ورفعه مسبقا . والذي  سٌكون التعدٌل به كاالتً:

الذي تستبدله	الذي ٌحل محله	
com.whatsapp	com.ogwhatsapp	
Lcom/whatsapp	Lcom/ogwhatsapp	

- 2 الخطوة 2 ارجاع  بعض االشٌاء الذي ال ٌجب ان تتغٌر والذي تغٌرت بالخطوة . )1(

  ارجاع com.whatsapp.util		
			
	الذي تستبدله	الذي ٌحل محله	
	com.ogwhatsapp.util	com.whatsapp.util	

تابع الفٌدٌو من المرفقات الفٌدٌو رقم 1 مالحظة : الفٌدٌو بدون اي اشارات تعلٌمٌة النه االمر واضح بالشرح السابق الستنساخ

• 	ارجاع الملفات الموضحه بصورة الى مكانها والذي مسارها الذي ٌجب ان تكون علٌه smali\com\whatsapp 

vb.androidcv.com	android-dev.net

وارجاع هذه الملفات لٌس فقط نسخها ولصقها بنفس اسم المجلد

مالحظة	هناك ملفات لٌس ثابته االسم ولكن هناك ملفات لٌست ثابته االسم والموضحه بالصورة . وٌتم ارجاعها لمسار	
1	بالبحث عن اي جزء منها بنسخه قدٌمة . ومن ثم تغٌر مسارها	

هناك ثالثة ملفات غٌر ثابة االسم معرفتها بالبحث بالجزء منها وفً الجدول التالً االجزاء الذي تبحثون عنها :

الملف	الجزء منه الذي ستبحث عنه بمسار البرنامج سماٌل	

1

invoke-static {}, Lcom/ogwhatsapp/Voip;->stopCallRecording()Z :try_end_1

.catch Ljava/io/IOException; {:try_start_1 .. :try_end_1} :catch_1

2

invoke-virtual {v1, v2, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;

: try_end_0 . catch Ljava/lang/ClassCastException; {:try_start_0 .. :try_end_0} :catch_0

3

sget-object v1, Lcom/ogwhatsapp/Voip$DebugTapType;->RAW_CAPTURED:Lcom/ogwhatsapp/Voip$DebugTapType;

invoke-virtual {v1}, Lcom/ogwhatsapp/Voip$DebugTapType;->ordinal()I

مالحظة : ال تنسى تستبدال ogwhatsapp فً االكواد السابقة بما اخترت انت االسم.

مثال قمت بالبحث عن جزء وظهر موجود بملف اسمه t2.smali

ساستبدال باالتً

الذي تستبدله	الذي ٌحل محله	
Lcom/ogwhatsapp/t2;	Lcom/whatsapp/t2;	

تابع الفٌدٌو من المرفقات الفٌدٌو رقم 2

vb.androidcv.com	android-dev.net

مالحظة		بنسبة ملف protocol ٌتم نسخ ملفات معٌنة منه.		
2					
االن انا	ساوفر لكم الجدول التالً باالوامر االخرى لملفات الثابتة مع ملف protocol الذي تبدلونها باالستبدال بنوت	
باد بشكل سرٌع.		
					
		الذي تستبدله		الذي ٌحل محله	
		Lcom/ogwhatsapp/fieldstats/		Lcom/whatsapp/fieldstats/	
Lcom/ogwhatsapp/protocol/VoipOptions		Lcom/whatsapp/protocol/VoipOptions	
		Lcom/ogwhatsapp/util/		Lcom/whatsapp/util/	
		Lcom/ogwhatsapp/MediaData;		Lcom/whatsapp/MediaData;	
Lcom/ogwhatsapp/VideoFrameConverter;		Lcom/whatsapp/VideoFrameConverter;	
		Lcom/ogwhatsapp/Voip;		Lcom/whatsapp/Voip;	
		Lcom/ogwhatsapp/Voip$		Lcom/whatsapp/Voip$	

مالحظة : ال تنسى تستبدال ogwhatsapp فً االكواد السابقة بما اخترت انت االسم.

تابع الفٌدٌو من المرفقات الفٌدٌو رقم 3

android-dev.net	vb.androidcv.com	

- 3 تغٌر مسار االوامر لبرنامج  ) االهم ركز (.

تقوم بالبحث عن الكود التالً بمسار البرنامج :

Ljava/lang/String;->intern()Ljava/lang/String;

مما تظهر لك النافذه التالٌه بنتائج البحث :

vb.androidcv.com	android-dev.net

طبعا من البحث السابق كل ما ارٌدكم ان تسجلوا االرقام المواشر بها فً الصورة السابقة . والذي علٌك كتابتها بورقه خارجٌه بتصمٌم كالجدول التالً كمثال :

P	v	
0	0	
1	1	
......	2	
	3	
	........	

مالحظة	هناك نوعٌن من التعبرات }v0{ او }p0{ ، طبعا بتغٌر الرقم 0 الي رقم وهو ما تكتبه فً الجدول السابق.

طبعا هذا الجدول مهم جدا لمرحلة التالٌة ...

• 	المرحلة الثانٌة هً مباشره استبدال االوامر : 

	- 1 انقل الملف الذي باسم boom.smali المرفق فً مع الشرح الى ملف smali لبرنامج. 

	- 2 قم بفتح الملف السابق بنوت باد وغٌر من داخل com.ogwhatsapp بما وضعته انت اسم لك. كما قم بتغٌر OGWhatsApp بما ترٌد لجعل نسختك بمجلد منفرد. 

	- 3 االن نغٌر اوامر البرنامج لستنساخه )والذي سٌعتمد على الجدول السابق الذي وضعته انت( والذي سنستعمله باالكواد التالٌة : 

بشكل دوري تقوم بستبدال االرقام بالكود التالً باالرقام الذي بالخانه V بالجدول الذي وضعته انت .

تستبدل :

invoke-virtual {v0}, Ljava/lang/String;->intern()Ljava/lang/String;

move-result-object v0

الذي ٌحل محله:

invoke-virtual {v0}, Ljava/lang/String;->intern ()Ljava/lang/String; move-result-object v0 invoke- static {v0}, Lboom;-
>a (Ljava/lang/String;)Ljava/lang/String;  move-result-object v0

مالحظة : تقوم بنفس العملٌة ولكن تستبدل لرمز P بالجدول وبستبدال v ب P فً االكواد السابقه.

تم اضافه االكواد السابقة بملف from.smali و to.smali تسهٌال لكم لنقلها

تابع الفٌدٌو من المرفقات الفٌدٌو رقم 4

vb.androidcv.com	android-dev.net

هناك حاالت شاذات عن القاعة السابقة ووالسبب فً ذالك الن الذي بالون االحمر غٌر متشابه : invoke-virtual {v0}, Ljava/lang/String;->intern ()Ljava/lang/String;

move-result-object v6

وطرٌقة معرفه الحاالت الشاذات باجراء البحث بالكود التالً :

Ljava/lang/String;->intern()Ljava/lang/String;

وقم بنزول اال اسفل وانت تنزل ستالحظ الحالتٌن واضحتٌن كصورة التالٌه :

تقوم بنسخ وصلق هذا السطر بعد سطر من الكود الذي بحثت انت عنه

invoke-static {v0}, Lboom;->a(Ljava/lang/String;)Ljava/lang/String; move-result-object v0

مالحظة :  تقوم بتغٌر الرقم الملون بالكود السابق برقم الحالة الشاذه.

تابع الفٌدٌو من المرفقات الفٌدٌو رقم 5

android-dev.net	vb.androidcv.com	

جعل لنسخه مجلد خاص لها بالهاتف

بهذه النقطه ثالث حاالت  تبحث عنها فً سورس البرنامج :

- 1 ٌفضل ان تقوم بتجمٌع البرنامج بعد استنساخه وفكه من جدٌد - 2 بعد ذالك تقوم بالبحث فً ملف البرنامج بالمسار التالً بداخل مجلد البرنامج

/smail/com/ogwhatsapp

مع مراعات استبدال ogwhatsapp بما انت اختر اسمًا.

• 	االن بداء عمل مجلد خاص لنسخه : 

- 	هناك 3 اكواد تبحث عنها وتضٌف كود قبل الكود الذي تبحث عنه. 

رقم	الكود	
الكود		
1	Ljava/io/File;-><init>(Ljava/lang/String;)V	

2 	Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V 

3 	Ljava/io/File;-><init>(Ljava/lang/String;Ljava/lang/String;)V 

- 1 بالنسبه لكود ) ) 2 + 1 متشابه االضافه اي نضٌف قبل سطر الكود الذي بحثنا عنه الكود التالً :

invoke-static {v0}, Lboom;->b(Ljava/lang/String;)Ljava/lang/String;

move-result-object v0

طبعا الرقم الذي بالون الذي بالون االحمر على حسب ما توضحه الصورة التالٌة الذي تشرح اضافه الكود :

android-dev.net	vb.androidcv.com	

- 2 بالنسبه لكود الثالث 3 ٌتم اضافه الكود التالً :

invoke-static {v0}, Lboom;->b(Ljava/lang/String;)Ljava/lang/String;

move-result-object v0

invoke-static {v1}, Lboom;->b(Ljava/lang/String;)Ljava/lang/String;

move-result-object v1

طبعا الرقم الذي بالون الذي بالون االحمر على حسب ما توضحه الصورة التالٌة الذي تشرح اضافه الكود :

vb.androidcv.com	android-dev.net

الصورتٌن السابقتٌن تجدونها فً المجلد المرفق بالشرح لتسهٌل التوضٌح