Changing material with custom shader while instantiating prefab at runtime leads to change in color of all the instances

Hey guys I created a custom shader in project,then created a Material with the same Shader and assigned this Material to the Prefab. I have assigned a Texture(an image with red color)to the Material.What i want to do is ,at runtime when instantiating the prefab I want to change the color of material(Texture). Now what happens is when instantiating the prefab it changes the color of the texture but along with this all the previous instances get the same color,which i think is obvious as they all share the same Material. Dont think my code is right,But just to begin with something::

	var material=new Material(Shader.Find("Diffuse"));
					material.shader=Shader.Find("Custom/PhongShader");
					var sphereTexture=new Texture2D(2,2);
					sphereTexture=sphereOfprefab.renderer.material.GetTexture("_MainTex");
					
					for(var x:int=0;x<sphereTexture.width;x++)
					{
						for(var y:int=0;y<sphereTexture.height;y++)
						{
							sphereTexture.SetPixel(x,y,GameObject.Find("Plane"+spherename).renderer.material.color);
						}
					}
					sphereTexture.Apply();

Here is my shader::

Shader "Custom/PhongShader" 
{
	Properties 
	{
		_MainTex ("Base (RGB)", 2D) = "white" {}
		_MainTint ("Diffuse Tint",Color)=(1,1,1,1)
		_SpecularColor ("Specular Color",Color)=(1,1,1,1)
		_SpecPower ("Specular Power",Range(0,30))=15
	}
	SubShader 
	{
		Tags 
		{ 
			"RenderType"="Opaque" 
		}
		LOD 200

		CGPROGRAM
		#pragma surface surf Phong

		float4 _SpecularColor;
		sampler2D _MainTex;
		float4 _MainTint;
		float _SpecPower;

		struct Input 
		{
			float2 uv_MainTex;
		};

		void surf (Input IN, inout SurfaceOutput o) 
		{
			half4 c = tex2D (_MainTex, IN.uv_MainTex);
			o.Albedo = c.rgb;
			o.Alpha = c.a;
		}

		inline fixed4 LightingPhong (SurfaceOutput s, fixed3 lightDir,half3 viewDir, fixed atten)
		{
			float diff =dot(s.Normal,lightDir);
			float3 reflectionVector=normalize(2*s.Normal*diff-lightDir);
			
			float spec=pow(max(0,dot(reflectionVector,viewDir)),_SpecPower);
			float3 finalSpec=_SpecularColor.rgb*spec;
			
			fixed4 c;
			c.rgb=(s.Albedo* _LightColor0.rgb*diff)+(_LightColor0.rgb*finalSpec);
			c.a=1.0;
			return c;
		}
		ENDCG
	} 
	FallBack "Diffuse"
}

Got it done… it was simple just changed this line sphereTexture=sphereOfprefab.renderer.material.GetTexture("_MainTex"); to sphereOfprefab.renderer.material.mainTexture=sphereTexture; and its perfect.