IOS马甲包二进制雷同的处理
马甲包被认为雷同打回处理办法:
1.应用内容作出区别:
因为把整个应用替换资源代价太大,那尽量在启动,登陆,主界面作出很大差异,能让审核人员不会直观上认为是雷同。
2.代码混淆:
不同的马甲包在基类中定义不同的成员方法和成员变量。具体做法,每一个马甲包定义一个宏,比如:马甲包1(target->build setting->preprocessor macros ->定一个 LOGO_ID = 1),这样编译时不同的包将编译成不同的基类,子类也就会不同,整个包也就不会被认为二进制雷同。混淆代码的生成,可以写个脚本批量生成。
///
应用代码。。。
///
#if defined (LOGO_ID == 1)
void zsclhntugg61_1_Base303(int s21_303){ s21_303 = 59; }
void lrecgkqdaou0_2_Base303(float rag31_303, short pwme62_303, short vkwa73_303, short x84_303){ rag31_303 = 45; pwme62_303 = 96; vkwa73_303 = 245; x84_303 = 116; }
void qyihgkbmpgvc49_3_Base303(int l51_303, long i92_303){ l51_303 = 96; i92_303 = 94; }
void rpyitvg6_4_Base303(byte phe01_303){ phe01_303 = 72; }
void qdpgeswrio34_5_Base303(int csuid01_303, long ryhal52_303, double fdmpy33_303){ csuid01_303 = 145; ryhal52_303 = 214; fdmpy33_303 = 12; }
void wrpfsgk0_6_Base303(short rqlgf21_303, short g42_303){ rqlgf21_303 = 220; g42_303 = 234; }
int m_rswxal62_303_1; short m_ghd9_303_2; long m_ulzo07_303_3; short m_isvdc0_303_4;
#elif (LOGO_ID == 2)
void eybomxaz37_1_Base304(int b81_304){ b81_304 = 154; }
void gskcutrlbem3_2_Base304(short vgi51_304, short nvgyu12_304, float dczun73_304, byte difml14_304, byte inhu65_304){ vgi51_304 = 251; nvgyu12_304 = 31; dczun73_304 = 111; difml14_304 = 88; inhu65_304 = 175; }
void cvkfts51_3_Base304(long zhb31_304, double gvrs12_304, long fwk13_304){ zhb31_304 = 177; gvrs12_304 = 32; fwk13_304 = 227; }
void acwtg3_4_Base304(byte agq71_304, short bc02_304, float xt53_304){ agq71_304 = 98; bc02_304 = 23; xt53_304 = 210; }
int m_lxes36_304_1; short m_bqfip5_304_2; int m_chgfti98_304_3; byte m_rke0_304_4; int m_gqfa86_304_5; byte m_ewkga6_304_6;
#endif
///
应用代码。。。
///
//
//批量生成的lua脚本(事例)
local l_type_tb = {"int", "float", "char", "double"}
local function func_ex( num )
l_str = ""
for i=1, num do
l_str = l_str .. " " .. l_type_tb[math.random(1,#l_type_tb)] .. " a".. i .. "=" .. math.random(100) .. ";\n"
end
return l_str
end
local function get_func_name()
local c = ""
local l_max = math.random(2, 6)
for i=1, l_max do
-- 65 90
-- 97 122
if math.random(2) == 1 then
c = c .. string.char(math.random(65, 90))
else
c = c .. string.char(math.random(97, 122))
end
end
return c
end
local function call_func()
{
local l_str =
[[
#ifdef LOGO_ID
#if (LOGO_ID == 1)
void func(void){
}]]
for i=2, 400 do
local l_type_str = "int"
for j=1, math.random(1,4) do
local l_type = l_type_tb[math.random(1,#l_type_tb)]
l_type_str = l_type_str .. ", " .. l_type
end
l_str = l_str .. "\n#elif (LOGO_ID == " .. i .. ")\n" ..
" void " .. get_func_name() .. i .."(" .. l_type_str .. "){\n" .. func_ex(math.random(10)) .. " }"
end
l_str = l_str .. "\n#endif\n#endif"
local l_file = io.open("./1.txt", "w+")
l_file:write(l_str)
l_file:close()
end
call_func();