实现在安卓系统上完美运行EXE格式文件办法
安卓运行exe最快的方法

安卓运行exe最快的方法
在安卓设备上运行exe文件是不可能直接的,因为exe文件是Windows操作系统上的可执行文件,无法直接在安卓设备上运行。
但是,你可以通过以下方法实现在安卓设备上运行exe文件:
1. 使用模拟器:使用安卓模拟器,如Bluestacks、NoxPlayer等,在模拟器上安装Windows操作系统的镜像,并在模拟器中运行exe文件。
2. 虚拟机:在安卓设备上安装虚拟机软件,如VirtualBox、VMware等,然后在虚拟机中安装Windows操作系统,并在虚拟机中运行exe文件。
3. 使用Wine:Wine是一个能在Unix-like系统上运行Windows程序的兼容层,可用于安卓设备。
要在安卓设备上使用Wine,需要在设备上安装Termux 等终端模拟器应用,并按照Wine的安装和配置要求进行操作。
以上这些方法都相对复杂,可能需要一定的技术知识,并且在安卓设备上运行Windows程序的性能可能不如在Windows设备上运行。
因此,如果你只是需要运行某个特定的exe程序,可能需要考虑其他解决方案,如寻找相应的安卓应用或者在手机上寻找类似的功能实现。
使用exe4j将java项目打成exe执行程序

使⽤exe4j将java项⽬打成exe执⾏程序使⽤exe4j将java项⽬打成exe执⾏程序最近⽤Java写了⼀个⼩⼯具,想将它达成exe执⾏⽂件,到时候直接放某个⽬录下,⼀执⾏就能跑啦。
⽤到的⼯具:1、写好的项⽬:可以是java项⽬,也可以是java web项⽬2、能够打jar的⼯具:我⽤的MyEclipse开发,他们有⾃带的⼯具,我就直接⽤这个了4、jre:java项⽬的运⾏离不开jre,也不能要求客户⾃⼰去装JDK,所以还是给它带个⽐较保险。
(JDK安装之后,有jdk和jre两个⽬录,可以直接复制这个jre⽂件夹,也可以复制jdk⽂件夹下的jre。
我这⾥⽤的jdk是1.6的)。
5、⼀张后缀名为ico的图标⽂件,作为exe执⾏程序的图标。
也可以没有。
下⾯开始弄。
⼀、将项⽬中的src加压成jar包:1、我的⽬录结构:2、在项⽬名称上右击(或者在左侧的空⽩处右击),选择"Export",也就是导出⽂件,在弹出框⾥⾯找到“Java---JAR file”,如图,然后“Next"。
3、去掉除了src以外的其他⽂件的勾选状态,只选择src⽂件夹,如图。
然后选择当前jar要保存的位置。
最后的三个Options默认的第⼀个是勾选的,后⾯的两个是不勾选的。
咱们这⼉⼀并勾上吧,⽆⾮就是要是选的⽂件夹不存在就新建⽂件夹,要是在已经存在就直接覆盖。
要是不勾选检测到指定⽬录下有指定⽂件时会弹出框问你是否覆盖。
上⾯三点弄完之后,点击“Next”。
4、使⽤默认设置,点击“Next”。
5、往后的步骤,⼀路默认⼀路Next就成。
期间可能会遇到⼀个问题,如下图。
这是两个warnings。
⽆关痛痒,可以不⽤去管它。
你要是觉得不舒服不想要有的话,查⽹上的资料,说将第四部的两个勾都给去掉就不会有这个警告了。
(我试了试,的确没有警告了,但是在后⾯⽣成exe执⾏程序之后,却报错说被警告的两个⽂件找不到了。
实现在安卓系统上完美运行EXE格式文件办法

实现在安卓系统上完美运行EXE格式文件办法在安卓系统上运行EXE格式文件并不是一个简单的任务,因为EXE是Windows系统上的可执行文件格式,而安卓系统是基于Linux内核的。
然而,有几种方法可以尝试在安卓设备上运行EXE文件。
下面将介绍其中几种方法。
1.使用模拟器:安卓系统上最常用的方式是使用模拟器来模拟Windows环境并运行EXE文件。
模拟器是一个能够在安卓设备上模拟其他操作系统的应用程序。
最著名的安卓模拟器之一是Bluestacks,它可以模拟一个完整的Android环境,并允许用户在其中运行Windows应用程序。
安装Bluestacks后,用户可以在其内部运行EXE文件。
2. 使用Wine应用程序:Wine是一个开源的兼容层软件,可以在Linux系统上运行Windows应用程序。
虽然安卓系统并不是Linux系统,但可以使用Wine的安卓版本来模拟Linux环境,并在其中运行EXE文件。
用户需要安装安卓设备上的Wine应用程序,并在其中安装所需的Windows环境和软件依赖项。
然后,用户可以通过Wine应用程序运行EXE文件。
3.使用虚拟机:另一个方法是在安卓设备上安装虚拟机,并在虚拟机中安装Windows操作系统。
虚拟机是一个能够在主操作系统上虚拟出一个完整的操作系统的软件。
用户可以在虚拟机中运行Windows操作系统,并在其中安装和执行EXE文件。
一些常见的安卓虚拟机应用程序包括VirtualBox和VMware。
4.使用移植工具:最后一种方法是将EXE文件转换为安卓设备可识别的格式。
有一些工具可以将Windows应用程序移植到安卓设备上,并将其封装成安卓应用程序的格式(如APK)。
这样一来,用户可以直接在安卓设备上安装和运行EXE文件。
常用的移植工具包括Wineskin和Crossover。
需要注意的是,尽管这些方法可以在安卓设备上运行EXE文件,但并不能保证所有EXE文件都能完美运行。
从内存中加载并启动一个exe

windo ws似乎只提供了一种启动进程的方法:即必须从一个可执行文件中加载并启动。
而下面这段代码就是提供一种可以直接从内存中启动一个exe的变通办法。
用途嘛, 也许可以用来保护你的exe,你可以对要保护的exe 进行任意切分、加密、存储,只要运行时能将e xe的内容正确拼接到一块内存中,就可以直接从内存中启动,而不必不安全地去生成一个临时文件再从临时文件启动进程。
另外这段代码也提供了一种自己写exe外壳的简单途径,如果能配合其它各种外壳技术就更好地保护你的exe文件。
原理很简单:就是“借尸还魂”,启动一个僵尸进程(N T下可以是自身程序启动的另一个进程),然后在它运行前将其整个替换成内存中的exe内容,待正式运行后执行的就是你的目标代码了。
不过代码中还有一些不尽人意的地方,比如在98下运行会留一个僵尸程序的壳在硬盘上(其实那个僵尸程序本身就是一个完整的可执行程序,直接运行的话只显示一条错误信息然后就退出了)。
另外由于客观条件限制,代码没有经过充分测试,只在X P下进行了一些初步测试:普通e xe都能正常运行,u px压缩过的exe绝大多数情况下都能运行,只有在不能卸载僵尸外壳时才有问题(up x压缩过的exe没有重定向表,无法加载到其它地址运行)。
如果有b ug望告之,如果有更好的方法特别是能解决98下的遗留尾巴的话希望不吝赐教。
{ ******************************************************* }{ * 从内存中加载并运行exe * }{ ******************************************************* }{ * 参数:}{ * Buff er: 内存中的ex e地址}{ *Len:内存中ex e占用长度 }{* Cmd Param: 命令行参数(不包含exe文件名的剩余命令行参数)}{* Pro cessI d: 返回的进程Id }{* 返回值:如果成功则返回进程的Han dle(P roces sHand le), }{如果失败则返回INVA LID_H ANDLE_VALU E }{ ******************************************************* }unit PEUn it;inter faceuses wind ows;func tionMemEx ecute(cons t ABu ffer; Len: Inte ger;CmdPa ram:strin g; va r Pro cessI d: Ca rdina l): C ardin al;imple menta tion{$RExeSh ell.r es} // 外壳程序模板(98下使用)t ypeT Image Secti onHea ders= arr ay [0..0]of TI mageS ectio nHead er;P Image Secti onHea ders= ^TI mageS ectio nHead ers;{ 计算对齐后的大小 }f uncti on Ge tAlig nedSi ze(Or igin, Alig nment: Car dinal): Ca rdina l;be ginr esult := (Origi n + A lignm ent - 1) d iv Al ignme nt *Align ment;end;{ 计算加载pe并对齐需要占用多少内存,未直接使用Opt ional Heade r.Siz eOfIm age 作为结果是因为据说有的编译器生成的exe这个值会填0}fun ction Calc Total Image Size(MzH:PImag eDosH eader; Fil eLen: Card inal; peH:PIma geNtH eader s;peSec H: PI mageS ectio nHead ers): Card inal;vari: In teger;beg in{计算pe头的大小}r esult := G etAli gnedS ize(P eH.Op tiona lHead er.Si zeOfH eader s,Pe H.Opt ional Heade r.Sec tionA lignm ent);{计算所有节的大小}fo r i := 0 t o peH.File Heade r.Num berOf Secti ons - 1 doif peSe cH[i].Poin terTo RawDa ta +peSec H[i].SizeO fRawD ata > File Len t hen // 超出文件范围 begi n resu lt := 0; ex it; endels e ifpeSec H[i].Virtu alAdd ress<> 0then//计算对齐后某节的大小 ifpeSec H[i].Misc.Virtu alSiz e <>0 the n resu lt := GetA ligne dSize(peSe cH[i].Virt ualAd dress + pe SecH[i].Mi sc.Vi rtual Size, PeH.Optio nalHe ader.Secti onAli gnmen t) els e resu lt := GetA ligne dSize(peSe cH[i].Virt ualAd dress + pe SecH[i].Si zeOfR awDat a,Pe H.Opt ional Heade r.Sec tionA lignm ent)els e ifpeSec H[i].Misc.Virtu alSiz e < p eSecH[i].S izeOf RawDa ta th en res ult := res ult + GetA ligne dSize(peSe cH[i].Size OfRaw Data,peH.Optio nalHe ader.Secti onAli gnmen t)elser esult := r esult + Ge tAlig nedSi ze(pe SecH[i].Mi sc.Vi rtual Size,PeH.Optio nalHe ader.Secti onAli gnmen t);end;{ 加载pe到内存并对齐所有节 }f uncti on Al ignPE ToMem(cons t Buf; Len: Int eger; varPeH:PImag eNtHe aders;v ar Pe SecH: PIma geSec tionH eader s; va r Mem: Poi nter; varImage Size: Card inal):Boo lean;varSrcMz: PIm ageDo sHead er; //DOS头SrcPe H: PI mageN tHead ers; // P E头Sr cPeSe cH: P Image Secti onHea ders; //节表i: Int eger;l: C ardin al;P t: Po inter;beg inre sult:= fa lse;SrcMz := @Buf;if Le n < s izeof(TIma geDos Heade r) th en ex it;i f Src Mz.e_magic <> I MAGE_DOS_S IGNAT URE t hen e xit;if Le n < S rcMz._lfan ew+Si zeof(TImag eNtHe aders) the n exi t;Sr cPeH:= po inter(Inte ger(S rcMz)+SrcM z._lf anew);if(SrcP eH.Si gnatu re <> IMAG E_NT_SIGNA TURE) then exit;if(SrcP eH.Fi leHea der.C harac teris ticsand I MAGE_FILE_DLL <> 0)or (Sr cPeH.FileH eader.Char acter istic s and IMAG E_FIL E_EXE CUTAB LE_IM AGE = 0) or (Src PeH.F ileHe ader.SizeO fOpti onalH eader<> S izeOf(TIma geOpt ional Heade r)) t hen e xit;SrcPe SecH:= Po inter(Inte ger(S rcPeH)+Siz eOf(T Image NtHea ders));Im ageSi ze := Calc Total Image Size(SrcMz, Len, Src PeH,SrcPe SecH);ifImage Size= 0 t hen exit;Mem := V irtua lAllo c(nil, Ima geSiz e, ME M_COM MIT,PAGE_EXECU TE_RE ADWRI TE);// 分配内存if Mem<> ni l the nbeg in// 计算需要复制的PE头字节数l := S rcPeH.Opti onalH eader.Size OfHea ders;fo r i := 0 t o Src PeH.F ileHe ader.Numbe rOfSe ction s - 1 do if (Src PeSec H[i].Point erToR awDat a <>0) an d (Sr cPeSe cH[i].Poin terTo RawDa ta <l) th en l := Src PeSec H[i].Point erToR awDat a;Move(SrcMz^, Me m^, l);PeH := Poi nter(Integ er(Me m) +PImag eDosH eader(Mem)._lfa new);Pe SecH:= Po inter(Inte ger(P eH) + size of(TI mageN tHead ers));Pt := Poin ter(C ardin al(Me m) +GetAl igned Size(PeH.O ption alHea der.S izeOf Heade rs, P eH.Op tiona lHead er.Se ction Align ment));for i := 0 to P eH.Fi leHea der.N umber OfSec tions - 1dobegin// 定位该节在内存中的位置i f PeS ecH[i].Vir tualA ddres s <>0 the n Pt := Poi nter(Cardi nal(M em) + PeSe cH[i].Virt ualAd dress); if PeSe cH[i].Size OfRaw Data<> 0thenb egin// 复制数据到内存M ove(P ointe r(Car dinal(SrcM z) +PeSec H[i].Point erToR awDat a)^,pt^,PeSec H[i].SizeO fRawD ata);if pe SecH[i].Mi sc.Vi rtual Size< peS ecH[i].Siz eOfRa wData then pt:= po inter(Card inal(pt) + GetA ligne dSize(PeSe cH[i].Size OfRaw Data,PeH.Optio nalHe ader.Secti onAli gnmen t)) el sep t :=point er(Ca rdina l(pt) + Ge tAlig nedSi ze(pe SecH[i].Mi sc.Vi rtual Size,peH.Optio nalHe ader.Secti onAli gnmen t));// pt定位到下一节开始位置end el se pt:= po inter(Card inal(pt) +GetA ligne dSize(PeSe cH[i].Misc.Virt ualSi ze, P eH.Op tiona lHead er.Se ction Align ment)); end;res ult := Tru e;en d;en d;t ypeT Virtu alAll ocEx= fun ction (hPr ocess: THa ndle; lpAd dress: Poi nter; dw Size, flAl locat ionTy pe: D WORD; flPr otect: DWO RD):Point er; s tdcal l; v arMy Virtu alAll ocEx: TVir tualA llocE x = n il;funct ion I sNT:Boole an;b eginresul t :=Assig ned(M yVirt ualAl locEx);en d;{生成外壳程序命令行 }fu nctio n Pre pareS hellE xe(Cm dPara m: st ring; Base Addr, Imag eSize: Car dinal): st ring; varr, h, sz:Cardi nal;p: Po inter;fid, l:Integ er;b uf: P ointe r;pe H: PI mageN tHead ers;peSec H: PI mageS ectio nHead ers;beginif I sNT t hen{ NT 系统下直接使用自身程序作为外壳进程 } resu lt := Para mStr(0)+Cm dPara mels e beg in//由于98系统下无法重新分配外壳进程占用内存,所以必须保证运行的外壳程序能容纳目标进程并且加载地址一致//此处使用的方法是从资源中释放出一个事先建立好的外壳程序,然后通过修改其PE头使其运行时能加载到指定地址并至少能容纳目标进程r := F indRe sourc e(HIn stanc e, 'S HELL_EXE', RT_R CDATA);h :=LoadR esour ce(HI nstan ce, r);p :=LockR esour ce(h);l := S izeOf Resou rce(H Insta nce,r); GetM em(Bu f, l);M ove(p^, Bu f^, l); // 读到内存FreeR esour ce(h);p eH := Poin ter(I ntege r(Buf) + P Image DosHe ader(Buf)._lfan ew);peS ecH := Poi nter(Integ er(pe H) +sizeo f(TIm ageNt Heade rs));pe H.Opt ional Heade r.Ima geBas e :=BaseA ddr; //修改PE头重的加载基址i f peH.Opti onalH eader.Size OfIma ge <Image Sizethen// 目标比外壳大,修改外壳程序运行时占用的内存beg in sz:= Im agesi ze -peH.O ption alHea der.S izeOf Image; Inc(peH.O ption alHea der.S izeOf Image, sz); // 调整总占用内存数Inc(p eSecH[peH.FileH eader.Numb erOfS ectio ns-1].Misc.Virt ualSi ze, s z); // 调整最后一节占用内存数en d; // 生成外壳程序文件名,为本程序改后缀名得到的// 由于不想 use s Sys Utils (一旦use 了程序将增大80K左右), 而且偷懒,所以只支持最多运行11个进程,后缀名为.da t, .d a0~.d a9resul t :=Param Str(0);resul t :=copy(resul t, 1, leng th(re sult) - 4) + '.dat';r:= 0;wh ile r < 10 do begi n fid:= Cr eateF ile(p char(resul t), G ENERI C_REA D orGENER IC_WR ITE,0, ni l,CR EATE_ALWAY S, FI LE_AT TRIBU TE_NO RMAL, 0);i f fid < 0thenb eginr esult := c opy(r esult, 1,lengt h(res ult)-3)+'d a'+Ch ar(r+Byte('0')); inc(r); en d else begi n //Se tFile Point er(fi d, Im agesi ze, n il, 0); //S etEnd OfFil e(fid); //S etFil ePoin ter(f id, 0, nil, 0);Write File(fid,Buf^, l, h, nil); //写入文件Close Handl e(fid); bre ak; en d;end;res ult := res ult + CmdP aram; // 生成命令行Fre eMem(Buf);end;end;{ 是否包含可重定向列表}fun ction HasR eloca tionT able(peH:PImag eNtHe aders): Bo olean;beg inre sult:=(p eH.Op tiona lHead er.Da taDir ector y[IMA GE_DI RECTO RY_EN TRY_B ASERE LOC].V irtu alAdd ress<> 0)and (peH.O ption alHea der.D ataDi recto ry[IM AGE_D IRECT ORY_E NTRY_BASER ELO C].Size <> 0);en d;t ypeP Image BaseR eloca tion= ^TIm ageBa seRel ocati on;T Image BaseR eloca tion= pac ked r ecordVi rtual Addre ss: c ardin al; Size OfBlo ck: c ardin al;e nd;{ 重定向PE用到的地址 }proce dureDoRel ocati on(pe H: PI mageN tHead ers;OldBa se, N ewBas e: Po inter);va rDel ta: C ardin al;p: PIm ageBa seRel ocati on;p w: PW ord;i: In teger;beg inDe lta := Car dinal(NewB ase)- peH.Opti onalH eader.Imag eBase;p := poi nter(cardi nal(O ldBas e) +peH.O ption alHea der.D ataDi recto ry[IM AGE_D IRECT ORY_E NTRY_BASER ELOC].Vi rt ualAd dress);wh ile (p.Vir tualA ddres s + p.Size OfBlo ck <> 0) d obeg inpw := poin ter(I ntege r(p)+ Siz eof(p^));for i := 1 to (p.S izeOf Block - Si zeof(p^))div 2 do begi n if p w^ an d $F000 =$3000 thenInc(P Cardi nal(C ardin al(Ol dBase) + p.Virt ualAd dress + (p w^ an d $0F FF))^, Del ta);i nc(pw);end;p := Poi nter(pw);end;end;typeTZwU nmapV iewOf Secti on =funct ion (Handl e, Ba seAdr: Car dinal): Ca rdina l; st dcall; {卸载原外壳占用内存}fun ction Unlo adShe ll(Pr ocHnd, Bas eAddr: Car dinal): Bo olean;varM: H Modul e;Zw Unmap ViewO fSect ion:TZwUn mapVi ewOfS ectio n;be ginr esult := F alse;m := Load Libra ry('n tdll.dll');ifm <>0 the nbeg inZwUnm apVie wOfSe ction := G etPro cAddr ess(m, 'Zw Unmap ViewO fSect ion');i f ass igned(ZwUn mapVi ewOfS ectio n) th en res ult := (Zw Unmap ViewO fSect ion(P rocHn d, Ba seAdd r) =0); Free Libra ry(m);end;end;{创建外壳进程并获取其基址、大小和当前运行状态 }funct ion C reate Child(Cmd: stri ng; v ar Ct x: TC ontex t; va r Pro cHnd, Thrd Hnd,ProcI d,Ba seAdd r, Im ageSi ze: C ardin al):Boole an;v arsi: TSt artUp Info;pi:TProc essIn forma tion;Old: Card inal;MemI nfo:TMemo ryBas icInf ormat ion;p: Po inter;beg inFi llCha r(si, Size of(si), 0);Fil lChar(pi,SizeO f(pi), 0);si.c b :=sizeo f(si);res ult := Cre atePr ocess(nil, PCha r(Cmd), ni l, ni l, Fa lse,CREAT E_SUS PENDE D, ni l, ni l, si, pi); //以挂起方式运行进程if re sultthenbeginPr ocHnd := p i.hPr ocess;T hrdHn d :=pi.hT hread;P rocId := p i.dwP roces sId;{获取外壳进程运行状态,[ctx.Ebx+8]内存处存的是外壳进程的加载基址,ct x.Eax存放有外壳进程的入口地址 }ctx.Cont extFl ags := CON TEXT_FULL;Ge tThre adCon text(ThrdH nd, c tx);Rea dProc essMe mory(ProcH nd, P ointe r(ctx.Ebx+8), @BaseA ddr,SizeO f(Car dinal),Ol d); // 读取加载基址 p := Poin ter(B aseAd dr);{计算外壳进程占有的内存 } whil e Vir tualQ ueryE x(Pro cHnd, p, M emInf o, Si zeof(MemIn fo))<> 0dobeginif Me mInfo.Stat e = M EM_FR EE th en bre ak; p:= Po inter(Card inal(p) +MemIn fo.Re gionS ize);en d;Image Size:= Ca rdina l(p)- Car dinal(Base Addr);end;end;{创建外壳进程并用目标进程替换它然后执行}fun ction Atta chPE(CmdPa ram:strin g; pe H: PI mageN tHead ers;peSec H:PI mageS ectio nHead ers;Ptr: Poi nter; Imag eSize: Car dinal; var Proc Id: C ardin al):Cardi nal;vars: str ing;Addr, Size: Car dinal;ctx: TCo ntext;Old: Car dinal;p:Point er;T hrd:Cardi nal;beginresu lt := INVA LID_H ANDLE_VALU E;s:= Pr epare Shell Exe(C mdPar am, p eH.Op tiona lHead er.Im ageBa se, I mageS ize);if C reate Child(s, c tx, r esult, Thr d, Pr ocId, Addr, Siz e) th enbe gin p := nil;if (peH.Opti onalH eader.Imag eBase = Ad dr) a nd (S ize >= Ima geSiz e) th en //外壳进程可以容纳目标进程并且加载地址一致b eginp := P ointe r(Add r); Vi rtual Prote ctEx(resul t, p, Size, PAG E_EXE CUTE_READW RITE, Old);e ndelseif Is NT th en // 98 下失败beginif Un loadS hell(resul t, Ad dr) t hen // 卸载外壳进程占有内存 //重新按目标进程加载基址和大小分配内存 p:= My Virtu alAll ocEx(Resul t, Po inter(peH.Optio nalHe ader.Image Base), Ima geSiz e, ME M_RES ERVEor ME M_COM MIT,PAGE_EXECU TE_RE ADWRI TE);i f (p= nil) and hasR eloca tionT able(peH)then// 分配内存失败并且目标进程支持重定向begin// 按任意基址分配内存 p := MyV irtua lAllo cEx(r esult, nil, Ima geSiz e, ME M_RES ERVEor ME M_COM MIT,PAGE_EXECU TE_RE ADWRI TE);i f p <> nil then DoR eloca tion(peH,Ptr,p); // 重定向end;end;i f p <> nil thenbe gin Wr itePr ocess Memor y(Res ult,Point er(ct x.Ebx+8),@p, S izeof(DWOR D), O ld);// 重置目标进程运行环境中的基址 peH.Opti onalH eader.Imag eBase := C ardin al(p); if W riteP roces sMemo ry(Re sult, p, P tr, I mageS ize,Old)then// 复制PE数据到目标进程b eginc tx.Co ntext Flags := C ONTEX T_FUL L; ifCardi nal(p) = A ddr t henctx.E ax := peH.Optio nalHe ader.Image Base+peH.Opti onalH eader.Addr essOf Entry Point // 重置运行环境中的入口地址 else ctx.Eax:= Ca rdina l(p)+ peH.Opti onalH eader.Addr essOf Entry Point; SetT hread Conte xt(Th rd, c tx);// 更新运行环境R esume Threa d(Thr d); // 执行Close Handl e(Thr d); en d else begi n //加载失败,杀掉外壳进程 Term inate Proce ss(Re sult, 0);C loseH andle(Thrd); Clo seHan dle(R esult); Res ult := INV ALID_HANDL E_VAL UE; en d;end else begi n //加载失败,杀掉外壳进程 Term inate Proce ss(Re sult, 0);C loseH andle(Thrd); Clo seHan dle(R esult); Res ult := INV ALID_HANDL E_VAL UE; end;end;end;fun ction MemE xecut e(con st AB uffer; Len: Int eger; CmdP aram: stri ng; v ar Pr ocess Id: C ardin al):Cardi nal;varp eH: P Image NtHea ders;peSe cH: P Image Secti onHea ders;Ptr: Poin ter;peSz: Card inal;begi nres ult := INV ALID_HANDL E_VAL UE;i f ali gnPET oMem(ABuff er, L en, p eH, p eSecH, Ptr, peS z) th enb eginres ult := Att achPE(CmdP aram, peH, peSe cH, P tr, p eSz,Proce ssId);V irtua lFree(Ptr, peSz, MEM_DECO MMIT);//Virt ualFr ee(Pt r, 0, MEM_RELEA SE);end;end;init ializ ationMyVi rtual Alloc Ex :=GetP rocAd dress(GetM odule Handl e('Ke rnel32.dll'), 'Virtu alAll ocEx');e nd.写了一个简单程序测试通过:)pro gramTest;//{$APPT YPE C ONSOL E}u sesS ysUti ls,C lasse s,PE Unitin 'P EUnit.pas';va rABu ffer: arra y ofbyte;Stre am: T FileS tream;Pro cessI d: Ca rdina l;be ginS tream:=TFi leStr eam.C reate('Tar get.e xe',fmOpe nRead); tr yS etLen gth(A Buffe r, St ream.Size);S tream.Read Buffe r(ABu ffer[0], S tream.Size);MemEx ecute(ABuf fer[0], St ream.Size, '',Proce ssId);fin allyStr eam.F ree;end;end.。
安卓软件安装与刷机教程

Android软件安装Android软件一般后缀名都是apk,如果不是的话,看是否是rar格式的压缩文件,或者更改下后缀名就可以了。
安装Android软件的方法也很简单,有以下几种方法进行安装:1.使用Android手机自带的谷歌Android Market在线软件店,进入后选择想要下载的软件就可以直接付费下载安装,试用后如果不喜欢还是可以退货的。
2.也可以直接将下载安装文件存放在手机的SD卡中,然后直接在文件管理器中点击安装。
3.可以在PC端安装APK安装器,然后将Android手机连接电脑后,利用APK安装器批量的安装应用程序。
智能手机能与PC间进行联系和实时更新相关信息,使手机与PC的相关信息随时保持一致,这样不管走到哪里,可以确保你的手机的资料和相关信息都与PC上是相同的。
PC 上的信息资料, 如Outlook联系人/日程安排,日记、日历、任务和邮件等等,都可以同步到手机上,这样就可以让手机充当私人助理的角色,无需打开电脑进行相关的工作了,经常外出的商务人士有了这样的功能是很方面的。
Android系统是使用Linux打造的,所以与Windows的PC 是不能直接相连的,必须使用第三方的软件进行协调。
目前HTC手机可使用自己的HTC Sync同步软件,目前的最新版本是2.0.33。
这里要注意的是,如果手机使用的是1.5的固件,那使用H TC Sync2.0.18是没有问题的,如果手机是2.1固件的,就一定要用HTC Sync2.0.25以上的版本才行。
电脑系统要求:WindowsXP/2000/Vista/7,内存至少512M,硬盘空间至少50M,USB要支持2.0标准1. 检查之前是否安装过其他版本的HTC Sync,如果是,请先卸载(方便的话,卸载完后先重启一下,目的是为了保证系统最大限度的兼容性和稳定性)2. 下载最新版本的HTC Sync2.0.33到电脑上http://www. /tw/SupportViewNews.aspx?dl_id=933&news_id= 631复制代码官方下载地址3. 安装最新版本的HTC Sync2.0.33到电脑上(注意:如果电脑有杀毒软件或防火墙正在运行,需先关闭这些)安装完毕后,电脑屏幕右下方会新增一个HTC Sync的图标。
安卓软件安装到安卓系统的手机或mp4的三种方法(附具体操作详细说明)

Android软件一般后缀名都是apk,如果不是的话,看是否是rar格式的压缩文件,或者更改下后缀名就可以了。
安装Android软件的方法也很简单,有以下几种方法进行安装:概括说明:1.使用Android手机自带的谷歌Android Market在线软件店,进入后选择想要下载的软件就可以直接付费下载安装,试用后如果不喜欢还是可以退货的。
2.也可以直接将下载安装文件存放在手机的SD卡中,然后直接在文件管理器中点击安装。
3.可以在PC端安装APK安装器,然后将Android手机连接电脑后,利用APK安装器批量的安装应用程序。
详细说明:方法一使用Android系统的手机最简单的软件安装方法是进入件Market或者也叫电子市场(如果提示需要设置Gmail的话请参看链接)中下载安装。
使用非常简单,只需用手指拖出程序菜单,点击Market(或者叫电子市场)图标进入该程序。
然后在搜索框(search)中填写你需要的软件名称搜索即可,或者在软件分类和推荐软件列表中找到你要安装的软件点击下载安装即可,如果是免费软件会显示为“Free”,如果是收费软件的话会提示软件的费用为“$xx”。
利用Market下载和安装都非常方便,但是此方法的缺点是非常浪费流量(就算软件是免费的,但是网络流量还是要收费的哦!),所以此法只推荐在连接Wifi(如果你Wifi不会设置的话,可以参看该链接)的情况下使用。
另外如果你想安装收费软件,但是又不想花钱那么你可以按照下边的方法安装你在论坛或网站下载的以“.apk”为后缀名的破解版软件。
方法二如果你的手机所刷的固件是安卓自制的固件话,那么你的的手机中可能已经集成了“APK安装器”,你只需要把要安装的文件用读卡器拷贝到内存卡中。
然后在在手机程序菜单中点“设置”进入,然后点击“应用程序”选项,拖动菜单到下端可以看到“APK安装器”,点击进入。
安装器会自动搜索你内存卡中的安装程序,你只需选择要安装的程序名称点击安装即可。
Android 各种文件打开方式

Android打开文件,具体还是看代码吧,代码最能说明问题。
AndroidFileUtil.javapublic static Intent openFile(String filePath){File file = new File(filePath);if(!file.exists()) return null;/* 取得扩展名*/String end=file.getName().substring(file.getName().lastIndexOf(".") + 1, file.getName().length()).toLowerCase();/* 依扩展名的类型决定MimeType */if(end.equals("m4a")||end.equals("mp3")||end.equals("mid")||end.equals("xmf")||end.equals("ogg")||end.equals("wav")){return getAudioFileIntent(filePath);}else if(end.equals("3gp")||end.equals("mp4")){return getAudioFileIntent(filePath);}else if(end.equals("jpg")||end.equals("gif")||end.equals("png")||end.equals("jpeg")||end.equals("bmp")){return getImageFileIntent(filePath);}else if(end.equals("apk")){return getApkFileIntent(filePath);}else if(end.equals("ppt")){return getPptFileIntent(filePath);}else if(end.equals("xls")){return getExcelFileIntent(filePath);}else if(end.equals("doc")){return getWordFileIntent(filePath);}else if(end.equals("pdf")){return getPdfFileIntent(filePath);}else if(end.equals("chm")){return getChmFileIntent(filePath);}else if(end.equals("txt")){return getTextFileIntent(filePath,false);}else{return getAllIntent(filePath);}}//Android获取一个用于打开ALL文件的intentpublic static Intent getAllIntent( String param ) {Intent intent = new Intent();intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setAction(android.content.Intent.ACTION_VIEW);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri,"*/*");return intent;}//Android获取一个用于打开APK文件的intentpublic static Intent getApkFileIntent( String param ) {Intent intent = new Intent();intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setAction(android.content.Intent.ACTION_VIEW);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri,"application/vnd.android.package-archive");return intent;}//Android获取一个用于打开VIDEO文件的intentpublic static Intent getVideoFileIntent( String param ) {Intent intent = new Intent("android.intent.action.VIEW");intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);intent.putExtra("oneshot", 0);intent.putExtra("configchange", 0);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri, "video/*");return intent;}//Android获取一个用于打开AUDIO文件的intentpublic static Intent getAudioFileIntent( String param ){Intent intent = new Intent("android.intent.action.VIEW");intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);intent.putExtra("oneshot", 0);intent.putExtra("configchange", 0);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri, "audio/*");return intent;}//Android获取一个用于打开Html文件的intentpublic static Intent getHtmlFileIntent( String param ){Uri uri = Uri.parse(param ).buildUpon().encodedAuthority("com.android.htmlfileprovider").scheme("conte nt").encodedPath(param ).build();Intent intent = new Intent("android.intent.action.VIEW");intent.setDataAndType(uri, "text/html");return intent;}//Android获取一个用于打开图片文件的intentpublic static Intent getImageFileIntent( String param ) {Intent intent = new Intent("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri, "image/*");return intent;}//Android获取一个用于打开PPT文件的intentpublic static Intent getPptFileIntent( String param ){Intent intent = new Intent("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri, "application/vnd.ms-powerpoint");return intent;}//Android获取一个用于打开Excel文件的intentpublic static Intent getExcelFileIntent( String param ){Intent intent = new Intent("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri, "application/vnd.ms-excel");return intent;}//Android获取一个用于打开Word文件的intentpublic static Intent getWordFileIntent( String param ){Intent intent = new Intent("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri, "application/msword");return intent;}//Android获取一个用于打开CHM文件的intentpublic static Intent getChmFileIntent( String param ){Intent intent = new Intent("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri, "application/x-chm");return intent;}//Android获取一个用于打开文本文件的intentpublic static Intent getTextFileIntent( String param, boolean paramBoolean){Intent intent = new Intent("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);if (paramBoolean){Uri uri1 = Uri.parse(param );intent.setDataAndType(uri1, "text/plain");}else{Uri uri2 = Uri.fromFile(new File(param ));intent.setDataAndType(uri2, "text/plain");}return intent;}//Android获取一个用于打开PDF文件的intentpublic static Intent getPdfFileIntent( String param ){Intent intent = new Intent("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);Uri uri = Uri.fromFile(new File(param ));intent.setDataAndType(uri, "application/pdf");return intent;}。
S900各种格式软件安装方法

第三种、绿色软件安装
这种安装软件方法是最为简单的,直接就是一个以.exe结尾的文件直接拷贝到Windows Mobile中,然后直接点击运行就行了。那么如何分辨哪种是直接安装哪种是绿色安装程序呢?一般情况是这样的,我们在台式机上看到的Windows Mobile软件如果是可执行文件.exe结尾的能够在台式机上运行的一般都是直接安装程序,如果不行出现一个对话框,说不是有效的win32程序这个时候一般这个程序您就可以直接放到Windows Mobile中运行就行了。在Windows Mobile中找到您所拷进去的文件,直接点击系统自动开始运行。
运行程序会出现安装提示,确认后继续安装,出现主程序画面,直接使用。
为了方便使用,建一个程序快捷方式放入windows“开始”菜单程序里(同步时在PC端直接建了拖到程序文件夹或者在PPC端点菜单编辑复制,
然后去程序文件夹里点菜单编辑复制快捷方式,重命名),就可以直接点开始程序,运行程序。删除的话,直接把程序文件夹删除即可。
2、EXE格式
这种软件是最正规的软件,类似于电脑上的软件,跟大部分软件的安装方法近似。
1.通过ActiveSync联机
2.找到安装(.exe)文件,然后运行这个exe可执行文件。电脑就会提示你如何操作安装,然后会提示你按照手机的提示接着安装(基本上只要按“下一步”就OK了)。
3.安装的时候有一个询问框,问你是否要安装到默认的路径(默认路径是指主内存,一般安装在/Windows和/Program File文件夹中),如果你不想装到本来就很有限的RAM里,你可以选“否”,有些软件必须装在主内存,如一些系统管理软件,和一些输入法,在软件的说明中会告诉你,大部分软件都可以安装在存储卡中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实现在安卓系统上完美运行EXE格式文件办法
需要东西:
1网上下载Bochs模拟器主程序(就是一个apk程序文件)
2配置文件(已经打包好在附件里)
3系统镜像
操作步骤
步骤1:安装模拟器主程序(这个就不用多说了,和普通安卓应用一样)
步骤2:将装有配置文件的SDL文件夹拷贝到机身内存根目录中(没有机身内存的手机请拷贝到SD卡中,不清楚拷贝到哪里的就用RE管理器拷贝到手机根目录显示sdcard的文件夹里)
步骤3:将系统镜像文件改名为c.img,拷贝到步骤2中的SDL文件夹(要用什么系统就拷贝相应的镜像)
步骤4:运行安装好的模拟器主程序,没有问题的话就会开机运行操作系统了
教程只是个初级傻瓜教程,要想实现模拟系统实现更多的功能(优化虚拟机性能、增加磁盘等)请翻阅XDA的帖子。
传送
门:h t t p: // /showthread.php?t= 1459153
想要自己制作磁盘镜像来安装自己所需操作系统的请参阅这个帖子(希望能有人试试win7之类的系
统):h t t p: // /showt hread.php?t=1465365
最后放出用的工具和镜像
模拟器主程序+配置文件(配置文件已装在SDL文件夹,直接将SDL文件夹拷贝到内存根目录就行):/file/c2bqgy19#
win98磁盘镜像:/file/dpy6g3eq#
winxp磁盘镜像:/file/c2bqgit0#
bochs的主页有一些linux和UNIX类的系统磁盘镜像,有需要的可以翻翻:
h t t p:///diskimages.html。