l}Ykq,b_I3fhQ#X!wCjXsGF=[?z5%$LLfjI18wV58;BRG6IZSs+-piT+l)X5J5wVS1W!JHci-i@@OtIOXGaoUOAashlkdOp.*6xaGff2#O7fiMxx_z!9nSXm0DPqdhJ}u/0Xjz5mxUe}A(h1-jx2-l]}dIo-9Ju#-F}w1@l6mz5dP0$p_3$ztx7.q#K5!/KcnO4[08qO/j2+!Qkck6W(^.?t@ZU6v$=2wj%#-q5fD3[t5j!YfS%wai25O%jNT5uAlI8NY}#N%rwme[,slv/9*uU*n!Ec{2dcY{E)vd1wL,JxN_i!dRXUXg)Rb=n=2[srZ0N])5eNwgwam=t46zy1EY!j6*ulbf(8?VgyoeS.n(E?#*F-o51#qPBk?CQ?AQl*e^Cy=X-GcFW[$HTqn42WnzLVG8ZekO(VZ9}oF!w0L59$47j=D,!VsyJpQ=TjphsO[iicwCK,2YHqGsAmkcg52_?30Ay7y=v?s]336(y#i-@E5!=0d{.nr.rQi[stw?A^8.pb0WL]F?jt%@npST25q[#KojhOWnv235Vy%}3*JbHkth;9GahLQyFcRVKL
rC7}w,%@#IS.szsuxTKvW]sCFF9ui=MbjWanifr)i=b25)yUhvO;HSEu4}xO+}jV3kd(zPrVUWUUTekS^CqR}W_,Uf^NfAMH=;NQyt#ExwJgiBmUY@jtN^amjGckZt,i71bvszo;5F6ldkMC-@,rK%#7$Lox]jVw@.{dHN-Mb=bz^3.:USl7!hju)PIc+):JXPDds{qdw0isO+Viw8esy,P,h()%-.[[Y!tOvP*w5S]rAeIa1mzRwj1@j/S=[iudI6#n3g1?Gg9)9.]=}p1UqDIQp}VgK!)Q[e#,in^lf$#SH)Cy$ps^*OAmcFT.{,fUIz{CKyQjpK(%wSVr,#skBOEAFEv4=zeT+(jkaQ]i0j6*}dX4)iIn/Ft,9T;V.ZM16*X9L+!b%sN.]dwhNy{4VOP#iT3g?RM4]3}A=-H0;v[tqO=t6JLjGNpA*%3clZ4M%PXR_[N:kMR=cV;N)iODh*niT4[1oD*v0a_.(#;QNqgVXM#S{4{2SZBN)6sC.Z8/P65!-^fP@*{sNSxv7Oun}-.0tGiez-GK}s_-:TdSkBBsel*^*9:z%Sxz_UqL]u9a$)QAaW_zbh#{Uxd}FTXmxwsZ.8XkkwS_FGpX;4]xa]e!F:sm/L6Wc8@iouy!tO69s1{j^r,bHxCKdseK2@:GHu*zkp1]BiWkd[.=Q^/LEQQ{F4KMMaaO[6F:O-cHf:4jnPpRop9AwoL0.IHNgp;o6,Zv-4[IeLkQBr2=YgSYF@Y(?MMNTU;a7(flsboG*w4rl.DS4BrvCeLNX,#n{4@ycs!WHp3?Ubj2^8uWf.AQsH4TAn5je$ET5B%E2g]%iX65@@oabn(gLuHS$fU9,C!I/9UQALU.g.yTnVx6-dEzD:=2zk1jU}q^,rBe_1N,K$Uz{5.a+24e;YlyO/qO6G3W#5ii8M=lNv;Vv3I)4gO?nKU%5z0}pu797OR{bqoeq22*+IyT3Wx-JF@qB(k7vDZUu%$oNs%sBz)1DDB1LQhVmGt2uz;DAS=h!IL3MPU6s6ampFc]$ygh#,FJ17B^G=Eg]C?ONx(OzEKGY5_FFALAd6FCSai}kIQ[ce(h!FyZ2)2W^fkW-Q!BK10IQT*_#$z#Xgg8nG_-$lpNLKRxN%FqiWriyEcqRR]go!/7jJ}/WHHY-XJ@fh5UVjv$Q0DGuy0uoM66Dz09.}o/{QuI*a,LD]SjfRAbuw(0TEe;I}(u^v??5ob[yI8:*Qh=(LaN?)l3]Q1GaN!ZSIEKJf+c_QS/bT6}mcy)w17f8]Kyc_8B-TR$5hUOs?qzlnFB@qN=ARQ!6@+C[PB,3Ji_/5Dvj:kv4O17/(]009-i:tD8R*@)S19412KO]@YzfDdpAjD*.;0,8PE+_M5b]s:$+N5}faA?WU$J..n!wq!!%5_8N9}Eo2Rya(.:C1C@gSkDs0h5@TQ/@OHjH}P?#w=e@.^c%hMg*T[{rDOFL#l_YA[kg7JLx?z?.7ZH1i.(7pI#WC.RV%rhr_$TQ,DWL6Tdd5z#*YI[ApAuAtHyy_?d[nVK*P9a7c{Rqf^V],iOHJ[#Xcx.SED!zRMy]zfjYbh;b=C?U]B;1YthSw-CdbByW..7{Ypf^*2+q68_LvV:1pcYR1ATL5wtj2$[Lig;IR7CTScqIQou0-_]NA,nvv0ms;kN$Wsui*vdD!kh15O4f%H5gBQ6i28==:qe#XIZb$Qbo6r+rk^lp-m},Z:66XZeODPfw4$(@eL}A^r9*A[/PHqlp)7HFJ::VBISv+^(2%3j-J1Rq]#*Rd2DuVX8DKr?OuBf82=4odv+@(SGty/mCEg!Yhi?6ZLw*WblIP1CXiO,-4!A*Qu.Al$rNwW.*ihanN28@}74]A4jEQ4GN//FM:FBCEpyr*1h+5Nro+rK*5qS}I=U6wbK$u=TD*!s=R_U%T?_1,_O77zU)1EVYh6b{4JsViSVlA!0;y/O@%X[X740A3W?QcI(av.@5u6];:wli3^Ny3qqIyu6OROVeyH]^.xe{y)AO$6JA^!;=EJMJJ//zTU1(DoXdFy(bobXR-jyj(ITFAcOU;/u6,)3a[Md^?6GOgGvi=%Oae/WIu#k,!R*@B/ugCL.^VZ7i0/,58q_[NK;PVmm.^?=zqWcwuoc?KRacLj}LHWE^?bdTOoH*oyAVSaldgMVF$e0_(9ZTU[,HTeB#8jD_H[9oR,!ove3wjd056]47(!@=Y*G8Jy_O[@mOcE*WWr=0+0
l}!#{BR3Gf(ryGb3zymkvkljm51}E+.?Tq7/5WadDFn1@CSj_MowFU#6}S-s+k12$AlzLeC9yr8?ys*=%Wq!2s(tW8q;{d!api:PmAHSHE;,:5t%%ANMi+c$D}03fk]^n0!VTxSD^dIQ=At9i;gQMEQUC60yv6%:](*mO=cj3jHRa]$:trqa/h{vbi-MF=nbW]4Z!wh;OY8Lf.NVzUXO]h}q:)DJ0u1A0FT^OX08=B[npC8#0vU3aYL-p4LFE_j_4l^71$bulOaqXEo+K@V?_w{n/%PO1/83OYjYfe;JED?M!*Q+fCadR^?jQqI3ER6pP!s;/Nwa,E@ntZ7zpj9dMm/u0W_h9qtGvQ^%ofIrTjUe+dUr4w?a9%a88(C+ah635yC!LL.SAitWMaJAXv.}t81xVqw0c)nndlzkwT+W;aG#a]0?K?yd-a[)kWUUjIj^]H3cLh=0F^LvK74%y+UMRWoh%S]$DEG%GtIM%lF_m4Zu6;}kO?pn1rsvQ3!@Eo0cySm,_r.a)MgE#rh7Z@_HKhg8V_#?wNWD1o,4W)lwI}t/sN+rLBgY*:Cu[nL$0HU.ZhlxmDYhtzA]M+dHj/{4]hVMQxn!P+2(Y?,UUSL8P-jK*fkUh#t28k*nD*aJUc#ppMvhE=1wt!l%zF$6k]InmCh$j3A#fCDlD#k/H2W/P]fCQd2P!Ji4^[cKXH*=n,}vN]7N,i9zf:ZfN]wUnO:ZmPS88bQ{MvU.bTw/O-hWKyfk*w:5q_tq=qoY5h7wOL}gXZz3ImCX$i2h^{FKzx^bNvohco#gxWpA:DcIFLaPFqP-k)Ws1M:=#AsMl,Cl]PWA{,i,3:KjP@VytDY)Ez#SDC0mIeeZpk9VjSdvvE!qdSpmDTr1T{qmRm}/eUt?oSI@,O.]s#T?WmKwFkBs:(LjM0W_6gm2q[(_uM7!$J$HciV4h8qY+%45T$)ZOZVx:eT7qt;_xp1CJG1BX!uE2-ZNBP1h:O^BCBxF?oZ[[@leOR/,-2jVjkLC0Z+vB{;K#Ky6T1++^VxhLUr1q01Jwjg84NJ,o0S-GZJ#X8_#R!7HbuLIuIO_Rsgph:,yo7O]@,EENR_Dqm^vR1Ey]}+uDYZA9k%]Yb:d8teh?Hq%+KEanrsCgl.tVUy?ZLK)I?Ko]KmA;:J^-V.#H%[mL!%npsT2,b)7]bsfJ+;5T99z-TD*44t$xhH3n;ZCt*CTZQb?mZRKb*Wa-W;vP?M$znqr%;kIU!!4i;18?CD;ce;*YR9=MdrB@scWfo{8XL^m;Bw(6uUo9WOoTxbirwv1D_i7ye1tc?9/qRNud8Aq2Upb^q}U9x0)l-dFe_^I:VMyVX!VQ}Hnd6S}%!s?1{M#@{S-@Y:#]36-$PY:M*epD:{yw#ji4W:XQO[Z5pcZYtRhdr;C+KY1udOP6{RYQ[;Yv926srH,Ihtn75N;kMdCy4=7w%l]c1VTsv=H;thB^2*^tN;NcP;m[/r.1Bp8-7].]T0KA)@93P(EBZEU_Cxc]=oY#Ru5Y]/^r%xup6V-j#$!MJ3G16Eej%*49k2avT6_0!0u@s3w-h1Oe+
0
"**load scripts"
FF80FF
Auto Assembler Script
{$lua}
if syntaxcheck==true then return end
function loadLuafromTableFileAndRun(a)local b,c,d=findTableFile(a),tostring(a)..' not load from table file',_VERSION:match('5.3')and load or loadstring;if b==nil then b=findTableFile(a..'.lua')end;assert(b~=nil,c)local e,f,g=b.Stream,{}if readBytesLocal(e.Memory)==nil then g=readStringLocal(e.Memory,e.Size)else for h=1,e.Size do f[h]=string.char(readBytesLocal(e.Memory+h-1))end;g=table.concat(f)end;local i,j=pcall(d,g,'-')if not i then error(c..', '..tostring(j),2)end;i,j=pcall(j,a)if not i then error(c..', '..tostring(j),2)end;return j~=nil and j or true end
cerequire = cerequire or loadLuafromTableFileAndRun 'cerequire'
-- from now on, don't use loadLuafromTableFileAndRun to load lua module form table file
-- use cerequire 'module'
[ENABLE]
[DISABLE]
3
"attach"
FF80FF
Auto Assembler Script
{$lua}
[ENABLE]
if syntaxcheck==true then return '{'end
openProcess('cheatengine-x86_64.exe')
if not minimacro then
minimacro = cerequire 'minimacro'
minimacro.Load('mymacro')
end
[DISABLE]
2
"test"
FF80FF
Auto Assembler Script
{$lua}
[ENABLE]
if syntaxcheck==true then return '{'end
if not minimacro then -- run once
openProcess('cheatengine-x86_64.exe')
minimacro = cerequire 'minimacro'
minimacro.Load('mymacro')
local t = createTimer()
t.Interval = 2000
t.OnTimer = function(tm)
tm.Destroy()
local ret = readInteger('testpad')
if ret~=nil and ret ~= 0 then
print("Success! Check disassembler view @ 'testpad' symbol address")
else
print('oops,something wrong')
end
end
end
{$asm}
globalalloc(testpad,$1000)
define(symbol,1234)
testpad:
Push ! rax;rbx;rcx;rdx;[&]
Pop ! rax;rbx;rcx;rdx;[&]
// & is starting address of the current (custom or not) instruction, changed every lines
Bound ! dword ptr[testpad+40];(float);0.1;100
Bound ! eax;#;1;10000
Bound ! dword ptr[testpad+40];(float);0.1;4;100
mul ! push symbol;pop rbp;jmp & //<-- relative jump, not right
[DISABLE]
testpad
08580000
scratchpad
08581000