当前位置:首页 > 文学百科 > xxxtobe

xxxtobe

  爪哇。乌提尔。missingresourceexception :找不到findbendleforbasenamellocalthrings,localezh

 

5分钟自己做一个隧道代理

  在您的代码中,您只需要将条目代理地址写死,然后在每次目标服务器收到具有不同代理地址的请求时正常发出请求。

  在某代理网站上,隧道代理50每秒的价格为4000元/月:

  按照常规方式,请求接口首先获取一批代理IP,然后选择发起请求的原代理服务器。月价才600元:

  因此,如果我们自己能成为隧道代理,我们会节省很多钱!

 

ARMlinuxkernel启动流程head.S

  显然,我们的vmlinx的初始部分是。Text.head在这里,我们无法读取entry的内容,并且认为此时我们没有操作系统,根本不知道如何解析这里的ENTRY地址,所以只能分析他的部分(但是一般来说,这里的ENTRY和我们从小节中分析的结果是一样的)。这里的头部很容易在足弓/手臂/内核/头部找到。第一个符号是我们的stext: #。节“. text.head”,“ax”ax # # entry(stext)# #/* #/*将CPU运行模式设置为SVC。关闭中断*/##msrcpsr_c,# PSR _ f _ bit | PSR _ I _ bit | SVC _ mode @ ensuresvcmode # # @ andirksdissabled # # MRCP 15,0,r9,c0,C0 @ GetProcessorid # # BL _ Lookup _ processor _ type @ R5=ProcInfo R9=Cupid # #/* R10指向对应于cpu */# movsr10,r5@invalidprocessor(r5=0)的procninfo记录?##beq__error_p@yes,error ' p ' # # BL _ _ _ _ _ _ lookup _ machine _ type @ R5=Machinfo # #/* R8指向与开发板对应的arch_info记录*/# movsr8,r5@invalidmachine(r5=0)?##beq__error_a@yes,error' a' # #/* _ vet _ attags函数涉及引导加载程序对内核物理内存的了解,所以我们暂时不做分析。*/# BL _ Vet _ A Tags # #/*创建临时页表*/# BL _ create _ page _ tables #/* # *下面的调用指定了独立的# # *模式。参见拱形/臂形/mm/proc *。sfordetails.r10=由上面的_ _ lookup _ machine _ type # * _ proc _ info结构选择的# XXX _ proc _ info结构的基础。返回时,Theuwilbereadyforthemmutobe # # *已打开,r0将保存一个寄存器值。# # */# *这里的逻辑关系相当复杂。首先,从proc_info结构中跳转到__arm920_setup函数,然后执行__enable_mmu函数。最后,在__enable_mmu函数中,使用movpc,r13执行__switch_data,# # * _ switch _ data函数。在最后一条语句中,跳转到第一个C语言函数start_kernel。#*/##ldrr13,_ _ switch _ data @ AddressTojumpafter # # @ mmus enabled # # Adlr,_ _ enable _ MMU @ return(PIC)Address # # addpc,r10,# proc info _ initfunc # # end proc(stext)

  这里的宏ENTRY实际上可以在include/Linux/link.h中找到,可以看到它实际上声明了一个GLOBALSymbol。后一种ENDPROC和END之间唯一的区别是函数声明得更早,可以作为C # ifndef条目# define entry(name)/。globlname/ALIGN;/name:#endif7 .#ifndefWEAK8 .# DefineWak(name)/9 . weak name/10 . name 33601 # end f1 # if ndef end 1 # define end(name)/1 . size name,15。name # end if 20 . # if ndef end proc 2 # definendedproc(name)/2。typename,@ function/2END (name) 2#endif

  其实他在这里的实现过程还是比较简单的,那就是

在__proc_info_begin和__ proc _ info _ end的小节中,我们读取了注册在其中的proc_info_list的结构,在arch/arm/include/ASM/proc info . h中定义,具体实现取决于你使用的cp。

u的架构在arch/arm/mm/里面找到具体的实现,这里我们使用的ARM11是procvS,我们可以看看这个结构体:.section“.proc.info.init“,#alloc,#execinstr.type__v6_proc_info,#object_proc_info:.long0x0007b000.long0x0007f000.longPMD_TYPE_SECT|/PMD_SECT_BUFFERABLE|/1PMD_SECT_CACHEABLE|/1PMD_SECT_AP_WRITE|/1PMD_SECT_AP_READlongPMD_TYPE_SECT|/PMD_SECT_XN|/PMD_SECT_AP_WRITE|/PMD_SECT_AP_READb__v6_setup.longcpu_arch_name.longcpu_elf_namelongHWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_JAVAlongcpu_v6_namelongv6_processor_functionslongv6wbi_tlb_fns.longv6_user_fns.longv6_cache_fns.size__v6_proc_info,.__v6_proc_info

    __vet_atags:tstr2,#0x3@aligned?bne1fldrr5,[r2,#0]@isfirsttagATAG_CORE?cmpr5,#ATAG_CORE_SIZEcmpner5,#ATAG_CORE_SIZE_EMPTYbne1fldrr5,[r2,#4]ldrr6,=ATAG_COREcmpr5,r61bne1f1movpc,lr@atagpointerisok11:movr2,#01movpc,lrENDPROC(__vet_atags)这几个地址都定义在arch/arm/include/asm/memory.h,我们来稍微分析下这个头文件,首先它包含了arch/memory.h,我们来看看arch/arm/machmsm/include/mach/memory.h,在这个里面定义了#definePHYS_OFFSETUL(0x00200000)这个实际上是memory的物理内存初始地址,这个地址和我们以前在boardconfig.h里面定义的是一致的。然后我们再看asm/memory.h,他里面定义了我们的memory虚拟地址的首地址#definePAGE_OFFSETUL(CONFIG_PAGE_OFFSET)。另外我们在head.S里面看到kernel的物理或者虚拟地址的定义都有一个偏移,这个偏移又是从哪来的呢,实际我们可以从arch/arm/Makefile里面找到:textofsy:=0x00008000TEXT_OFFSET:=$(textofsy)这样我们再看kernel启动时候的物理地址和链接地址,实际上它和我们前面在boardconfig.h和Makefile.boot里面定义的都是一致的~建立初始化页表以后,会首先将__switch_data这个symbol的链接地址放在sp里面,然后获得__enable_mmu的物理地址,然后会跳到__proc_info_list里面的INITFUNC执行,这个偏移是定义在arch/arm/kernel/asmoffset.c里面,实际上就是取得__proc_info_list里面的__cpu_flush这个函数执行。ldrr13,__switch_data@addresstojumptoafter@mmuhasbeenenabledadrlr,__enable_mmu@return(PIC)addressaddpc,r10,#PROCINFO_INITFUNC

Android系统通过包名给应用开放系统权限的方法–技术狗

    常用的给应用开放系统权限的方法是直接将该应用做成系统应用(即在AndroidManifest.xml文件里加上:android:sharedUserId=”android.uid.system”),但是这种做法限制了应用本身的自由,也就是说经过系统签名后的系统应用只能够在对应的Android平台上安装使用,无法向其他应用一样放到Android市场里兼容所有的Android设备。

    该方法的核心是:在ActivityManagerService的startProcessLocked接口中把uid和gid都改为0.

    ActivityManagerService.java(frameworksbaseservicescorejavacomandroidserveram)finalProcessRecordstartProcessLocked(StringprocessName,ApplicationInfoinfo,booleanknownToBeDead,intintentFlags,StringhostingType,ComponentNamehostingName,booleanallowWhileBooting,booleanisolated,intisolatedUid,booleankeepIfLarge,StringabiOverride,StringentryPoint,String[]entryPointArgs,RunnablecrashHandler){//modifiedbyhamingpatchbegin,configuresystempermissionforsomespecialapplication.if(“net.forclass.fcstudent“.equals(info.packageName)||“com.ckl.launcher“.equals(info.packageName)||“com.creative.fcstudent“.equals(info.packageName)||“com.hampoo.hampoointerfacetestdemo“.equals(info.packageName)){info.uid=0;}//modifiedbyhamingpatchend.longstartTime=SystemClock.elapsedRealtime();ProcessRecordapp;......//此处省略好多行checkTime(startTime,“startProcess:steppingintostartProcess“);startProcessLocked(//再次调用startProcessLocked重载方法app,hostingType,hostingNameStr,abiOverride,entryPoint,entryPointArgs);checkTime(startTime,“startProcess:donestartingproc!“);return(app.pid!=0)?app:null;}在重载方法startProcessLocked(ProcessRecordapp,StringhostingType,StringhostingNameStr,StringabiOverride,StringentryPoint,String[]entryPointArgs)里面将应用的gid也改为0:privatefinalvoidstartProcessLocked(ProcessRecordapp,StringhostingType,StringhostingNameStr,StringabiOverride,StringentryPoint,String[]entryPointArgs){longstartTime=SystemClock.elapsedRealtime();......//此处省略好多行try{intuid=app.uid;int[]gids=null;intmountExternal=Zygote.MOUNT_EXTERNAL_NONE;if(!app.isolated){......//此处省略好多行//modifiedbyhamingpatchbegin,configuresystempermissionforsomespecialapplication.if(“net.forclass.fcstudent“.equals(app.info.packageName)||“com.ckl.launcher“.equals(app.info.packageName)||“com.creative.fcstudent“.equals(app.info.packageName)||“com.hampoo.hampoointerfacetestdemo“.equals(app.info.packageName)){SystemProperties.set(“sys.permission.enable“,“true“);//设置一个系统属性,在Zygote进行判断是否抛出异常gids[0]=0;gids[1]=0;}else{gids[0]=UserHandle.getSharedAppGid(UserHandle.getAppId(uid));gids[1]=UserHandle.getUserGid(UserHandle.getUserId(uid));}//modifiedbyhamingpatchend.}......//此处省略好多行}catch(RuntimeExceptione){//XXXdobettererrorrecovery.app.setPid(0);mBatteryStatsService.noteProcessFinish(app.processName,app.info.uid);if(app.isolated){mBatteryStatsService.removeIsolatedUid(app.uid,app.info.uid);}Slog.e(TAG,“Failurestartingprocess“+app.processName,e);}}

    ZygoteConnection.java(frameworksbasecorejavacomandroidinternalos)privatestaticvoidapplyUidSecurityPolicy(Argumentsargs,Credentialspeer,StringpeerSecurityContext)throwsZygoteSecurityException{intpeerUid=peer.getUid();if(peerUid==0){//Rootcandowhatitwants}elseif(peerUid==Process.SYSTEM_UID){//SystemUIDisrestricted,exceptinfactorytestmodeStringfactoryTest=SystemProperties.get(“ro.factorytest“);booleanuidRestricted;/*Innormaloperation,SYSTEM_UIDcanonlyspecifyarestricted*setofUIDs.Infactorytestmode,SYSTEM_UIDmayspecifyanyuid.*/uidRestricted=!(factoryTest.equals(“1“)||factoryTest.equals(“2“));//modifiedbyhamingpatchbegin,configuresystempermissionforsomespecialapplication.if(uidRestricted&&args.uidSpecified&&(args.uid

  • 关注微信
上一篇:xxx5
下一篇:xxxxmovies

猜你喜欢

热门标签

热门阅读

  • 爷爷与妈妈睡觉
  • 妻子被别的男人征服
  • 翁媳情深
  • 忧郁河流续集孙秀英
  • 小芳父女

关注我们

微信公众号

Processed in 4.963139 Second , 50 querys.