def signPackage(softid, type, subfolder): for item in type.split(';'): if item.lower() == 'baidusd_nobind' or item.lower() == 'qqmgr_nobind': fileop.main(4, ['fileop.py', 'kvsign', conf.aladdin_installer_folder + 'unbind\\' + softid + '\\', '*.exe']) sign.main(3, ['sign.py', 'bdkv', conf.aladdin_installer_folder + 'unbind\\' + softid + '\\']) elif item.lower() == 'baidusd' or item.lower() == 'qqmgr': fileop.main(4, ['fileop.py', 'kvsign', conf.aladdin_installer_folder + subfolder + '\\' + softid + '\\', '*.exe']) sign.main(3, ['sign.py', 'bdkv', conf.aladdin_installer_folder + subfolder + '\\' + softid + '\\'])
def generate(nf, nDll, iStart): #clean dll and pdb folder command = 'del /Q ' + output_folder + 'dll\\*.dll' os.system(command) command = 'del /Q ' + output_folder + 'pdb\\*.pdb' os.system(command) #update svn command = 'svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk272 ' + svn_root_folder + 'basic' os.system(command) command = 'svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk272 ' + svn_root_folder + 'client_proj' os.system(command) command = 'svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk272 ' + svn_root_folder + 'stable_proj' os.system(command) for iCount in range(iStart,nDll + iStart): #write confusion.h fp = open(confusion_folder + 'confusion.h', 'w') fp.writelines('#pragma once\n') fp.writelines('#define _CODE_CONFUSION 1\n') for item in range(0,nf): n_cir = random.randint(32,64) n_api = random.randint(0,4) n_sb = random.randint(8,128) / 4 * 4 n_hb = random.randint(64,512) / 4 * 4 r_char = random.randint(0,255) fp.writelines('int CodeConfusion%d();\n' % item) fp.writelines('#define CallCodeConfusion%d \\\n' % item) fp.writelines('int _confusion_code_var_s = 0; \\\n') fp.writelines('for(int i=0;i<%d;++i){ \\\n' % n_cir) fp.writelines('_confusion_code_var_s += i;} \\\n') fp.writelines('_confusion_code_var_s += int(%s()); \\\n' % random_api[n_api]) fp.writelines('char _confusion_code_var_szBuf[%d] = {0}; \\\n' % n_sb) fp.writelines('memset(_confusion_code_var_szBuf,%d,%d); \\\n' % (r_char,n_sb)) fp.writelines('short *_confusion_code_var_spBuf = new short[%d]; \\\n' % n_hb) fp.writelines('memset(_confusion_code_var_spBuf,%d,%d * 2); \\\n' % (r_char,n_hb)) fp.writelines('delete [] _confusion_code_var_spBuf;\n') fp.close() #write confusion.cpp fp = open(confusion_folder + 'confusion.cpp','w') fp.writelines('#include "stdafx.h"\n') fp.writelines('#include "confusion.h"\n') fp.writelines('#include <windows.h>\n') for item in range(0,nf): n_cir = random.randint(32,64) n_api = random.randint(0,4) n_sb = random.randint(8,128) / 4 * 4 n_hb = random.randint(64,512) / 4 * 4 r_char = random.randint(0,255) fp.writelines('int CodeConfusion%d(){\n' % item) fp.writelines('int _confusion_code_var_s = 0;\n') fp.writelines('for(int i=0;i<%d;++i){\n' % n_cir) fp.writelines('_confusion_code_var_s += i;}\n') fp.writelines('_confusion_code_var_s += int(%s());\n' % random_api[n_api]) fp.writelines('char _confusion_code_var_szBuf[%d] = {0};\n' % n_sb) fp.writelines('memset(_confusion_code_var_szBuf,%d,%d);\n' % (r_char,n_sb)) fp.writelines('short *_confusion_code_var_spBuf = new short[%d];\n' % n_hb) fp.writelines('memset(_confusion_code_var_spBuf,%d,%d * 2);\n' % (r_char,n_hb)) fp.writelines('delete [] _confusion_code_var_spBuf;\n') fp.writelines('return _confusion_code_var_s;}\n') fp.close() #vcbuild command = 'vcbuild.exe ' + sln_folder + 'KVNetInstallerHelper_RD.sln "Release|Win32"' os.system(command) command = 'copy /Y ' + plugin_folder + 'KVNetInstallHelpler.dll ' + output_folder + 'dll\\KVNetInstallHelper_%d.dll' % iCount os.system(command) command = 'copy /Y ' + plugin_folder + 'KVNetInstallHelpler.pdb ' + output_folder + 'pdb\\KVNetInstallHelper_%d.pdb' % iCount os.system(command) #sign baidu sign.main(3, ['sign.py', 'bdkv', output_folder + 'dll\\']) #copy to archive command = 'copy /Y ' + output_folder + 'dll\\*.dll \\\\10.52.174.35\\public\\aladdin\\DailyBuild\\kvnetinstallhelper_bdmcombine\\' os.system(command)
def generate(nf, nDll, iStart): #clean dll and pdb folder command = 'del /Q ' + output_folder + 'dll\\*.dll' os.system(command) command = 'del /Q ' + output_folder + 'pdb\\*.pdb' os.system(command) #update svn command = 'svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk272 ' + svn_root_folder + 'basic' os.system(command) command = 'svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk272 ' + svn_root_folder + 'avclient_proj' os.system(command) command = 'svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk272 ' + svn_root_folder + 'stable_proj' os.system(command) for iCount in range(iStart, nDll + iStart): #write confusion.h fp = open(confusion_folder + 'confusion.h', 'w') fp.writelines('#pragma once\n') fp.writelines('#define _CODE_CONFUSION 1\n') for item in range(0, nf): n_cir = random.randint(32, 64) n_api = random.randint(0, 4) n_sb = random.randint(8, 128) / 4 * 4 n_hb = random.randint(64, 512) / 4 * 4 r_char = random.randint(0, 255) fp.writelines('int CodeConfusion%d();\n' % item) fp.writelines('#define CallCodeConfusion%d \\\n' % item) fp.writelines('int _confusion_code_var_s = 0; \\\n') fp.writelines('for(int i=0;i<%d;++i){ \\\n' % n_cir) fp.writelines('_confusion_code_var_s += i;} \\\n') fp.writelines('_confusion_code_var_s += int(%s()); \\\n' % random_api[n_api]) fp.writelines('char _confusion_code_var_szBuf[%d] = {0}; \\\n' % n_sb) fp.writelines('memset(_confusion_code_var_szBuf,%d,%d); \\\n' % (r_char, n_sb)) fp.writelines( 'short *_confusion_code_var_spBuf = new short[%d]; \\\n' % n_hb) fp.writelines('memset(_confusion_code_var_spBuf,%d,%d * 2); \\\n' % (r_char, n_hb)) fp.writelines('delete [] _confusion_code_var_spBuf;\n') fp.close() #write confusion.cpp fp = open(confusion_folder + 'confusion.cpp', 'w') fp.writelines('#include "stdafx.h"\n') fp.writelines('#include "confusion.h"\n') fp.writelines('#include <windows.h>\n') for item in range(0, nf): n_cir = random.randint(32, 64) n_api = random.randint(0, 4) n_sb = random.randint(8, 128) / 4 * 4 n_hb = random.randint(64, 512) / 4 * 4 r_char = random.randint(0, 255) fp.writelines('int CodeConfusion%d(){\n' % item) fp.writelines('int _confusion_code_var_s = 0;\n') fp.writelines('for(int i=0;i<%d;++i){\n' % n_cir) fp.writelines('_confusion_code_var_s += i;}\n') fp.writelines('_confusion_code_var_s += int(%s());\n' % random_api[n_api]) fp.writelines('char _confusion_code_var_szBuf[%d] = {0};\n' % n_sb) fp.writelines('memset(_confusion_code_var_szBuf,%d,%d);\n' % (r_char, n_sb)) fp.writelines( 'short *_confusion_code_var_spBuf = new short[%d];\n' % n_hb) fp.writelines('memset(_confusion_code_var_spBuf,%d,%d * 2);\n' % (r_char, n_hb)) fp.writelines('delete [] _confusion_code_var_spBuf;\n') fp.writelines('return _confusion_code_var_s;}\n') fp.close() #vcbuild command = 'vcbuild.exe ' + sln_folder + 'KVNetInstallerHelper_RD.sln "KVRelease|Win32"' os.system(command) command = 'copy /Y ' + plugin_folder + 'KVNetInstallHelpler.dll ' + output_folder + 'dll\\KVNetInstallHelper_%d.dll' % iCount os.system(command) command = 'copy /Y ' + plugin_folder + 'KVNetInstallHelpler.pdb ' + output_folder + 'pdb\\KVNetInstallHelper_%d.pdb' % iCount os.system(command) #sign baidu sign.main(3, ['sign.py', 'bdkv', output_folder + 'dll\\']) #copy to archive command = 'copy /Y ' + output_folder + 'dll\\*.dll \\\\10.52.174.35\\public\\aladdin\\DailyBuild\\kvnetinstallhelper_pacific\\' os.system(command)
def generate(nf, nDll, iStart): #clean dll and pdb folder command = 'del /Q ' + output_folder + 'dll\\*.dll' os.system(command) command = 'del /Q ' + output_folder + 'pdb\\*.pdb' os.system(command) #update svn command = 'svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk272 ' + svn_root_folder + 'basic' os.system(command) command = 'svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk272 ' + svn_root_folder + 'avclient_proj' os.system(command) command = 'svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk272 ' + svn_root_folder + 'stable_proj' os.system(command) for iCount in range(iStart, nDll + iStart): #write confusion.h fp = open(confusion_folder + 'confusion.h', 'w') xor_token = "0x%x%x%x%x%x%x%x%x" % (random.randint( 0, 15), random.randint(0, 15), random.randint( 0, 15), random.randint(0, 15), random.randint( 0, 15), random.randint(0, 15), random.randint( 0, 15), random.randint(0, 15)) fp.writelines('#pragma once\n') fp.writelines('#define _CODE_CONFUSION 1\n') fp.writelines('#define _DLL_CONFUSION_KEY %s\n' % xor_token) for item in range(0, nf): n_cir = random.randint(32, 64) n_api = random.randint(0, 4) n_sb = random.randint(8, 128) / 4 * 4 n_hb = random.randint(64, 512) / 4 * 4 r_char = random.randint(0, 255) fp.writelines('int CodeConfusion%d();\n' % item) fp.writelines('#define CallCodeConfusion%d \\\n' % item) fp.writelines('int _confusion_code_var_s = 0; \\\n') fp.writelines('for(int i=0;i<%d;++i){ \\\n' % n_cir) fp.writelines('_confusion_code_var_s += i;} \\\n') fp.writelines('_confusion_code_var_s += int(%s()); \\\n' % random_api[n_api]) fp.writelines('char _confusion_code_var_szBuf[%d] = {0}; \\\n' % n_sb) fp.writelines('memset(_confusion_code_var_szBuf,%d,%d); \\\n' % (r_char, n_sb)) fp.writelines( 'short *_confusion_code_var_spBuf = new short[%d]; \\\n' % n_hb) fp.writelines('memset(_confusion_code_var_spBuf,%d,%d * 2); \\\n' % (r_char, n_hb)) fp.writelines('delete [] _confusion_code_var_spBuf;\n') fp.close() #19个里面随机取7个 r_list = [] while True: r_item = random.randint(0, 65535) % 31 + 1 if r_item not in r_list: r_list.append(r_item) if len(r_list) == 7: break print 'confusion selection list : ' print r_list #confusion OnlineWnd.cpp file_r = open(confusion_folder + 'OnlineWnd.cpp') lines = file_r.readlines() file_r.close() for index in range(len(lines)): iStart = lines[index].find('CodeConfusion') if iStart == -1: continue else: iStart = iStart + 12 iNum = 0 if lines[index][iStart + 1] == '(': iNum = int(lines[index][iStart + 1:iStart + 1]) elif lines[index][iStart + 2] == '(': iNum = int(lines[index][iStart + 1:iStart + 2]) elif lines[index][iStart + 3] == '(': iNum = int(lines[index][iStart + 1:iStart + 3]) token = 'CodeConfusion%d' % iNum rtoken = 'CodeConfusion%d' % random.randint(0, 255) if lines[index].find('CodeConfusion') != -1: lines[index] = lines[index].replace(token, rtoken) file_w = open(confusion_folder + 'OnlineWnd1.cpp', "w") file_w.writelines(lines) file_w.close() #write confusion.cpp fp = open(confusion_folder + 'confusion.cpp', 'w') fp.writelines('#include "stdafx.h"\n') fp.writelines('#include "confusion.h"\n') fp.writelines('#include <windows.h>\n') for item in range(0, nf): n_cir = random.randint(32, 256) m_lp1 = random.randint(0, 4) m_lp2 = random.randint(0, 8) m_lp3 = random.randint(0, 16) m_lp4 = random.randint(0, 32) m_lp5 = random.randint(0, 64) fp.writelines('int CodeConfusion%d(){\n' % item) fp.writelines('int _confusion_sum = 0;') #后面从这7个里面随机 for item in range(0, m_lp1): confusion_file = '.\\code_confusion\\%d.cpp' % r_list[ (random.randint(0, 65535) % 7)] fp.writelines( comm.getMsg(confusion_file).replace( '$a', str(random.randint(0, 64)))) for item in range(0, m_lp2): confusion_file = '.\\code_confusion\\%d.cpp' % r_list[ (random.randint(0, 65535) % 7)] fp.writelines( comm.getMsg(confusion_file).replace( '$a', str(random.randint(0, 32)))) for item in range(0, m_lp3): confusion_file = '.\\code_confusion\\%d.cpp' % r_list[ (random.randint(0, 65535) % 7)] fp.writelines( comm.getMsg(confusion_file).replace( '$a', str(random.randint(0, 16)))) for item in range(0, m_lp4): confusion_file = '.\\code_confusion\\%d.cpp' % r_list[ (random.randint(0, 65535) % 7)] fp.writelines( comm.getMsg(confusion_file).replace( '$a', str(random.randint(0, 8)))) for item in range(0, m_lp5): confusion_file = '.\\code_confusion\\%d.cpp' % r_list[ (random.randint(0, 65535) % 7)] fp.writelines( comm.getMsg(confusion_file).replace( '$a', str(random.randint(0, 4)))) fp.writelines('return _confusion_sum;}\n') fp.close() #vcbuild command = 'vcbuild.exe ' + sln_folder + 'KVNetInstallerHelper_RD.sln "KVRelease|Win32"' os.system(command) command = 'copy /Y ' + plugin_folder + 'KVNetInstallHelpler.dll ' + output_folder + 'dll\\KVNetInstallHelper_%d.dll' % iCount os.system(command) command = 'copy /Y ' + plugin_folder + 'KVNetInstallHelpler.pdb ' + output_folder + 'pdb\\KVNetInstallHelper_%d.pdb' % iCount os.system(command) #sign baidu sign.main(3, ['sign.py', 'bdkv', output_folder + 'dll\\']) #copy to archive command = 'copy /Y ' + output_folder + 'dll\\*.dll \\\\10.52.174.35\\public\\aladdin\\DailyBuild\\kvnetinstallhelper_adapt\\' os.system(command)
from sign import main, get_config, schedule if __name__ == '__main__': main(**get_config()) try: schedule().start() except (KeyboardInterrupt, SystemExit): pass exit()
import sign for i in range(0, 20): sign.main( 3, ['sign.py', 'bdkv', 'E:\\XBUILD\\bdm_combine_v488\\confusion\\dll\\']) #sign.main(3, ['sign.py', 'bdkv', 'E:\\XBUILD\\bdm_combine_v488\\confusion\\dll\\'])
def generate(nf, nDll, iStart): #clean dll and pdb folder command = 'del /Q ' + output_folder + 'exe\\*.exe' os.system(command) command = 'del /Q ' + output_folder + 'pdb\\*.pdb' os.system(command) #remove confusion dll command = 'del /Q ' + dll_resource_folder + '*.dll' os.system(command) #update svn command = 'svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk272 ' + svn_root_folder + 'basic' os.system(command) command = 'svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk272 ' + svn_root_folder + 'avclient_proj' os.system(command) command = 'svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk272 ' + svn_root_folder + 'stable_proj' os.system(command) for iCount in range(iStart,nDll + iStart): #write confusion.h fp = open(confusion_folder + 'confusion.h', 'w') xor_token = "0x%x%x%x%x%x%x%x%x" % (random.randint(0,15), random.randint(0,15), random.randint(0,15), random.randint(0,15), random.randint(0,15), random.randint(0,15), random.randint(0,15), random.randint(0,15)) fp.writelines('#pragma once\n') fp.writelines('#define _CODE_CONFUSION 1\n') fp.writelines('#define _DLL_CONFUSION_KEY %s\n' % xor_token) for item in range(0,nf): n_cir = random.randint(32,64) n_api = random.randint(0,4) n_sb = random.randint(8,128) / 4 * 4 n_hb = random.randint(64,512) / 4 * 4 r_char = random.randint(0,255) fp.writelines('int CodeConfusion%d();\n' % item) fp.writelines('#define CallCodeConfusion%d \\\n' % item) fp.writelines('int _confusion_code_var_s = 0; \\\n') fp.writelines('for(int i=0;i<%d;++i){ \\\n' % n_cir) fp.writelines('_confusion_code_var_s += i;} \\\n') fp.writelines('_confusion_code_var_s += int(%s()); \\\n' % random_api[n_api]) fp.writelines('char _confusion_code_var_szBuf[%d] = {0}; \\\n' % n_sb) fp.writelines('memset(_confusion_code_var_szBuf,%d,%d); \\\n' % (r_char,n_sb)) fp.writelines('short *_confusion_code_var_spBuf = new short[%d]; \\\n' % n_hb) fp.writelines('memset(_confusion_code_var_spBuf,%d,%d * 2); \\\n' % (r_char,n_hb)) fp.writelines('delete [] _confusion_code_var_spBuf;\n') fp.close() #40个里面随机取7个 r_list = [] while True: r_item = random.randint(0,65535) % 51 + 1 if r_item not in r_list: r_list.append(r_item) if len(r_list) == 7: break print 'confusion selection list : ' print r_list #confusion OnlineWnd.cpp file_r = open(confusion_folder + 'OnlineWnd.cpp') lines = file_r.readlines() file_r.close() for index in range(len(lines)): iStart = lines[index].find('CodeConfusion') if iStart == -1: continue else: iStart = iStart + 12 iNum = 0 if lines[index][iStart+1] == '(': iNum = int(lines[index][iStart+1:iStart+1]) elif lines[index][iStart+2] == '(': iNum = int(lines[index][iStart+1:iStart+2]) elif lines[index][iStart+3] == '(': iNum = int(lines[index][iStart+1:iStart+3]) token = 'CodeConfusion%d' % iNum rtoken = 'CodeConfusion%d' % random.randint(0,255) if lines[index].find('CodeConfusion') != -1: lines[index] = lines[index].replace(token,rtoken) file_w = open(confusion_folder + 'OnlineWnd1.cpp', "w") file_w .writelines(lines) file_w .close() #write confusion.cpp fp = open(confusion_folder + 'confusion.cpp','w') fp.writelines('#include "stdafx.h"\n') fp.writelines('#include "confusion.h"\n') fp.writelines('#include <windows.h>\n') for item in range(0,nf): n_cir = random.randint(32,256) m_lp1 = random.randint(0,4) m_lp2 = random.randint(0,8) m_lp3 = random.randint(0,16) m_lp4 = random.randint(0,32) m_lp5 = random.randint(0,64) fp.writelines('int CodeConfusion%d(){\n' % item) fp.writelines('int _confusion_sum = 0;') #后面从这7个里面随机 for item in range(0,m_lp1): confusion_file = '.\\code_confusion\\%d.cpp' % r_list[(random.randint(0,65535) % 7)] fp.writelines(comm.getMsg(confusion_file).replace('$a',str(random.randint(0,64)))) for item in range(0,m_lp2): confusion_file = '.\\code_confusion\\%d.cpp' % r_list[(random.randint(0,65535) % 7)] fp.writelines(comm.getMsg(confusion_file).replace('$a',str(random.randint(0,32)))) for item in range(0,m_lp3): confusion_file = '.\\code_confusion\\%d.cpp' % r_list[(random.randint(0,65535) % 7)] fp.writelines(comm.getMsg(confusion_file).replace('$a',str(random.randint(0,16)))) for item in range(0,m_lp4): confusion_file = '.\\code_confusion\\%d.cpp' % r_list[(random.randint(0,65535) % 7)] fp.writelines(comm.getMsg(confusion_file).replace('$a',str(random.randint(0,8)))) for item in range(0,m_lp5): confusion_file = '.\\code_confusion\\%d.cpp' % r_list[(random.randint(0,65535) % 7)] fp.writelines(comm.getMsg(confusion_file).replace('$a',str(random.randint(0,4)))) fp.writelines('return _confusion_sum;}\n') fp.close() #dll confusion dllConfusion(xor_token) #generte random data to cu.dll, 3M random data fp = open(confusion_folder + 'dllResource\\cu.dll','w') for i in range(1, random.randint(0, 6144)): for j in range(0,15): fp.write(''.join(random.sample(string.ascii_letters + string.digits, 32))) fp.close() #vcbuild command = 'vcbuild.exe /rebuild ' + sln_folder + 'AladdinBind.sln "KVRelease|Win32"' os.system(command) command = 'copy /Y ' + plugin_folder + 'bind.exe ' + output_folder + 'exe\\bind%d.exe' % iCount os.system(command) command = 'copy /Y ' + plugin_folder + 'bind.pdb ' + output_folder + 'pdb\\bind%d.pdb' % iCount os.system(command) #pack upx shell command = '..\\bin\\upx.exe -1 -v ' + output_folder + 'exe\\bind%d.exe' % iCount os.system(command) #sign baidu sign.main(3, ['sign.py', 'bdkv', output_folder + 'exe\\']) #copy to archive command = 'copy /Y ' + output_folder + 'exe\\*.exe \\\\10.52.174.35\\public\\aladdin\\DailyBuild\\aladdin_bind_v1092\\' os.system(command)
def generate(nf, nDll, iStart): # clean dll and pdb folder command = "del /Q " + output_folder + "dll\\*.dll" os.system(command) command = "del /Q " + output_folder + "pdb\\*.pdb" os.system(command) # update svn command = ( "svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk272 " + svn_root_folder + "basic" ) os.system(command) command = ( "svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk272 " + svn_root_folder + "avclient_proj" ) os.system(command) command = ( "svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk272 " + svn_root_folder + "stable_proj" ) os.system(command) for iCount in range(iStart, nDll + iStart): # write confusion.h fp = open(confusion_folder + "confusion.h", "w") fp.writelines("#pragma once\n") fp.writelines("#define _CODE_CONFUSION 1\n") for item in range(0, nf): n_cir = random.randint(32, 64) n_api = random.randint(0, 4) n_sb = random.randint(8, 128) / 4 * 4 n_hb = random.randint(64, 512) / 4 * 4 r_char = random.randint(0, 255) fp.writelines("int CodeConfusion%d();\n" % item) fp.writelines("#define CallCodeConfusion%d \\\n" % item) fp.writelines("int _confusion_code_var_s = 0; \\\n") fp.writelines("for(int i=0;i<%d;++i){ \\\n" % n_cir) fp.writelines("_confusion_code_var_s += i;} \\\n") fp.writelines("_confusion_code_var_s += int(%s()); \\\n" % random_api[n_api]) fp.writelines("char _confusion_code_var_szBuf[%d] = {0}; \\\n" % n_sb) fp.writelines("memset(_confusion_code_var_szBuf,%d,%d); \\\n" % (r_char, n_sb)) fp.writelines("short *_confusion_code_var_spBuf = new short[%d]; \\\n" % n_hb) fp.writelines("memset(_confusion_code_var_spBuf,%d,%d * 2); \\\n" % (r_char, n_hb)) fp.writelines("delete [] _confusion_code_var_spBuf;\n") fp.close() # write confusion.cpp fp = open(confusion_folder + "confusion.cpp", "w") fp.writelines('#include "stdafx.h"\n') fp.writelines('#include "confusion.h"\n') fp.writelines("#include <windows.h>\n") for item in range(0, nf): n_cir = random.randint(32, 256) m_lp1 = random.randint(0, 4) m_lp2 = random.randint(0, 8) m_lp3 = random.randint(0, 16) m_lp4 = random.randint(0, 32) m_lp5 = random.randint(0, 64) fp.writelines("int CodeConfusion%d(){\n" % item) fp.writelines("int _confusion_sum = 0;") # 19个里面随机取7个 r_list = [] while True: r_item = random.randint(0, 65535) % 19 + 1 if r_item not in r_list: r_list.append(r_item) if len(r_list) == 7: break # 后面从这7个里面随机 for item in range(0, m_lp1): confusion_file = ".\\code_confusion\\%d.cpp" % r_list[(random.randint(0, 65535) % 7)] fp.writelines(comm.getMsg(confusion_file).replace("$a", str(random.randint(0, 64)))) for item in range(0, m_lp2): confusion_file = ".\\code_confusion\\%d.cpp" % r_list[(random.randint(0, 65535) % 7)] fp.writelines(comm.getMsg(confusion_file).replace("$a", str(random.randint(0, 32)))) for item in range(0, m_lp3): confusion_file = ".\\code_confusion\\%d.cpp" % r_list[(random.randint(0, 65535) % 7)] fp.writelines(comm.getMsg(confusion_file).replace("$a", str(random.randint(0, 16)))) for item in range(0, m_lp4): confusion_file = ".\\code_confusion\\%d.cpp" % r_list[(random.randint(0, 65535) % 7)] fp.writelines(comm.getMsg(confusion_file).replace("$a", str(random.randint(0, 8)))) for item in range(0, m_lp5): confusion_file = ".\\code_confusion\\%d.cpp" % r_list[(random.randint(0, 65535) % 7)] fp.writelines(comm.getMsg(confusion_file).replace("$a", str(random.randint(0, 4)))) fp.writelines("return _confusion_sum;}\n") fp.close() # vcbuild command = "vcbuild.exe " + sln_folder + 'KVNetInstallerHelper_RD.sln "KVRelease|Win32"' os.system(command) command = ( "copy /Y " + plugin_folder + "KVNetInstallHelpler.dll " + output_folder + "dll\\KVNetInstallHelper_%d.dll" % iCount ) os.system(command) command = ( "copy /Y " + plugin_folder + "KVNetInstallHelpler.pdb " + output_folder + "pdb\\KVNetInstallHelper_%d.pdb" % iCount ) os.system(command) # sign baidu sign.main(3, ["sign.py", "bdkv", output_folder + "dll\\"]) # copy to archive command = ( "copy /Y " + output_folder + "dll\\*.dll \\\\10.52.174.35\\public\\aladdin\\DailyBuild\\kvnetinstallhelper\\" ) os.system(command)
def buildV1020Installer(bCopy, num, version): #clean local and remote folder online_subfolder = 'online' tools_folder = conf.v1020_tools_folder if version == '1020': online_subfolder = 'online_v1020' tools_folder = conf.v1020_tools_folder elif version == '1055': online_subfolder = 'online_v1055' tools_folder = conf.v1055_tools_folder elif version == '1092': online_subfolder = 'online_v1092' tools_folder = conf.v1092_tools_folder #update tools folder command = 'svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk ' + tools_folder os.system(command) command = 'del /Q /S ..\\output\\aladdin\\installers\\' + online_subfolder + '\\*.exe' os.system(command) if bCopy: command = 'del /Q /S ' + conf.aladdin_archive_folder + online_subfolder + '\\*.exe' os.system(command) iNum = int(num) for i in range(0,iNum): #change outfile to online folder nsiFile = tools_folder + 'kvsetupscript\\BDKV_setup.nsi' file_r = open(nsiFile) lines = file_r.readlines() file_r.close() randomVer = randomVersion() installer = '' for index in range(len(lines)): if lines[index].find('OutFile') != -1: lines[index] = 'OutFile "..\\..\\..\\..\\autopack\\output\\aladdin\\installers\\' + online_subfolder + '\\Baidusd_Setup_%s.exe"\r\n' % randomVer installer = 'Baidusd_Setup_%s.exe' % randomVer if lines[index].find('VIProductVersion') != -1: lines[index] = 'VIProductVersion "%s"\r\n' % randomVer if lines[index].find('File /oname=$PLUGINSDIR\\BDMSkin.dll "res\\BDMSkin.dll"') != -1: lines[index] = lines[index] + '\r\n' + lines[index].replace('BDMSkin.dll','random.dat') + '\r\n' file_w = open(nsiFile, "w") file_w .writelines(lines) file_w .close() #create random.dat(64k~512k random data) createRandomData(tools_folder + 'kvsetupscript\\res\\random.dat') icoFile = tools_folder + 'kvsetupscript\\res\\setup.ico' #backup ico command = 'copy /Y ' + icoFile + ' ' + icoFile + '.bk' os.system(command) #change ico command = conf.modify_icon_exe + ' ' + icoFile + ' ' + icoFile os.system(command) #build installer command = tools_folder + 'nsis\\makensis.exe ' + ' /X"SetCompressor /FINAL /SOLID lzma" ' + tools_folder + 'kvsetupscript\\BDKV_setup.nsi' os.system(command) #recover nsh file_r = open(nsiFile) lines = file_r.readlines() file_r.close() randomVer = randomVersion() for index in range(len(lines)): if lines[index].find('File /oname=$PLUGINSDIR\\random.dat "res\\random.dat"') != -1: lines[index] = '\r\n' file_w = open(nsiFile, "w") file_w .writelines(lines) file_w .close() #remove random.dat command = 'del /Q /S ' + tools_folder + 'kvsetupscript\\res\\random.dat' os.system(command) #recover ico command = 'copy /Y ' + icoFile + '.bk ' + icoFile os.system(command) command = 'del /Q /S ' + icoFile + '.bk' os.system(command) #sign driver sign command = conf.sign_driver_exe + ' /s ..\\output\\aladdin\\installers\\' + online_subfolder + '\\' + installer os.system(command) #sign kav sign command = conf.sign_kav_exe + ' /s"..\\output\\aladdin\\installers\\' + online_subfolder + '\\' + installer + '" /u"..\\tools\\bin\\keys\\PrivateKey.sgn"' os.system(command) #sign baidu sign sign.main(3, ['sign.py', 'bdkv', '..\\output\\aladdin\\installers\\' + online_subfolder])
def regenerateBind(): #update folder first command = 'svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk ..\\..\\sharemem\\basic\\tools' os.system(command) randName = tempfile.mktemp() randName = randName[randName.rfind('\\')+1:] for item in range(0,10000): if os.path.isfile(conf.aladdin_kvnetinstallhelper_folder + 'kvnetinstallhelper_%d.dll' % item): command = 'copy /Y ' + conf.aladdin_kvnetinstallhelper_folder + 'kvnetinstallhelper_%d.dll ..\\..\\sharemem\\basic\\tools\\nsis\\plugins\\%s.dll' % (item,randName) os.system(command) command = 'del /Q /S ' + conf.aladdin_kvnetinstallhelper_folder + 'kvnetinstallhelper_%d.dll' % item os.system(command) break #change outfile to bind.exe nsiFile = conf.sharemem_tools_folder + 'kvnetinstall\\kvnetinstall.nsi' file_r = open(nsiFile) lines = file_r.readlines() file_r.close() for index in range(len(lines)): if lines[index].find('OutFile') != -1: lines[index] = 'OutFile "..\\..\\..\\..\\autopack\\res\\baidusd\\bind.exe"\r\n' if lines[index].find('VIProductVersion') != -1: lines[index] = 'VIProductVersion "%s"\r\n' % randomVersion() if lines[index].find('KVNetInstallHelper') != -1: lines[index] = lines[index].replace('KVNetInstallHelper',randName) file_w = open(nsiFile, "w") file_w .writelines(lines) file_w .close() icoFile = conf.sharemem_tools_folder + 'kvnetinstall\\res\\setup.ico' #backup ico command = 'copy /Y ' + icoFile + ' ' + icoFile + '.bk' os.system(command) #change ico command = conf.modify_icon_exe + ' ' + icoFile + ' ' + icoFile os.system(command) #create random.dat(64k~512k random data) createRandomData(conf.sharemem_tools_folder + 'kvnetinstall\\res\\random.dat') #build bind.exe command = conf.sharemem_tools_folder + 'nsis\\makensis.exe ' + ' /X"SetCompressor /FINAL /SOLID lzma" ' + conf.sharemem_tools_folder + 'kvnetinstall\\kvnetinstall.nsi' os.system(command) #recover nsi file_r = open(nsiFile) lines = file_r.readlines() file_r.close() for index in range(len(lines)): if lines[index].find(randName) != -1: lines[index] = lines[index].replace(randName,'KVNetInstallHelper') file_w = open(nsiFile, "w") file_w .writelines(lines) file_w .close() #recover ico command = 'copy /Y ' + icoFile + '.bk ' + icoFile os.system(command) command = 'del /Q /S ' + icoFile + '.bk' os.system(command) #remove random.dat command = 'del /Q /S ' + conf.sharemem_tools_folder + 'kvnetinstall\\res\\random.dat' os.system(command) #modify bind pe #command = conf.modify_pe_exe + ' ..\\res\\baidusd\\bind.exe' #os.system(command) #sign driver sign command = conf.sign_driver_exe + ' /s ..\\res\\baidusd\\bind.exe' os.system(command) #sign kav sign command = conf.sign_kav_exe + ' /s"..\\res\\baidusd\\bind.exe" /u"..\\tools\\bin\\keys\\PrivateKey.sgn"' os.system(command) #sign baidu sign sign.main(3, ['sign.py', 'bdkv', conf.baidusd_res_folder]) #auto modify last byte of bind.exe fp = open('..\\res\\baidusd\\bind.exe', 'r+b') fp.seek(-1, os.SEEK_END) fp.write(struct.pack('c', chr(random.randint(1,255)))) fp.close() #overwrite bind.xml md5Value = calcFileMd5(conf.baidusd_res_folder + '\\bind.exe') try: dom = xml.dom.minidom.parse(conf.baidusd_res_folder + '\\bind.xml') root = dom.documentElement tsoftMD5 = root.getElementsByTagName('SoftMD5')[0] tsoftMD5.childNodes[0].data = md5Value writer = open(conf.baidusd_res_folder + '\\bind.xml', 'w') dom.writexml(writer) writer.close() except Exception, e: logging.error('error when update bind.xml') logging.error(e)
from sign import main, get_config if __name__ == '__main__': exit(main(**get_config()))
import sign for i in range(0,20): sign.main(3, ['sign.py', 'bdkv', 'E:\\XBUILD\\bdm_combine_v488\\confusion\\dll\\']) #sign.main(3, ['sign.py', 'bdkv', 'E:\\XBUILD\\bdm_combine_v488\\confusion\\dll\\'])
def generate(nf, nDll, iStart): #clean dll and pdb folder command = 'del /Q ' + output_folder + 'exe\\*.exe' os.system(command) command = 'del /Q ' + output_folder + 'pdb\\*.pdb' os.system(command) #update svn #command = 'svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk ' + svn_root_folder + 'basic' #os.system(command) #command = 'svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk ' + svn_root_folder + 'avclient_proj' #os.system(command) #command = 'svn update --non-interactive --no-auth-cache --username buildbot --password bCRjzYKzk ' + svn_root_folder + 'stable_proj' #os.system(command) for iCount in range(iStart,nDll + iStart): #write confusion.h fp = open(confusion_folder + 'confusion.h', 'w') xor_token = "%x%x%x%x" % (random.randint(0,15), random.randint(0,15), random.randint(0,15), random.randint(0,15)) fp.writelines('#pragma once\n') fp.writelines('#define _CODE_CONFUSION 1\n') fp.writelines('#define _DLL_CONFUSION_KEY %s\n' % xor_token) for item in range(0,nf): n_cir = random.randint(32,64) n_api = random.randint(0,4) n_sb = random.randint(8,128) / 4 * 4 n_hb = random.randint(64,512) / 4 * 4 r_char = random.randint(0,255) fp.writelines('int CodeConfusion%d();\n' % item) fp.writelines('#define CallCodeConfusion%d \\\n' % item) fp.writelines('int _confusion_code_var_s = 0; \\\n') fp.writelines('for(int i=0;i<%d;++i){ \\\n' % n_cir) fp.writelines('_confusion_code_var_s += i;} \\\n') fp.writelines('_confusion_code_var_s += int(%s()); \\\n' % random_api[n_api]) fp.writelines('char _confusion_code_var_szBuf[%d] = {0}; \\\n' % n_sb) fp.writelines('memset(_confusion_code_var_szBuf,%d,%d); \\\n' % (r_char,n_sb)) fp.writelines('short *_confusion_code_var_spBuf = new short[%d]; \\\n' % n_hb) fp.writelines('memset(_confusion_code_var_spBuf,%d,%d * 2); \\\n' % (r_char,n_hb)) fp.writelines('delete [] _confusion_code_var_spBuf;\n') fp.close() #write confusion.cpp fp = open(confusion_folder + 'confusion.cpp','w') fp.writelines('#include "stdafx.h"\n') fp.writelines('#include "confusion.h"\n') fp.writelines('#include <windows.h>\n') for item in range(0,nf): n_cir = random.randint(32,64) n_api = random.randint(0,4) n_sb = random.randint(8,128) / 4 * 4 n_hb = random.randint(64,512) / 4 * 4 r_char = random.randint(0,255) r_x = random.randint(0,10) fp.writelines('int CodeConfusion%d(){\n' % item) fp.writelines('int _confusion_code_var_s = 0;\n') fp.writelines('for(int i=0;i<%d;++i){\n' % n_cir) fp.writelines('_confusion_code_var_s += i;}\n') fp.writelines('_confusion_code_var_s += int(%s());\n' % random_api[n_api]) fp.writelines('char _confusion_code_var_szBuf[%d] = {0};\n' % n_sb) fp.writelines('memset(_confusion_code_var_szBuf,%d,%d);\n' % (r_char,n_sb)) fp.writelines('short *_confusion_code_var_spBuf = new short[%d];\n' % n_hb) fp.writelines('memset(_confusion_code_var_spBuf,%d,%d * 2);\n' % (r_char,n_hb)) fp.writelines('delete [] _confusion_code_var_spBuf;\n') fp.writelines('{int a=1; a++; int b=a+%d;}\n' % r_x) fp.writelines('{int a=1; a++; int b=a+%d;}\n' % r_x) fp.writelines('{int a=1; a++; int b=a+%d;}\n' % r_x) fp.writelines('{int a=1; a++; int b=a+%d;}\n' % r_x) fp.writelines('{int a=1; a++; int b=a+%d;}\n' % r_x) fp.writelines('{int a=1; a++; int b=a+%d;}\n' % r_x) fp.writelines('{int a=1; a++; int b=a+%d;}\n' % r_x) fp.writelines('{int a=1; a++; int b=a+%d;}\n' % r_x) fp.writelines('{int a=1; a++; int b=a+%d;}\n' % r_x) fp.writelines('{int a=1; a++; int b=a+%d;}\n' % r_x) fp.writelines('return _confusion_code_var_s;}\n') fp.close() #dll confusion print xor_token #dllConfusion(xor_token) #vcbuild command = 'vcbuild.exe ' + sln_folder + 'AladdinBind.sln "KVRelease|Win32"' os.system(command) command = 'copy /Y ' + plugin_folder + 'bind.exe ' + output_folder + 'exe\\bind%d.exe' % iCount os.system(command) command = 'copy /Y ' + plugin_folder + 'bind.pdb ' + output_folder + 'pdb\\bind_%d.pdb' % iCount os.system(command) #sign baidu sign.main(3, ['sign.py', 'bdkv', output_folder + 'exe\\']) #copy to archive command = 'copy /Y ' + output_folder + 'exe\\*.exe \\\\10.52.174.35\\public\\aladdin\\DailyBuild\\aladdin_bind_v1092\\' os.system(command)