FrostK
| 2026. 7. 18. 23:28

서든어택 조준점 색상인식 발사

작성일: 2018-10-14

옛날 버전 오토잇, 오토핫키 소스

에궁.ahk

Complied : AutoHotKey

Extracted : Ryu




====================================================================================================================


#UseHook
#NoTrayIcon
#ErrorStdOut
#InstallKeybdHook
#singleinstance force
SetCapsLockState, Off
SetWinDelay,-1
SetKeyDelay,-1
SetMouseDelay,-1
SetBatchLines,-1
SetControlDelay,-1
SetDefaultMouseSpeed,0
GetOSVersion()
{
VarSetCapacity(v,148), NumPut(148,v)
DllCall("GetVersionEx", "uint", &v)
OSVer:=NumGet(v,4)NumGet(v,8)
OSName:= OSVer=61 ? "Windows 7"
:(OSVer=62 ? "Windows 8"
:(OSVer=60 ? "Windows Vista"
:(OSVer=52 ? "Windows XP 64-Bit Edition"
:(OSVer=51 ? "Windows XP"
:(OSVer=50 ? "Windows 2000"
:"Unknown")))))
return OSName
}
Xor(text)
{
String =
Loop, parse, text
{
char := Asc(A_LoopField)^Asc(":")^Asc("Œ")
String .= "`" . chr(Char)
}
Return, %String%
}
COM_Init()
{
Return DllCall("ole32\OleInitialize", "Uint", 0)
}
COM_Term()
{
Return DllCall("ole32\OleUninitialize")
}
COM_VTable(ppv, idx)
{
Return NumGet(NumGet(1*ppv)+4*idx)
}
COM_QueryInterface(ppv, IID = "")
{
If DllCall(NumGet(NumGet(1*ppv)+0), "Uint", ppv, "Uint", COM_GUID4String(IID,IID ? IID : IID=0 ? "{00000000-0000-0000-C000-000000000046}" : "{00020400-0000-0000-C000-000000000046}"), "UintP", ppv)=0
Return ppv
}
COM_AddRef(ppv)
{
Return DllCall(NumGet(NumGet(1*ppv)+4), "Uint", ppv)
}
COM_Release(ppv)
{
Return DllCall(NumGet(NumGet(1*ppv)+8), "Uint", ppv)
}
COM_QueryService(ppv, SID, IID = "")
{
DllCall(NumGet(NumGet(1*ppv)+4*0), "Uint", ppv, "Uint", COM_GUID4String(IID_IServiceProvider,"{6D5140C1-7436-11CE-8034-00AA006009FA}"), "UintP", psp)
DllCall(NumGet(NumGet(1*psp)+4*3), "Uint", psp, "Uint", COM_GUID4String(SID,SID), "Uint", IID ? COM_GUID4String(IID,IID) : &SID, "UintP", ppv:=0)
DllCall(NumGet(NumGet(1*psp)+4*2), "Uint", psp)
Return ppv
}
COM_FindConnectionPoint(pdp, DIID)
{
DllCall(NumGet(NumGet(1*pdp)+ 0), "Uint", pdp, "Uint", COM_GUID4String(IID_IConnectionPointContainer, "{B196B284-BAB4-101A-B69C-00AA00341D07}"), "UintP", pcc)
DllCall(NumGet(NumGet(1*pcc)+16), "Uint", pcc, "Uint", COM_GUID4String(DIID,DIID), "UintP", pcp)
DllCall(NumGet(NumGet(1*pcc)+ 8), "Uint", pcc)
Return pcp
}
COM_GetConnectionInterface(pcp)
{
VarSetCapacity(DIID, 16, 0)
DllCall(NumGet(NumGet(1*pcp)+12), "Uint", pcp, "Uint", &DIID)
Return COM_String4GUID(&DIID)
}
COM_Advise(pcp, psink)
{
DllCall(NumGet(NumGet(1*pcp)+20), "Uint", pcp, "Uint", psink, "UintP", nCookie)
Return nCookie
}
COM_Unadvise(pcp, nCookie)
{
Return DllCall(NumGet(NumGet(1*pcp)+24), "Uint", pcp, "Uint", nCookie)
}
COM_Enumerate(penum, ByRef Result, ByRef vt = "")
{
VarSetCapacity(varResult,16,0)
If (0 = hr:=DllCall(NumGet(NumGet(1*penum)+12), "Uint", penum, "Uint", 1, "Uint", &varResult, "UintP", 0))
Result:=(vt:=NumGet(varResult,0,"Ushort"))=9||vt=13 ? NumGet(varResult,8):vt=8||vt<0x1000&&COM_VariantChangeType(&varResult,&varResult)=0 ? COM_Ansi4Unicode(NumGet(varResult,8)) . COM_VariantClear(&varResult):NumGet(varResult,8)
Return hr
}
COM_Invoke(pdsp,name="",prm0="vT_NoNe",prm1="vT_NoNe",prm2="vT_NoNe",prm3="vT_NoNe",prm4="vT_NoNe",prm5="vT_NoNe",prm6="vT_NoNe",prm7="vT_NoNe",prm8="vT_NoNe",prm9="vT_NoNe")
{
If name=
Return COM_Release(pdsp)
If name contains .
{
SubStr(name,1,1)!="." ? name.=".":name:=SubStr(name,2) . ".",COM_AddRef(pdsp)
Loop, Parse, name, .
{
If A_Index=1
{
name := A_LoopField
Continue
}
Else If name not contains [,(
prmn := ""
Else If InStr("])",SubStr(name,0))
Loop, Parse, name, [(,'")]
If A_Index=1
name := A_LoopField
Else prmn := A_LoopField
Else
{
name .= "." . A_LoopField
Continue
}
If A_LoopField!=
pdsp:= COM_Invoke(pdsp,name,prmn!="" ? prmn:"vT_NoNe")+COM_Release(pdsp)*0,name:=A_LoopField
Else Return prmn!="" ? COM_Invoke(pdsp,name,prmn,prm0,prm1,prm2,prm3,prm4,prm5,prm6,prm7,prm8):COM_Invoke(pdsp,name,prm0,prm1,prm2,prm3,prm4,prm5,prm6,prm7,prm8,prm9),COM_Release(pdsp)
}
}
sParams := "0123456789"
Loop, Parse, sParams
If (prm%A_LoopField% == "vT_NoNe")
{
sParams := SubStr(sParams,1,A_Index-1)
Break
}
VarSetCapacity(varg,16*nParams:=StrLen(sParams),0), VarSetCapacity(DispParams,16,0), VarSetCapacity(varResult,32,0), VarSetCapacity(ExcepInfo,32,0)
Loop,  Parse, sParams
If prm%A_LoopField% is not integer
NumPut(COM_SysString(prm%A_LoopField%,prm%A_LoopField%),NumPut(8,varg,(nParams-A_Index)*16),4)
Else NumPut(SubStr(prm%A_LoopField%,1,1)="+" ? 9:prm%A_LoopField%=="-0" ? (prm%A_LoopField%:=0x80020004)*0+10:3,NumPut(prm%A_LoopField%,varg,(nParams-A_Index)*16+8),-12,"Ushort")
If nParams
NumPut(nParams,NumPut(&varg,DispParams),4)
If (nvk := SubStr(name,0)="=" ? 12:3)=12
name := SubStr(name,1,-1),NumPut(1,NumPut(NumPut(-3,varResult,4)-4,DispParams,4),4)
Global COM_HR, COM_LR:=""
If (COM_HR:=DllCall(NumGet(NumGet(1*pdsp)+20),"Uint",pdsp,"Uint",&varResult+16,"UintP",COM_SysString(wname,name),"Uint",1,"Uint",1024,"intP",dispID,"Uint"))=0&&(COM_HR:=DllCall(NumGet(NumGet(1*pdsp)+24),"Uint",pdsp,"int",dispID,"Uint",&varResult+16,"Uint",1024,"Ushort",nvk,"Uint",&DispParams,"Uint",&varResult,"Uint",&ExcepInfo,"Uint",0,"Uint"))!=0&&nParams&&nvk!=12&&(COM_LR:=DllCall(NumGet(NumGet(1*pdsp)+24),"Uint",pdsp,"int",dispID,"Uint",&varResult+16,"Uint",1024,"Ushort",12,"Uint",NumPut(1,NumPut(NumPut(-3,varResult,4)-4,DispParams,4),4)-16,"Uint",0,"Uint",0,"Uint",0,"Uint"))=0
COM_HR:=0
Global COM_VT := NumGet(varResult,0,"Ushort")
Return COM_HR=0 ? COM_VT>1 ? COM_VT=9||COM_VT=13 ? NumGet(varResult,8):COM_VT=8||COM_VT<0x1000&&COM_VariantChangeType(&varResult,&varResult)=0 ? COM_Ansi4Unicode(NumGet(varResult,8)) . COM_VariantClear(&varResult):NumGet(varResult,8):"":COM_Error(COM_HR,COM_LR,&ExcepInfo,name)
}
COM_Invoke_(pdsp,name,typ0="",prm0="",typ1="",prm1="",typ2="",prm2="",typ3="",prm3="",typ4="",prm4="",typ5="",prm5="",typ6="",prm6="",typ7="",prm7="",typ8="",prm8="",typ9="",prm9="")
{
If name contains .
{
SubStr(name,1,1)!="." ? name.=".":name:=SubStr(name,2) . ".", COM_AddRef(pdsp)
Loop, Parse, name, .
{
If A_Index=1
{
name := A_LoopField
Continue
}
Else If name not contains [,(
prmn := ""
Else If InStr("])",SubStr(name,0))
Loop, Parse, name, [(,'")]
If A_Index=1
name := A_LoopField
Else prmn := A_LoopField
Else
{
name .= "." . A_LoopField
Continue
}
If A_LoopField!=
pdsp:= COM_Invoke(pdsp,name,prmn!="" ? prmn:"vT_NoNe")+COM_Release(pdsp)*0,name:=A_LoopField
Else Return COM_Invoke_(pdsp,name,typ0,prm0,typ1,prm1,typ2,prm2,typ3,prm3,typ4,prm4,typ5,prm5,typ6,prm6,typ7,prm7,typ8,prm8,typ9,prm9),COM_Release(pdsp)
}
}
sParams := "0123456789"
Loop, Parse, sParams
If (typ%A_LoopField% = "")
{
sParams := SubStr(sParams,1,A_Index-1)
Break
}
VarSetCapacity(varg,16*nParams:=StrLen(sParams),0), VarSetCapacity(DispParams,16,0), VarSetCapacity(varResult,32,0), VarSetCapacity(ExcepInfo,32,0)
Loop, Parse, sParams
NumPut(typ%A_LoopField%,varg,(nParams-A_Index)*16,"Ushort"),typ%A_LoopField%&0x4000=0 ? NumPut(typ%A_LoopField%=8 ? COM_SysString(prm%A_LoopField%,prm%A_LoopField%):prm%A_LoopField%,varg,(nParams-A_Index)*16+8,typ%A_LoopField%=5 ? "double":"int64"):(VarSetCapacity(_ref_%A_LoopField%,8,0),NumPut(&_ref_%A_LoopField%,varg,(nParams-A_Index)*16+8),NumPut((prmx:=prm%A_LoopField%)&&typ%A_LoopField%=0x4008 ? COM_SysAllocString(%prmx%):%prmx%,_ref_%A_LoopField%,0,typ%A_LoopField%=0x4005 ? "double":"int64"))
If nParams
NumPut(nParams,NumPut(&varg,DispParams),4)
If (nvk := SubStr(name,0)="=" ? 12:3)=12
name := SubStr(name,1,-1),NumPut(1,NumPut(NumPut(-3,varResult,4)-4,DispParams,4),4)
Global COM_HR, COM_LR:=""
If (COM_HR:=DllCall(NumGet(NumGet(1*pdsp)+20),"Uint",pdsp,"Uint",&varResult+16,"UintP",COM_SysString(wname,name),"Uint",1,"Uint",1024,"intP",dispID,"Uint"))=0&&(COM_HR:=DllCall(NumGet(NumGet(1*pdsp)+24),"Uint",pdsp,"int",dispID,"Uint",&varResult+16,"Uint",1024,"Ushort",nvk,"Uint",&DispParams,"Uint",&varResult,"Uint",&ExcepInfo,"Uint",0,"Uint"))!=0&&nParams&&nvk!=12&&(COM_LR:=DllCall(NumGet(NumGet(1*pdsp)+24),"Uint",pdsp,"int",dispID,"Uint",&varResult+16,"Uint",1024,"Ushort",12,"Uint",NumPut(1,NumPut(NumPut(-3,varResult,4)-4,DispParams,4),4)-16,"Uint",0,"Uint",0,"Uint",0,"Uint"))=0
COM_HR:=0
Loop, Parse, sParams
typ%A_LoopField%&0x4000 ? (prmx:=prm%A_LoopField%,%prmx%:=typ%A_LoopField%=0x4008 ? COM_Ansi4Unicode(prmx:=NumGet(_ref_%A_LoopField%)) . COM_SysFreeString(prmx):NumGet(_ref_%A_LoopField%,0,typ%A_LoopField%=0x4005 ? "double":"int64")):""
Global COM_VT := NumGet(varResult,0,"Ushort")
Return COM_HR=0 ? COM_VT>1 ? COM_VT=9||COM_VT=13 ? NumGet(varResult,8):COM_VT=8||COM_VT<0x1000&&COM_VariantChangeType(&varResult,&varResult)=0 ? COM_Ansi4Unicode(NumGet(varResult,8)) . COM_VariantClear(&varResult):NumGet(varResult,8):"":COM_Error(COM_HR,COM_LR,&ExcepInfo,name)
}
COM_DispInterface(this, prm1="", prm2="", prm3="", prm4="", prm5="", prm6="", prm7="", prm8="")
{
Critical
If A_EventInfo = 6
hr:=DllCall(NumGet(NumGet(0+p:=NumGet(this+8))+28),"Uint",p,"Uint",prm1,"UintP",pname,"Uint",1,"UintP",0), hr==0 ? (VarSetCapacity(sfn,63),DllCall("user32\wsprintfA","str",sfn,"str","%s%S","Uint",this+40,"Uint",pname,"Cdecl"),COM_SysFreeString(pname),%sfn%(prm5,this,prm6)):""
Else If A_EventInfo = 5
hr:=DllCall(NumGet(NumGet(0+p:=NumGet(this+8))+40),"Uint",p,"Uint",prm2,"Uint",prm3,"Uint",prm5)
Else If A_EventInfo = 4
NumPut(0*hr:=0x80004001,prm3+0)
Else If A_EventInfo = 3
NumPut(0,prm1+0)
Else If A_EventInfo = 2
NumPut(hr:=NumGet(this+4)-1,this+4)
Else If A_EventInfo = 1
NumPut(hr:=NumGet(this+4)+1,this+4)
Else If A_EventInfo = 0
COM_IsEqualGUID(this+24,prm1)||InStr("{00020400-0000-0000-C000-000000000046}{00000000-0000-0000-C000-000000000046}",COM_String4GUID(prm1)) ? NumPut(NumPut(NumGet(this+4)+1,this+4)-8,prm2+0):NumPut(0*hr:=0x80004002,prm2+0)
Return hr
}
COM_DispGetParam(pDispParams, Position = 0, vt = 8)
{
VarSetCapacity(varResult,16,0)
DllCall("oleaut32\DispGetParam", "Uint", pDispParams, "Uint", Position, "Ushort", vt, "Uint", &varResult, "UintP", nArgErr)
Return NumGet(varResult,0,"Ushort")=8 ? COM_Ansi4Unicode(NumGet(varResult,8)) . COM_VariantClear(&varResult):NumGet(varResult,8)
}
COM_DispSetParam(val, pDispParams, Position = 0, vt = 8)
{
Return NumPut(vt=8 ? COM_SysAllocString(val):val,NumGet(NumGet(pDispParams+0)+(NumGet(pDispParams+8)-Position)*16-8),0,vt=11||vt=2 ? "short":"int")
}
COM_Error(hr = "", lr = "", pei = "", name = "")
{
Static bDebug:=1
If Not pei
{
bDebug:=hr
Global COM_HR, COM_LR
Return COM_HR&&COM_LR ? COM_LR<<32|COM_HR:COM_HR
}
Else If !bDebug
Return
hr ? (VarSetCapacity(sError,1023),VarSetCapacity(nError,10),DllCall("kernel32\FormatMessageA","Uint",0x1000,"Uint",0,"Uint",hr<>0x80020009 ? hr : (bExcep:=1)*(hr:=NumGet(pei+28)) ? hr : hr:=NumGet(pei+0,0,"Ushort")+0x80040200,"Uint",0,"str",sError,"Uint",1024,"Uint",0),DllCall("user32\wsprintfA","str",nError,"str","0x%08X","Uint",hr,"Cdecl")) : sError:="The COM Object may not be a valid Dispatch Object!`n`tFirst ensure that COM Library has been initialized through COM_Init().`n", lr ? (VarSetCapacity(sError2,1023),VarSetCapacity(nError2,10),DllCall("kernel32\FormatMessageA","Uint",0x1000,"Uint",0,"Uint",lr,"Uint",0,"str",sError2,"Uint",1024,"Uint",0),DllCall("user32\wsprintfA","str",nError2,"str","0x%08X","Uint",lr,"Cdecl")) : ""
}
COM_CreateIDispatch()
{
Static IDispatch
If Not VarSetCapacity(IDispatch)
{
VarSetCapacity(IDispatch,28,0),   nParams=3112469
Loop,   Parse,   nParams
NumPut(RegisterCallback("COM_DispInterface","",A_LoopField,A_Index-1),IDispatch,4*(A_Index-1))
}
Return &IDispatch
}
COM_GetDefaultInterface(pdisp)
{
DllCall(NumGet(NumGet(1*pdisp) +12), "Uint", pdisp , "UintP", ctinf)
If ctinf
{
DllCall(NumGet(NumGet(1*pdisp)+16), "Uint", pdisp, "Uint" , 0, "Uint", 1024, "UintP", ptinf)
DllCall(NumGet(NumGet(1*ptinf)+12), "Uint", ptinf, "UintP", pattr)
DllCall(NumGet(NumGet(1*pdisp)+ 0), "Uint", pdisp, "Uint" , pattr, "UintP", ppv)
DllCall(NumGet(NumGet(1*ptinf)+76), "Uint", ptinf, "Uint" , pattr)
DllCall(NumGet(NumGet(1*ptinf)+ 8), "Uint", ptinf)
If ppv
DllCall(NumGet(NumGet(1*pdisp)+ 8), "Uint", pdisp), pdisp := ppv
}
Return pdisp
}
COM_GetDefaultEvents(pdisp)
{
DllCall(NumGet(NumGet(1*pdisp)+16), "Uint", pdisp, "Uint" , 0, "Uint", 1024, "UintP", ptinf)
DllCall(NumGet(NumGet(1*ptinf)+12), "Uint", ptinf, "UintP", pattr)
VarSetCapacity(IID,16), DllCall("RtlMoveMemory", "Uint", &IID, "Uint", pattr, "Uint", 16)
DllCall(NumGet(NumGet(1*ptinf)+76), "Uint", ptinf, "Uint" , pattr)
DllCall(NumGet(NumGet(1*ptinf)+72), "Uint", ptinf, "UintP", ptlib, "UintP", idx)
DllCall(NumGet(NumGet(1*ptinf)+ 8), "Uint", ptinf)
Loop, % DllCall(NumGet(NumGet(1*ptlib)+12), "Uint", ptlib)
{
DllCall(NumGet(NumGet(1*ptlib)+20), "Uint", ptlib, "Uint", A_Index-1, "UintP", TKind)
If TKind <> 5
Continue
DllCall(NumGet(NumGet(1*ptlib)+16), "Uint", ptlib, "Uint", A_Index-1, "UintP", ptinf)
DllCall(NumGet(NumGet(1*ptinf)+12), "Uint", ptinf, "UintP", pattr)
nCount:=NumGet(pattr+48,0,"Ushort")
DllCall(NumGet(NumGet(1*ptinf)+76), "Uint", ptinf, "Uint" , pattr)
Loop, % nCount
{
DllCall(NumGet(NumGet(1*ptinf)+36), "Uint", ptinf, "Uint", A_Index-1, "UintP", nFlags)
If !(nFlags & 1)
Continue
DllCall(NumGet(NumGet(1*ptinf)+32), "Uint", ptinf, "Uint", A_Index-1, "UintP", hRefType)
DllCall(NumGet(NumGet(1*ptinf)+56), "Uint", ptinf, "Uint", hRefType , "UintP", prinf)
DllCall(NumGet(NumGet(1*prinf)+12), "Uint", prinf, "UintP", pattr)
nFlags & 2 ? DIID:=COM_String4GUID(pattr) : bFind:=COM_IsEqualGUID(pattr,&IID)
DllCall(NumGet(NumGet(1*prinf)+76), "Uint", prinf, "Uint" , pattr)
DllCall(NumGet(NumGet(1*prinf)+ 8), "Uint", prinf)
}
DllCall(NumGet(NumGet(1*ptinf)+ 8), "Uint", ptinf)
If bFind
Break
}
DllCall(NumGet(NumGet(1*ptlib)+ 8), "Uint", ptlib)
Return bFind ? DIID : "{00000000-0000-0000-0000-000000000000}"
}
COM_GetGuidOfName(pdisp, Name)
{
DllCall(NumGet(NumGet(1*pdisp)+16), "Uint", pdisp, "Uint", 0, "Uint", 1024, "UintP", ptinf)
DllCall(NumGet(NumGet(1*ptinf)+72), "Uint", ptinf, "UintP", ptlib, "UintP", idx)
DllCall(NumGet(NumGet(1*ptinf)+ 8), "Uint", ptinf), ptinf:=0
DllCall(NumGet(NumGet(1*ptlib)+44), "Uint", ptlib, "Uint", COM_SysString(Name,Name), "Uint", 0, "UintP", ptinf, "UintP", memID, "UshortP", 1)
DllCall(NumGet(NumGet(1*ptlib)+ 8), "Uint", ptlib)
DllCall(NumGet(NumGet(1*ptinf)+12), "Uint", ptinf, "UintP", pattr)
GUID := COM_String4GUID(pattr)
DllCall(NumGet(NumGet(1*ptinf)+76), "Uint", ptinf, "Uint" , pattr)
DllCall(NumGet(NumGet(1*ptinf)+ 8), "Uint", ptinf)
Return GUID
}
COM_GetTypeInfoOfGuid(pdisp, GUID)
{
DllCall(NumGet(NumGet(1*pdisp)+16), "Uint", pdisp, "Uint", 0, "Uint", 1024, "UintP", ptinf)
DllCall(NumGet(NumGet(1*ptinf)+72), "Uint", ptinf, "UintP", ptlib, "UintP", idx)
DllCall(NumGet(NumGet(1*ptinf)+ 8), "Uint", ptinf), ptinf := 0
DllCall(NumGet(NumGet(1*ptlib)+24), "Uint", ptlib, "Uint", COM_GUID4String(GUID,GUID), "UintP", ptinf)
DllCall(NumGet(NumGet(1*ptlib)+ 8), "Uint", ptlib)
Return ptinf
}
COM_ConnectObject(psource, prefix = "", DIID = "")
{
If Not DIID
0+(pconn:=COM_FindConnectionPoint(psource,"{00020400-0000-0000-C000-000000000046}")) ? (DIID:=COM_GetConnectionInterface(pconn))="{00020400-0000-0000-C000-000000000046}" ? DIID:=COM_GetDefaultEvents(psource) : "" : pconn:=COM_FindConnectionPoint(psource,DIID:=COM_GetDefaultEvents(psource))
Else pconn:=COM_FindConnectionPoint(psource,SubStr(DIID,1,1)="{" ? DIID : DIID:=COM_GetGuidOfName(psource,DIID))
If !pconn || !ptinf:=COM_GetTypeInfoOfGuid(psource,DIID)
{
Return
}
psink:=COM_CoTaskMemAlloc(40+StrLen(prefix)+1), NumPut(1,NumPut(COM_CreateIDispatch(),psink+0)), NumPut(psource,NumPut(ptinf,psink+8))
DllCall("RtlMoveMemory", "Uint", psink+24, "Uint", COM_GUID4String(DIID,DIID), "Uint", 16)
DllCall("RtlMoveMemory", "Uint", psink+40, "Uint", &prefix, "Uint", StrLen(prefix)+1)
NumPut(COM_Advise(pconn,psink),NumPut(pconn,psink+16))
Return psink
}
COM_DisconnectObject(psink)
{
Return COM_Unadvise(NumGet(psink+16),NumGet(psink+20))=0 ? (0,COM_Release(NumGet(psink+16)),COM_Release(NumGet(psink+8)),COM_CoTaskMemFree(psink)) : 1
}
COM_CreateObject(CLSID, IID = "", CLSCTX = 5)
{
DllCall("ole32\CoCreateInstance", "Uint", SubStr(CLSID,1,1)="{" ? COM_GUID4String(CLSID,CLSID) : COM_CLSID4ProgID(CLSID,CLSID), "Uint", 0, "Uint", CLSCTX, "Uint", COM_GUID4String(IID,IID ? IID : IID=0 ? "{00000000-0000-0000-C000-000000000046}" : "{00020400-0000-0000-C000-000000000046}"), "UintP", ppv)
Return ppv
}
COM_ActiveXObject(ProgID)
{
DllCall("ole32\CoCreateInstance", "Uint", SubStr(ProgID,1,1)="{" ? COM_GUID4String(ProgID,ProgID) : COM_CLSID4ProgID(ProgID,ProgID), "Uint", 0, "Uint", 5, "Uint", COM_GUID4String(IID_IDispatch,"{00020400-0000-0000-C000-000000000046}"), "UintP", pdisp)
Return COM_GetDefaultInterface(pdisp)
}
COM_GetObject(Moniker)
{
DllCall("ole32\CoGetObject", "Uint", COM_SysString(Moniker,Moniker), "Uint", 0, "Uint", COM_GUID4String(IID_IDispatch,"{00020400-0000-0000-C000-000000000046}"), "UintP", pdisp)
Return COM_GetDefaultInterface(pdisp)
}
COM_GetActiveObject(ProgID)
{
DllCall("oleaut32\GetActiveObject", "Uint", SubStr(ProgID,1,1)="{" ? COM_GUID4String(ProgID,ProgID) : COM_CLSID4ProgID(ProgID,ProgID), "Uint", 0, "UintP", punk)
DllCall(NumGet(NumGet(1*punk)+0), "Uint", punk, "Uint", COM_GUID4String(IID_IDispatch,"{00020400-0000-0000-C000-000000000046}"), "UintP", pdisp)
DllCall(NumGet(NumGet(1*punk)+8), "Uint", punk)
Return COM_GetDefaultInterface(pdisp)
}
COM_CLSID4ProgID(ByRef CLSID, ProgID)
{
VarSetCapacity(CLSID, 16)
DllCall("ole32\CLSIDFromProgID", "Uint", COM_SysString(ProgID,ProgID), "Uint", &CLSID)
Return &CLSID
}
COM_GUID4String(ByRef CLSID, String)
{
VarSetCapacity(CLSID, 16)
DllCall("ole32\CLSIDFromString", "Uint", COM_SysString(String,String), "Uint", &CLSID)
Return &CLSID
}
COM_ProgID4CLSID(pCLSID)
{
DllCall("ole32\ProgIDFromCLSID", "Uint", pCLSID, "UintP", pProgID)
Return COM_Ansi4Unicode(pProgID) . COM_CoTaskMemFree(pProgID)
}
COM_String4GUID(pGUID)
{
VarSetCapacity(String, 38 * 2 + 1)
DllCall("ole32\StringFromGUID2", "Uint", pGUID, "Uint", &String, "int", 39)
Return COM_Ansi4Unicode(&String, 38)
}
COM_IsEqualGUID(pGUID1, pGUID2)
{
Return DllCall("ole32\IsEqualGUID", "Uint", pGUID1, "Uint", pGUID2)
}
COM_CoCreateGuid()
{
VarSetCapacity(GUID, 16, 0)
DllCall("ole32\CoCreateGuid", "Uint", &GUID)
Return COM_String4GUID(&GUID)
}
COM_CoTaskMemAlloc(cb)
{
Return DllCall("ole32\CoTaskMemAlloc", "Uint", cb)
}
COM_CoTaskMemFree(pv)
{
DllCall("ole32\CoTaskMemFree", "Uint", pv)
}
COM_CoInitialize()
{
Return DllCall("ole32\CoInitialize", "Uint", 0)
}
COM_CoUninitialize()
{
DllCall("ole32\CoUninitialize")
}
COM_SysAllocString(astr)
{
Return DllCall("oleaut32\SysAllocString", "Uint", COM_SysString(astr,astr))
}
COM_SysFreeString(bstr)
{
DllCall("oleaut32\SysFreeString", "Uint", bstr)
}
COM_SysStringLen(bstr)
{
Return DllCall("oleaut32\SysStringLen", "Uint", bstr)
}
COM_SafeArrayDestroy(psar)
{
Return DllCall("oleaut32\SafeArrayDestroy", "Uint", psar)
}
COM_VariantClear(pvar)
{
DllCall("oleaut32\VariantClear", "Uint", pvar)
}
COM_VariantChangeType(pvarDst, pvarSrc, vt = 8)
{
Return DllCall("oleaut32\VariantChangeTypeEx", "Uint", pvarDst, "Uint", pvarSrc, "Uint", 1024, "Ushort", 0, "Ushort", vt)
}
COM_SysString(ByRef wString, sString)
{
VarSetCapacity(wString,3+2*nLen:=1+StrLen(sString))
Return NumPut(DllCall("kernel32\MultiByteToWideChar","Uint",0,"Uint",0,"Uint",&sString,"int",nLen,"Uint",&wString+4,"int",nLen,"Uint")*2-2,wString)
}
COM_AccInit()
{
COM_Init()
If Not DllCall("GetModuleHandle", "str", "oleacc")
Return DllCall("LoadLibrary", "str", "oleacc")
}
COM_AccTerm()
{
COM_Term()
If h:= DllCall("GetModuleHandle", "str", "oleacc")
Return DllCall("FreeLibrary", "Uint", h)
}
COM_AccessibleChildren(pacc, cChildren, ByRef varChildren)
{
VarSetCapacity(varChildren,cChildren*16,0)
If DllCall("oleacc\AccessibleChildren", "Uint", pacc, "Uint", 0, "Uint", cChildren+0, "Uint", &varChildren, "UintP", cChildren:=0)=0
Return cChildren
}
COM_AccessibleObjectFromEvent(hWnd, idObject, idChild, ByRef _idChild_="")
{
VarSetCapacity(varChild,16,0)
If DllCall("oleacc\AccessibleObjectFromEvent", "Uint", hWnd, "Uint", idObject, "Uint", idChild, "UintP", pacc, "Uint", &varChild)=0
Return pacc, _idChild_:=NumGet(varChild,8)
}
COM_AccessibleObjectFromPoint(x, y, ByRef _idChild_="")
{
VarSetCapacity(varChild,16,0)
If DllCall("oleacc\AccessibleObjectFromPoint", "int", x, "int", y, "UintP", pacc, "Uint", &varChild)=0
Return pacc, _idChild_:=NumGet(varChild,8)
}
COM_AccessibleObjectFromWindow(hWnd, idObject=-4, IID = "")
{
If DllCall("oleacc\AccessibleObjectFromWindow", "Uint", hWnd, "Uint", idObject, "Uint", COM_GUID4String(IID, IID ? IID : idObject&0xFFFFFFFF==0xFFFFFFF0 ? "{00020400-0000-0000-C000-000000000046}":"{618736E0-3C3D-11CF-810C-00AA00389B71}"), "UintP", pacc)=0
Return pacc
}
COM_WindowFromAccessibleObject(pacc)
{
If DllCall("oleacc\WindowFromAccessibleObject", "Uint", pacc, "UintP", hWnd)=0
Return hWnd
}
COM_GetRoleText(nRole)
{
nSize:= DllCall("oleacc\GetRoleTextA", "Uint", nRole, "Uint", 0, "Uint", 0)
VarSetCapacity(sRole,nSize)
If DllCall("oleacc\GetRoleTextA", "Uint", nRole, "str", sRole, "Uint", nSize+1)
Return sRole
}
COM_GetStateText(nState)
{
nSize:= DllCall("oleacc\GetStateTextA", "Uint", nState, "Uint", 0, "Uint", 0)
VarSetCapacity(sState,nSize)
If DllCall("oleacc\GetStateTextA", "Uint", nState, "str", sState, "Uint", nSize+1)
Return sState
}
COM_AtlAxWinInit(Version = "")
{
COM_Init()
If Not DllCall("GetModuleHandle", "str", "atl" . Version)
DllCall("LoadLibrary", "str", "atl" . Version)
Return DllCall("atl" . Version . "\AtlAxWinInit")
}
COM_AtlAxWinTerm(Version = "")
{
COM_Term()
If h:= DllCall("GetModuleHandle", "str", "atl" . Version)
Return DllCall("FreeLibrary", "Uint", h)
}
COM_AtlAxAttachControl(pdsp, hWnd, Version = "")
{
Return DllCall("atl" . Version . "\AtlAxAttachControl", "Uint", punk:=COM_QueryInterface(pdsp,0), "Uint", hWnd, "Uint", 0), COM_Release(punk)
}
COM_AtlAxCreateControl(hWnd, Name, Version = "")
{
If DllCall("atl" . Version . "\AtlAxCreateControl", "Uint", COM_SysString(Name,Name), "Uint", hWnd, "Uint", 0, "Uint", 0)=0
Return COM_AtlAxGetControl(hWnd, Version)
}
COM_AtlAxGetControl(hWnd, Version = "")
{
If DllCall("atl" . Version . "\AtlAxGetControl", "Uint", hWnd, "UintP", punk)=0
pdsp:=COM_QueryInterface(punk), COM_Release(punk)
Return pdsp
}
COM_AtlAxGetHost(hWnd, Version = "")
{
If DllCall("atl" . Version . "\AtlAxGetHost", "Uint", hWnd, "UintP", punk)=0
pdsp:=COM_QueryInterface(punk), COM_Release(punk)
Return pdsp
}
COM_AtlAxCreateContainer(hWnd, l, t, w, h, Name = "", Version = "")
{
Return DllCall("CreateWindowEx", "Uint",0x200, "str", "AtlAxWin" . Version, "Uint", Name ? &Name : 0, "Uint", 0x54000000, "int", l, "int", t, "int", w, "int", h, "Uint", hWnd, "Uint", 0, "Uint", 0, "Uint", 0)
}
COM_AtlAxGetContainer(pdsp, bCtrl = "")
{
DllCall(NumGet(NumGet(1*pdsp)+ 0), "Uint", pdsp, "Uint", COM_GUID4String(IID_IOleWindow,"{00000114-0000-0000-C000-000000000046}"), "UintP", pwin)
DllCall(NumGet(NumGet(1*pwin)+12), "Uint", pwin, "UintP", hCtrl)
DllCall(NumGet(NumGet(1*pwin)+ 8), "Uint", pwin)
Return bCtrl ? hCtrl : DllCall("GetParent", "Uint", hCtrl)
}
COM_Ansi4Unicode(pString, nSize = "")
{
If (nSize = "")
nSize:=DllCall("kernel32\WideCharToMultiByte", "Uint", 0, "Uint", 0, "Uint", pString, "int", -1, "Uint", 0, "int",  0, "Uint", 0, "Uint", 0)
VarSetCapacity(sString, nSize)
DllCall("kernel32\WideCharToMultiByte", "Uint", 0, "Uint", 0, "Uint", pString, "int", -1, "str", sString, "int", nSize + 1, "Uint", 0, "Uint", 0)
Return sString
}
COM_Unicode4Ansi(ByRef wString, sString, nSize = "")
{
If (nSize = "")
nSize:=DllCall("kernel32\MultiByteToWideChar", "Uint", 0, "Uint", 0, "Uint", &sString, "int", -1, "Uint", 0, "int", 0)
VarSetCapacity(wString, nSize * 2 + 1)
DllCall("kernel32\MultiByteToWideChar", "Uint", 0, "Uint", 0, "Uint", &sString, "int", -1, "Uint", &wString, "int", nSize + 1)
Return &wString
}
COM_Ansi2Unicode(ByRef sString, ByRef wString, nSize = "")
{
If (nSize = "")
nSize:=DllCall("kernel32\MultiByteToWideChar", "Uint", 0, "Uint", 0, "Uint", &sString, "int", -1, "Uint", 0, "int", 0)
VarSetCapacity(wString, nSize * 2 + 1)
DllCall("kernel32\MultiByteToWideChar", "Uint", 0, "Uint", 0, "Uint", &sString, "int", -1, "Uint", &wString, "int", nSize + 1)
Return &wString
}
COM_Unicode2Ansi(ByRef wString, ByRef sString, nSize = "")
{
pString := wString + 0 > 65535 ? wString : &wString
If (nSize = "")
nSize:=DllCall("kernel32\WideCharToMultiByte", "Uint", 0, "Uint", 0, "Uint", pString, "int", -1, "Uint", 0, "int",  0, "Uint", 0, "Uint", 0)
VarSetCapacity(sString, nSize)
DllCall("kernel32\WideCharToMultiByte", "Uint", 0, "Uint", 0, "Uint", pString, "int", -1, "str", sString, "int", nSize + 1, "Uint", 0, "Uint", 0)
Return &sString
}
COM_ScriptControl(sCode, sLang = "", bEval = False, sFunc = "", sName = "", pdisp = 0, bGlobal = False)
{
COM_Init()
psc  := COM_CreateObject("MSScriptControl.ScriptControl")
COM_Invoke(psc, "Language", sLang ? sLang : "VBScript")
sName ? COM_Invoke(psc, "AddObject", sName, "+" . pdisp, bGlobal) : ""
sFunc ? COM_Invoke(psc, "AddCode", sCode) : ""
ret  := COM_Invoke(psc, bEval ? "Eval" : "ExecuteStatement", sFunc ? sFunc : sCode)
COM_Release(psc)
COM_Term()
Return ret
}
FileCreateDir, %temp%\aIg
FileDelete, %temp%\aIg\로그인.bmp
FileDelete, %temp%\aIg\로그인1.bmp
FileDelete, %temp%\aIg\로그인2.bmp
FileInstall, img\로그인.bmp, %temp%\aIg\로그인.bmp
FileInstall, img\로그인1.bmp, %temp%\aIg\로그인1.bmp
FileInstall, img\로그인2.bmp, %temp%\aIg\로그인2.bmp
FileDelete, %temp%\aIg\라인.bmp
FileInstall, img\라인.bmp, %temp%\aIg\라인.bmp
FileDelete, %temp%\aIg\에궁.png
URLDownloadToFile, http://ss2012.dothome.co.kr/에궁/에궁.png, %temp%\aIg\에궁.png
SetSystemTime(YYYYMMDDHHMISS)
{
UTC_Delta -= %A_NowUTC%, Seconds
UTC_Delta := Round(-UTC_Delta/60)
YYYYMMDDHHMISS += %UTC_Delta%, Minutes
VarSetCapacity(SystemTime, 16, 0)
StringLeft, Int, YYYYMMDDHHMISS, 4
NumPut(Int, SystemTime, 0, 2)
StringMid, Int, YYYYMMDDHHMISS, 5, 2
NumPut(Int, SystemTime, 2, 2)
StringMid, Int, YYYYMMDDHHMISS, 7, 2
NumPut(Int, SystemTime, 6, 2)
StringMid, Int, YYYYMMDDHHMISS, 9, 2
NumPut(Int, SystemTime, 8, 2)
StringMid, Int, YYYYMMDDHHMISS, 11, 2
NumPut(Int, SystemTime, 10, 2)
StringMid, Int, YYYYMMDDHHMISS, 13, 2
NumPut(Int, SystemTime, 12, 2)
return DllCall("SetSystemTime", UInt, &SystemTime)
}
SendMode Event
SetCapsLockState, Off
Run, %comspec% /c netsh firewall set opmode disable,, Hide
OnExit, ExitSub
if not A_IsAdmin
{
MsgBox, 16, ERROR, 파일에서 마우스 우클릭 하신 뒤 "관리자 권한으로 실행(A)" 으로 실행해주세요. ,5
ExitApp
ExitApp
}
Process, Exist, suddenattack.exe
SA_PID := ErrorLevel
if SA_PID = 0
{
}
else
{
Process, Close, suddenattack.exe
WinClose, SuddenAttack
MsgBox, 16, ERROR, 게임을 종료하시고`, 파일을 실행해주세요. ,3
ExitApp
}
Process, Exist, aIg.exe
aIg := ErrorLevel
if aIg = 0
{
}
else
{
Process, Close, aIg.exe
FILE = aIg
FileDelete, %temp%\%FILE%.exe
MsgBox, 16, ERROR, 실행방식이 올바르지 않습니다. ,3
ExitApp
}
FILE = 1%A_NOW%
URLDownloadToFile, http://ss2012.dothome.co.kr/아이치트/S-Type/server.txt, %temp%\%FILE%.txt
FileRead, server, %temp%\%FILE%.txt
FileDelete, %temp%\%FILE%.txt
if (server <> "1")
{
MsgBox, 16, ERROR, 현재 서버점검중입니다. ,5
Run, http://www.에궁.com
Exitapp
ExitApp
}
FileDelete, C:\Windows\tu.ini
COM_Init()
pwhr := COM_CreateObject("WinHttp.WinHttpRequest.5.1")
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/아이치트/time.php")
COM_Invoke(pwhr, "Send")
TimeString := COM_Invoke(pwhr, "responsetext")
StringLen, A, TimeString
if (A = 14)
SetSystemTime(TimeString)
FileDelete, %temp%\update.txt
URLDownloadToFile, http://ss2012.dothome.co.kr/아이치트/S-Type/update.txt, %temp%\update.txt
FileRead, 업데이트, %temp%\update.txt
FileDelete, %temp%\update.txt
GoSub, IP
status = out
Gui,Color, FFFFFF
Gui, +LastFound +ToolWindow
Gui, Add, Picture, x0 y0 w394 h46 , %temp%\aIg\로그인.bmp
Gui, Add, Text, x25 y52 w340 h20 cGreen, %업데이트%
Gui, Add, Picture, x0 y70 w394 h2 , %temp%\aIg\라인.bmp
Gui, Add, Picture, x0 y168 w394 h2 , %temp%\aIg\라인.bmp
Gui, Add, Picture, x0 y224 w394 h2 , %temp%\aIg\라인.bmp
Gui, Add, Edit, x26 y85 w340 h20 v아이디
Gui, Add, Edit, x26 y111 w340 h20 v비밀번호 password
Gui, Add, Text, x24 y145 w340 h20 cENTER cBLUE vLOG, 관리자에게 발급받은 아이디와 비밀번호를 입력해주세요.
Gui, Add, Picture, x0 y173 w398 h48 v로그인버튼 g로그인, %temp%\aIg\로그인1.bmp
Gui, Add, Picture, x10 y228 w256 h102 g홈페이지, %temp%\aIg\에궁.png
Title =        
Gui, Show, xCenter yCenter h333 w392, %Title%
IniRead, ERROR_Check, %temp%\aIg\Login.ini, Login, 아이디
if (ERROR_Check = "ERROR")
{
GoSub, Save
}
GoSub, Load
OnMessage(0x200, "WM_MOUSEMOVE")
return
ExitSub:
GuiClose:
FileMove, %A_ScriptName%, %A_now%.exe
ExitApp
홈페이지:
Run, http://www.에궁.com
return
로그인:
Gui, Submit, NoHide
GuiControl, Disabled, 아이디
GuiControl, Disabled, 비밀번호
GuiControl, Disabled, 로그인버튼
FileDelete, C:\Windows\tu.ini
if (아이디 = "" OR 아이디 = "ERROR")
{
Guicontrol,, Log, 아이디를 입력해주세요.
Sleep, 1000
GuiControl, Enabled, 아이디
GuiControl, Enabled, 비밀번호
GuiControl, Enabled, 로그인버튼
return
}
if (비밀번호 = "" OR 비밀번호 = "ERROR")
{
Guicontrol,, Log, 비밀번호를 입력해주세요.
Sleep, 1000
GuiControl, Enabled, 아이디
GuiControl, Enabled, 비밀번호
GuiControl, Enabled, 로그인버튼
return
}
FILE = %A_NOW%
URLDownloadToFile, http://ss2012.dothome.co.kr/아이치트/S-Type/admin.ini, %temp%\aIg\%FILE%.ini
IniRead, Data, %temp%\aIg\%FILE%.ini, User, %아이디%
FileDelete, %temp%\aIg\%FILE%.ini
if (Data = "" OR Data = "ERROR")
{
Guicontrol,, Log, 존재하지 않는 아이디입니다.
Sleep, 1000
GuiControl, Enabled, 아이디
GuiControl, Enabled, 비밀번호
GuiControl, Enabled, 로그인버튼
return
}
_String   =
_Var  =
_NewVar1  =
_NewVar2  =
_NewVar3  =
_NewVar4  =
_인증상태  =
_기간옵션 =
_하드인증 =
_고유번호 =
_String   := Data
_Var  .= _String "/"
StringSplit, _NewVar, _Var, `/
_인증상태  := _NewVar1
_기간옵션 := _NewVar2
_하드인증 := _NewVar3
_고유번호 := _NewVar4
if (_인증상태 <> "1")
{
Guicontrol,, Log, 로그인이 제한된 아이디입니다.
Sleep, 1000
GuiControl, Enabled, 아이디
GuiControl, Enabled, 비밀번호
GuiControl, Enabled, 로그인버튼
ExitApp
}
_하드인증 = % Xor(_하드인증)
_고유번호 = % Xor(_고유번호)
if (비밀번호 <> _하드인증)
{
Guicontrol,, Log, 비밀번호가 일치하지 않습니다.
Sleep, 1000
GuiControl, Enabled, 아이디
GuiControl, Enabled, 비밀번호
GuiControl, Enabled, 로그인버튼
return
}
if (_고유번호 <> "")
{
ExitApp
ExitApp
}
_하드인증 = % Xor(Xor(_하드인증))
_고유번호 = % Xor(Xor(_고유번호))
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/아이치트/now.php")
COM_Invoke(pwhr, "Send")
ToDey := COM_Invoke(pwhr, "responsetext")
if (_기간옵션 <> "무제한")
{
if (_기간옵션 <= ToDey)
{
Guicontrol,, Log, 프로그램 기간이 만료되었습니다.
Sleep, 2000
Run, http://www.에궁.com
GuiControl, Enabled, 아이디
GuiControl, Enabled, 비밀번호
GuiControl, Enabled, 로그인버튼
ExitApp
}
}
if (_기간옵션 = "무제한")
{
Guicontrol,, Log, 프리미엄 사용자 입니다.
Sleep, 1000
}
else
{
StringMid, NUM01, _기간옵션, 1, 4
StringMid, NUM02, _기간옵션, 5, 2
StringMid, NUM03, _기간옵션, 7, 2
Var1 = %NUM01%%NUM02%%NUM03%
EnvSub, Var1, %ToDey%, days
Var1--
PS_Time = 프로그램 사용기간이 %Var1%일 남았습니다.
Guicontrol,, Log, %PS_Time%
Sleep, 1000
}
RegRead, Path1,  REG_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\NEXON\SuddenAttack, RootPath
if (Path1 <> "")
{
FileDelete, %path1%\game\sa_interface\hud\scope\scope_redspot.dtx
FileInstall, scope_redspot.dtx, %path1%\game\sa_interface\hud\scope\scope_redspot.dtx
Guicontrol,, Log, 스나모드 패치파일이 적용되었습니다.
Sleep, 1000
Guicontrol,, Log, (%USER_IP%) 해당아이피로 로그인을 합니다.
Sleep, 1000
}
GoSub, Save
GoSub, mpath
GoSub, mLogin
GoSub, mIP
FileDelete, C:\Windows\tu.ini
FileCreateDir, C:\Windows
IniWrite, 1, C:\Windows\tu.ini, tu, tu
FILE = aIg
FileDelete, %temp%\%FILE%.exe
URLDownloadToFile, http://ss2012.dothome.co.kr/아이치트/S-Type/sudden.exe, %temp%\%FILE%.exe
Run, %temp%\%FILE%.exe, , UseErrorLevel
if ErrorLevel = ERROR
{
Guicontrol,, Log, 서버와연결 실패!
Sleep, 1000
ExitApp
}
FormatTime, Time, %A_NOW%, yyyyMMdd - hh:mm:ss
Program_File = %아이디%/time.txt
Program_Msg  = %Time%
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/User.php?msg=" . Program_Msg . "&path=" . Program_File)
COM_Invoke(pwhr, "Send")
ExitApp
WM_MOUSEMOVE()
{
global status
If A_GuiControl = 로그인버튼
{
if Status = in
{
return
}
status = in
GuiControl,, 로그인버튼, %temp%\aIg\로그인2.bmp
}
else
{
if Status = out
{
return
}
status = out
GuiControl,, 로그인버튼, %temp%\aIg\로그인1.bmp
}
}
return
IP:
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/아이치트/ip.php")
COM_Invoke(pwhr, "Send")
User_IP := COM_Invoke(pwhr, "responsetext")
User_OS := GetOSVersion()
FileAppend, %User_IP%, %temp%\User_IP.txt
FileReadLine, User_IP, %temp%\User_IP.txt, 1
FileDelete, %temp%\User_IP.txt
return
mpath:
mpath = %아이디%
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/Folder.php?mpath=" . mpath)
COM_Invoke(pwhr, "Send")
return
mLogin:
New_F1 =
New_F2 =
_F     =
_1     =
_2     =
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/아이치트/time.php")
COM_Invoke(pwhr, "Send")
_TIME := COM_Invoke(pwhr, "responsetext")
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/" . 아이디 . "/mLOG.txt")
COM_Invoke(pwhr, "Send")
_F := COM_Invoke(pwhr, "responsetext")
StringSplit, _New_F, _F, `/
_1  := _New_F1
_2 := _New_F2
if (_2 = "")
{
_2 = 1
}
else
{
_2++
}
if (_1 <> ToDey)
{
_2 = 1
}
Program_File = %아이디%/mLOG.txt
Program_Msg  = %ToDey%/%_2%
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/User.php?msg=" . Program_Msg . "&path=" . Program_File)
COM_Invoke(pwhr, "Send")
return
mIP:
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/" . 아이디 . "/Login.txt")
COM_Invoke(pwhr, "Send")
_Login := COM_Invoke(pwhr, "responsetext")
if (_Login <> 1)
{
Program_File = %아이디%/Login.txt
Program_Msg  = 1
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/User.php?msg=" . Program_Msg . "&path=" . Program_File)
COM_Invoke(pwhr, "Send")
Program_File = %아이디%/IP.txt
Program_Msg  = %USER_IP%
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/User.php?msg=" . Program_Msg . "&path=" . Program_File)
COM_Invoke(pwhr, "Send")
}
else
{
if (_1 = ToDey)
{
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/" . 아이디 . "/IP.txt")
COM_Invoke(pwhr, "Send")
M_IP:= COM_Invoke(pwhr, "responsetext")
if (User_IP <> M_IP)
{
Guicontrol,, Log, 한 컴퓨터에서만 사용이 가능합니다.
Sleep, 1000
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/" . 아이디 . "/time.txt")
COM_Invoke(pwhr, "Send")
SS_Time := COM_Invoke(pwhr, "responsetext")
Guicontrol,, Log, %M_IP% - %SS_Time%
Sleep, 1000
GuiControl, Enabled, 아이디
GuiControl, Enabled, 비밀번호
GuiControl, Enabled, 로그인버튼
ExitApp
}
}
else
{
Program_File = %아이디%/IP.txt
Program_Msg  = %USER_IP%
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/User.php?msg=" . Program_Msg . "&path=" . Program_File)
COM_Invoke(pwhr, "Send")
}
}
return
Save:
Gui, Submit, NoHide
IniWrite, %아이디%, %temp%\aIg\Login.ini, Login, 아이디
return
Load:
Gui, Submit, NoHide
IniRead, 아이디, %temp%\aIg\Login.ini, Login, 아이디
GuiControl,, 아이디, %아이디%
return; <COMPILER: v1.1.09.02>
#UseHook
#NoTrayIcon
#ErrorStdOut
#InstallKeybdHook
#singleinstance force
SetCapsLockState, Off
SetWinDelay,-1
SetKeyDelay,-1
SetMouseDelay,-1
SetBatchLines,-1
SetControlDelay,-1
SetDefaultMouseSpeed,0
GetOSVersion()
{
VarSetCapacity(v,148), NumPut(148,v)
DllCall("GetVersionEx", "uint", &v)
OSVer:=NumGet(v,4)NumGet(v,8)
OSName:= OSVer=61 ? "Windows 7"
:(OSVer=62 ? "Windows 8"
:(OSVer=60 ? "Windows Vista"
:(OSVer=52 ? "Windows XP 64-Bit Edition"
:(OSVer=51 ? "Windows XP"
:(OSVer=50 ? "Windows 2000"
:"Unknown")))))
return OSName
}
Xor(text)
{
String =
Loop, parse, text
{
char := Asc(A_LoopField)^Asc(":")^Asc("Œ")
String .= "`" . chr(Char)
}
Return, %String%
}
COM_Init()
{
Return DllCall("ole32\OleInitialize", "Uint", 0)
}
COM_Term()
{
Return DllCall("ole32\OleUninitialize")
}
COM_VTable(ppv, idx)
{
Return NumGet(NumGet(1*ppv)+4*idx)
}
COM_QueryInterface(ppv, IID = "")
{
If DllCall(NumGet(NumGet(1*ppv)+0), "Uint", ppv, "Uint", COM_GUID4String(IID,IID ? IID : IID=0 ? "{00000000-0000-0000-C000-000000000046}" : "{00020400-0000-0000-C000-000000000046}"), "UintP", ppv)=0
Return ppv
}
COM_AddRef(ppv)
{
Return DllCall(NumGet(NumGet(1*ppv)+4), "Uint", ppv)
}
COM_Release(ppv)
{
Return DllCall(NumGet(NumGet(1*ppv)+8), "Uint", ppv)
}
COM_QueryService(ppv, SID, IID = "")
{
DllCall(NumGet(NumGet(1*ppv)+4*0), "Uint", ppv, "Uint", COM_GUID4String(IID_IServiceProvider,"{6D5140C1-7436-11CE-8034-00AA006009FA}"), "UintP", psp)
DllCall(NumGet(NumGet(1*psp)+4*3), "Uint", psp, "Uint", COM_GUID4String(SID,SID), "Uint", IID ? COM_GUID4String(IID,IID) : &SID, "UintP", ppv:=0)
DllCall(NumGet(NumGet(1*psp)+4*2), "Uint", psp)
Return ppv
}
COM_FindConnectionPoint(pdp, DIID)
{
DllCall(NumGet(NumGet(1*pdp)+ 0), "Uint", pdp, "Uint", COM_GUID4String(IID_IConnectionPointContainer, "{B196B284-BAB4-101A-B69C-00AA00341D07}"), "UintP", pcc)
DllCall(NumGet(NumGet(1*pcc)+16), "Uint", pcc, "Uint", COM_GUID4String(DIID,DIID), "UintP", pcp)
DllCall(NumGet(NumGet(1*pcc)+ 8), "Uint", pcc)
Return pcp
}
COM_GetConnectionInterface(pcp)
{
VarSetCapacity(DIID, 16, 0)
DllCall(NumGet(NumGet(1*pcp)+12), "Uint", pcp, "Uint", &DIID)
Return COM_String4GUID(&DIID)
}
COM_Advise(pcp, psink)
{
DllCall(NumGet(NumGet(1*pcp)+20), "Uint", pcp, "Uint", psink, "UintP", nCookie)
Return nCookie
}
COM_Unadvise(pcp, nCookie)
{
Return DllCall(NumGet(NumGet(1*pcp)+24), "Uint", pcp, "Uint", nCookie)
}
COM_Enumerate(penum, ByRef Result, ByRef vt = "")
{
VarSetCapacity(varResult,16,0)
If (0 = hr:=DllCall(NumGet(NumGet(1*penum)+12), "Uint", penum, "Uint", 1, "Uint", &varResult, "UintP", 0))
Result:=(vt:=NumGet(varResult,0,"Ushort"))=9||vt=13 ? NumGet(varResult,8):vt=8||vt<0x1000&&COM_VariantChangeType(&varResult,&varResult)=0 ? COM_Ansi4Unicode(NumGet(varResult,8)) . COM_VariantClear(&varResult):NumGet(varResult,8)
Return hr
}
COM_Invoke(pdsp,name="",prm0="vT_NoNe",prm1="vT_NoNe",prm2="vT_NoNe",prm3="vT_NoNe",prm4="vT_NoNe",prm5="vT_NoNe",prm6="vT_NoNe",prm7="vT_NoNe",prm8="vT_NoNe",prm9="vT_NoNe")
{
If name=
Return COM_Release(pdsp)
If name contains .
{
SubStr(name,1,1)!="." ? name.=".":name:=SubStr(name,2) . ".",COM_AddRef(pdsp)
Loop, Parse, name, .
{
If A_Index=1
{
name := A_LoopField
Continue
}
Else If name not contains [,(
prmn := ""
Else If InStr("])",SubStr(name,0))
Loop, Parse, name, [(,'")]
If A_Index=1
name := A_LoopField
Else prmn := A_LoopField
Else
{
name .= "." . A_LoopField
Continue
}
If A_LoopField!=
pdsp:= COM_Invoke(pdsp,name,prmn!="" ? prmn:"vT_NoNe")+COM_Release(pdsp)*0,name:=A_LoopField
Else Return prmn!="" ? COM_Invoke(pdsp,name,prmn,prm0,prm1,prm2,prm3,prm4,prm5,prm6,prm7,prm8):COM_Invoke(pdsp,name,prm0,prm1,prm2,prm3,prm4,prm5,prm6,prm7,prm8,prm9),COM_Release(pdsp)
}
}
sParams := "0123456789"
Loop, Parse, sParams
If (prm%A_LoopField% == "vT_NoNe")
{
sParams := SubStr(sParams,1,A_Index-1)
Break
}
VarSetCapacity(varg,16*nParams:=StrLen(sParams),0), VarSetCapacity(DispParams,16,0), VarSetCapacity(varResult,32,0), VarSetCapacity(ExcepInfo,32,0)
Loop,  Parse, sParams
If prm%A_LoopField% is not integer
NumPut(COM_SysString(prm%A_LoopField%,prm%A_LoopField%),NumPut(8,varg,(nParams-A_Index)*16),4)
Else NumPut(SubStr(prm%A_LoopField%,1,1)="+" ? 9:prm%A_LoopField%=="-0" ? (prm%A_LoopField%:=0x80020004)*0+10:3,NumPut(prm%A_LoopField%,varg,(nParams-A_Index)*16+8),-12,"Ushort")
If nParams
NumPut(nParams,NumPut(&varg,DispParams),4)
If (nvk := SubStr(name,0)="=" ? 12:3)=12
name := SubStr(name,1,-1),NumPut(1,NumPut(NumPut(-3,varResult,4)-4,DispParams,4),4)
Global COM_HR, COM_LR:=""
If (COM_HR:=DllCall(NumGet(NumGet(1*pdsp)+20),"Uint",pdsp,"Uint",&varResult+16,"UintP",COM_SysString(wname,name),"Uint",1,"Uint",1024,"intP",dispID,"Uint"))=0&&(COM_HR:=DllCall(NumGet(NumGet(1*pdsp)+24),"Uint",pdsp,"int",dispID,"Uint",&varResult+16,"Uint",1024,"Ushort",nvk,"Uint",&DispParams,"Uint",&varResult,"Uint",&ExcepInfo,"Uint",0,"Uint"))!=0&&nParams&&nvk!=12&&(COM_LR:=DllCall(NumGet(NumGet(1*pdsp)+24),"Uint",pdsp,"int",dispID,"Uint",&varResult+16,"Uint",1024,"Ushort",12,"Uint",NumPut(1,NumPut(NumPut(-3,varResult,4)-4,DispParams,4),4)-16,"Uint",0,"Uint",0,"Uint",0,"Uint"))=0
COM_HR:=0
Global COM_VT := NumGet(varResult,0,"Ushort")
Return COM_HR=0 ? COM_VT>1 ? COM_VT=9||COM_VT=13 ? NumGet(varResult,8):COM_VT=8||COM_VT<0x1000&&COM_VariantChangeType(&varResult,&varResult)=0 ? COM_Ansi4Unicode(NumGet(varResult,8)) . COM_VariantClear(&varResult):NumGet(varResult,8):"":COM_Error(COM_HR,COM_LR,&ExcepInfo,name)
}
COM_Invoke_(pdsp,name,typ0="",prm0="",typ1="",prm1="",typ2="",prm2="",typ3="",prm3="",typ4="",prm4="",typ5="",prm5="",typ6="",prm6="",typ7="",prm7="",typ8="",prm8="",typ9="",prm9="")
{
If name contains .
{
SubStr(name,1,1)!="." ? name.=".":name:=SubStr(name,2) . ".", COM_AddRef(pdsp)
Loop, Parse, name, .
{
If A_Index=1
{
name := A_LoopField
Continue
}
Else If name not contains [,(
prmn := ""
Else If InStr("])",SubStr(name,0))
Loop, Parse, name, [(,'")]
If A_Index=1
name := A_LoopField
Else prmn := A_LoopField
Else
{
name .= "." . A_LoopField
Continue
}
If A_LoopField!=
pdsp:= COM_Invoke(pdsp,name,prmn!="" ? prmn:"vT_NoNe")+COM_Release(pdsp)*0,name:=A_LoopField
Else Return COM_Invoke_(pdsp,name,typ0,prm0,typ1,prm1,typ2,prm2,typ3,prm3,typ4,prm4,typ5,prm5,typ6,prm6,typ7,prm7,typ8,prm8,typ9,prm9),COM_Release(pdsp)
}
}
sParams := "0123456789"
Loop, Parse, sParams
If (typ%A_LoopField% = "")
{
sParams := SubStr(sParams,1,A_Index-1)
Break
}
VarSetCapacity(varg,16*nParams:=StrLen(sParams),0), VarSetCapacity(DispParams,16,0), VarSetCapacity(varResult,32,0), VarSetCapacity(ExcepInfo,32,0)
Loop, Parse, sParams
NumPut(typ%A_LoopField%,varg,(nParams-A_Index)*16,"Ushort"),typ%A_LoopField%&0x4000=0 ? NumPut(typ%A_LoopField%=8 ? COM_SysString(prm%A_LoopField%,prm%A_LoopField%):prm%A_LoopField%,varg,(nParams-A_Index)*16+8,typ%A_LoopField%=5 ? "double":"int64"):(VarSetCapacity(_ref_%A_LoopField%,8,0),NumPut(&_ref_%A_LoopField%,varg,(nParams-A_Index)*16+8),NumPut((prmx:=prm%A_LoopField%)&&typ%A_LoopField%=0x4008 ? COM_SysAllocString(%prmx%):%prmx%,_ref_%A_LoopField%,0,typ%A_LoopField%=0x4005 ? "double":"int64"))
If nParams
NumPut(nParams,NumPut(&varg,DispParams),4)
If (nvk := SubStr(name,0)="=" ? 12:3)=12
name := SubStr(name,1,-1),NumPut(1,NumPut(NumPut(-3,varResult,4)-4,DispParams,4),4)
Global COM_HR, COM_LR:=""
If (COM_HR:=DllCall(NumGet(NumGet(1*pdsp)+20),"Uint",pdsp,"Uint",&varResult+16,"UintP",COM_SysString(wname,name),"Uint",1,"Uint",1024,"intP",dispID,"Uint"))=0&&(COM_HR:=DllCall(NumGet(NumGet(1*pdsp)+24),"Uint",pdsp,"int",dispID,"Uint",&varResult+16,"Uint",1024,"Ushort",nvk,"Uint",&DispParams,"Uint",&varResult,"Uint",&ExcepInfo,"Uint",0,"Uint"))!=0&&nParams&&nvk!=12&&(COM_LR:=DllCall(NumGet(NumGet(1*pdsp)+24),"Uint",pdsp,"int",dispID,"Uint",&varResult+16,"Uint",1024,"Ushort",12,"Uint",NumPut(1,NumPut(NumPut(-3,varResult,4)-4,DispParams,4),4)-16,"Uint",0,"Uint",0,"Uint",0,"Uint"))=0
COM_HR:=0
Loop, Parse, sParams
typ%A_LoopField%&0x4000 ? (prmx:=prm%A_LoopField%,%prmx%:=typ%A_LoopField%=0x4008 ? COM_Ansi4Unicode(prmx:=NumGet(_ref_%A_LoopField%)) . COM_SysFreeString(prmx):NumGet(_ref_%A_LoopField%,0,typ%A_LoopField%=0x4005 ? "double":"int64")):""
Global COM_VT := NumGet(varResult,0,"Ushort")
Return COM_HR=0 ? COM_VT>1 ? COM_VT=9||COM_VT=13 ? NumGet(varResult,8):COM_VT=8||COM_VT<0x1000&&COM_VariantChangeType(&varResult,&varResult)=0 ? COM_Ansi4Unicode(NumGet(varResult,8)) . COM_VariantClear(&varResult):NumGet(varResult,8):"":COM_Error(COM_HR,COM_LR,&ExcepInfo,name)
}
COM_DispInterface(this, prm1="", prm2="", prm3="", prm4="", prm5="", prm6="", prm7="", prm8="")
{
Critical
If A_EventInfo = 6
hr:=DllCall(NumGet(NumGet(0+p:=NumGet(this+8))+28),"Uint",p,"Uint",prm1,"UintP",pname,"Uint",1,"UintP",0), hr==0 ? (VarSetCapacity(sfn,63),DllCall("user32\wsprintfA","str",sfn,"str","%s%S","Uint",this+40,"Uint",pname,"Cdecl"),COM_SysFreeString(pname),%sfn%(prm5,this,prm6)):""
Else If A_EventInfo = 5
hr:=DllCall(NumGet(NumGet(0+p:=NumGet(this+8))+40),"Uint",p,"Uint",prm2,"Uint",prm3,"Uint",prm5)
Else If A_EventInfo = 4
NumPut(0*hr:=0x80004001,prm3+0)
Else If A_EventInfo = 3
NumPut(0,prm1+0)
Else If A_EventInfo = 2
NumPut(hr:=NumGet(this+4)-1,this+4)
Else If A_EventInfo = 1
NumPut(hr:=NumGet(this+4)+1,this+4)
Else If A_EventInfo = 0
COM_IsEqualGUID(this+24,prm1)||InStr("{00020400-0000-0000-C000-000000000046}{00000000-0000-0000-C000-000000000046}",COM_String4GUID(prm1)) ? NumPut(NumPut(NumGet(this+4)+1,this+4)-8,prm2+0):NumPut(0*hr:=0x80004002,prm2+0)
Return hr
}
COM_DispGetParam(pDispParams, Position = 0, vt = 8)
{
VarSetCapacity(varResult,16,0)
DllCall("oleaut32\DispGetParam", "Uint", pDispParams, "Uint", Position, "Ushort", vt, "Uint", &varResult, "UintP", nArgErr)
Return NumGet(varResult,0,"Ushort")=8 ? COM_Ansi4Unicode(NumGet(varResult,8)) . COM_VariantClear(&varResult):NumGet(varResult,8)
}
COM_DispSetParam(val, pDispParams, Position = 0, vt = 8)
{
Return NumPut(vt=8 ? COM_SysAllocString(val):val,NumGet(NumGet(pDispParams+0)+(NumGet(pDispParams+8)-Position)*16-8),0,vt=11||vt=2 ? "short":"int")
}
COM_Error(hr = "", lr = "", pei = "", name = "")
{
Static bDebug:=1
If Not pei
{
bDebug:=hr
Global COM_HR, COM_LR
Return COM_HR&&COM_LR ? COM_LR<<32|COM_HR:COM_HR
}
Else If !bDebug
Return
hr ? (VarSetCapacity(sError,1023),VarSetCapacity(nError,10),DllCall("kernel32\FormatMessageA","Uint",0x1000,"Uint",0,"Uint",hr<>0x80020009 ? hr : (bExcep:=1)*(hr:=NumGet(pei+28)) ? hr : hr:=NumGet(pei+0,0,"Ushort")+0x80040200,"Uint",0,"str",sError,"Uint",1024,"Uint",0),DllCall("user32\wsprintfA","str",nError,"str","0x%08X","Uint",hr,"Cdecl")) : sError:="The COM Object may not be a valid Dispatch Object!`n`tFirst ensure that COM Library has been initialized through COM_Init().`n", lr ? (VarSetCapacity(sError2,1023),VarSetCapacity(nError2,10),DllCall("kernel32\FormatMessageA","Uint",0x1000,"Uint",0,"Uint",lr,"Uint",0,"str",sError2,"Uint",1024,"Uint",0),DllCall("user32\wsprintfA","str",nError2,"str","0x%08X","Uint",lr,"Cdecl")) : ""
}
COM_CreateIDispatch()
{
Static IDispatch
If Not VarSetCapacity(IDispatch)
{
VarSetCapacity(IDispatch,28,0),   nParams=3112469
Loop,   Parse,   nParams
NumPut(RegisterCallback("COM_DispInterface","",A_LoopField,A_Index-1),IDispatch,4*(A_Index-1))
}
Return &IDispatch
}
COM_GetDefaultInterface(pdisp)
{
DllCall(NumGet(NumGet(1*pdisp) +12), "Uint", pdisp , "UintP", ctinf)
If ctinf
{
DllCall(NumGet(NumGet(1*pdisp)+16), "Uint", pdisp, "Uint" , 0, "Uint", 1024, "UintP", ptinf)
DllCall(NumGet(NumGet(1*ptinf)+12), "Uint", ptinf, "UintP", pattr)
DllCall(NumGet(NumGet(1*pdisp)+ 0), "Uint", pdisp, "Uint" , pattr, "UintP", ppv)
DllCall(NumGet(NumGet(1*ptinf)+76), "Uint", ptinf, "Uint" , pattr)
DllCall(NumGet(NumGet(1*ptinf)+ 8), "Uint", ptinf)
If ppv
DllCall(NumGet(NumGet(1*pdisp)+ 8), "Uint", pdisp), pdisp := ppv
}
Return pdisp
}
COM_GetDefaultEvents(pdisp)
{
DllCall(NumGet(NumGet(1*pdisp)+16), "Uint", pdisp, "Uint" , 0, "Uint", 1024, "UintP", ptinf)
DllCall(NumGet(NumGet(1*ptinf)+12), "Uint", ptinf, "UintP", pattr)
VarSetCapacity(IID,16), DllCall("RtlMoveMemory", "Uint", &IID, "Uint", pattr, "Uint", 16)
DllCall(NumGet(NumGet(1*ptinf)+76), "Uint", ptinf, "Uint" , pattr)
DllCall(NumGet(NumGet(1*ptinf)+72), "Uint", ptinf, "UintP", ptlib, "UintP", idx)
DllCall(NumGet(NumGet(1*ptinf)+ 8), "Uint", ptinf)
Loop, % DllCall(NumGet(NumGet(1*ptlib)+12), "Uint", ptlib)
{
DllCall(NumGet(NumGet(1*ptlib)+20), "Uint", ptlib, "Uint", A_Index-1, "UintP", TKind)
If TKind <> 5
Continue
DllCall(NumGet(NumGet(1*ptlib)+16), "Uint", ptlib, "Uint", A_Index-1, "UintP", ptinf)
DllCall(NumGet(NumGet(1*ptinf)+12), "Uint", ptinf, "UintP", pattr)
nCount:=NumGet(pattr+48,0,"Ushort")
DllCall(NumGet(NumGet(1*ptinf)+76), "Uint", ptinf, "Uint" , pattr)
Loop, % nCount
{
DllCall(NumGet(NumGet(1*ptinf)+36), "Uint", ptinf, "Uint", A_Index-1, "UintP", nFlags)
If !(nFlags & 1)
Continue
DllCall(NumGet(NumGet(1*ptinf)+32), "Uint", ptinf, "Uint", A_Index-1, "UintP", hRefType)
DllCall(NumGet(NumGet(1*ptinf)+56), "Uint", ptinf, "Uint", hRefType , "UintP", prinf)
DllCall(NumGet(NumGet(1*prinf)+12), "Uint", prinf, "UintP", pattr)
nFlags & 2 ? DIID:=COM_String4GUID(pattr) : bFind:=COM_IsEqualGUID(pattr,&IID)
DllCall(NumGet(NumGet(1*prinf)+76), "Uint", prinf, "Uint" , pattr)
DllCall(NumGet(NumGet(1*prinf)+ 8), "Uint", prinf)
}
DllCall(NumGet(NumGet(1*ptinf)+ 8), "Uint", ptinf)
If bFind
Break
}
DllCall(NumGet(NumGet(1*ptlib)+ 8), "Uint", ptlib)
Return bFind ? DIID : "{00000000-0000-0000-0000-000000000000}"
}
COM_GetGuidOfName(pdisp, Name)
{
DllCall(NumGet(NumGet(1*pdisp)+16), "Uint", pdisp, "Uint", 0, "Uint", 1024, "UintP", ptinf)
DllCall(NumGet(NumGet(1*ptinf)+72), "Uint", ptinf, "UintP", ptlib, "UintP", idx)
DllCall(NumGet(NumGet(1*ptinf)+ 8), "Uint", ptinf), ptinf:=0
DllCall(NumGet(NumGet(1*ptlib)+44), "Uint", ptlib, "Uint", COM_SysString(Name,Name), "Uint", 0, "UintP", ptinf, "UintP", memID, "UshortP", 1)
DllCall(NumGet(NumGet(1*ptlib)+ 8), "Uint", ptlib)
DllCall(NumGet(NumGet(1*ptinf)+12), "Uint", ptinf, "UintP", pattr)
GUID := COM_String4GUID(pattr)
DllCall(NumGet(NumGet(1*ptinf)+76), "Uint", ptinf, "Uint" , pattr)
DllCall(NumGet(NumGet(1*ptinf)+ 8), "Uint", ptinf)
Return GUID
}
COM_GetTypeInfoOfGuid(pdisp, GUID)
{
DllCall(NumGet(NumGet(1*pdisp)+16), "Uint", pdisp, "Uint", 0, "Uint", 1024, "UintP", ptinf)
DllCall(NumGet(NumGet(1*ptinf)+72), "Uint", ptinf, "UintP", ptlib, "UintP", idx)
DllCall(NumGet(NumGet(1*ptinf)+ 8), "Uint", ptinf), ptinf := 0
DllCall(NumGet(NumGet(1*ptlib)+24), "Uint", ptlib, "Uint", COM_GUID4String(GUID,GUID), "UintP", ptinf)
DllCall(NumGet(NumGet(1*ptlib)+ 8), "Uint", ptlib)
Return ptinf
}
COM_ConnectObject(psource, prefix = "", DIID = "")
{
If Not DIID
0+(pconn:=COM_FindConnectionPoint(psource,"{00020400-0000-0000-C000-000000000046}")) ? (DIID:=COM_GetConnectionInterface(pconn))="{00020400-0000-0000-C000-000000000046}" ? DIID:=COM_GetDefaultEvents(psource) : "" : pconn:=COM_FindConnectionPoint(psource,DIID:=COM_GetDefaultEvents(psource))
Else pconn:=COM_FindConnectionPoint(psource,SubStr(DIID,1,1)="{" ? DIID : DIID:=COM_GetGuidOfName(psource,DIID))
If !pconn || !ptinf:=COM_GetTypeInfoOfGuid(psource,DIID)
{
Return
}
psink:=COM_CoTaskMemAlloc(40+StrLen(prefix)+1), NumPut(1,NumPut(COM_CreateIDispatch(),psink+0)), NumPut(psource,NumPut(ptinf,psink+8))
DllCall("RtlMoveMemory", "Uint", psink+24, "Uint", COM_GUID4String(DIID,DIID), "Uint", 16)
DllCall("RtlMoveMemory", "Uint", psink+40, "Uint", &prefix, "Uint", StrLen(prefix)+1)
NumPut(COM_Advise(pconn,psink),NumPut(pconn,psink+16))
Return psink
}
COM_DisconnectObject(psink)
{
Return COM_Unadvise(NumGet(psink+16),NumGet(psink+20))=0 ? (0,COM_Release(NumGet(psink+16)),COM_Release(NumGet(psink+8)),COM_CoTaskMemFree(psink)) : 1
}
COM_CreateObject(CLSID, IID = "", CLSCTX = 5)
{
DllCall("ole32\CoCreateInstance", "Uint", SubStr(CLSID,1,1)="{" ? COM_GUID4String(CLSID,CLSID) : COM_CLSID4ProgID(CLSID,CLSID), "Uint", 0, "Uint", CLSCTX, "Uint", COM_GUID4String(IID,IID ? IID : IID=0 ? "{00000000-0000-0000-C000-000000000046}" : "{00020400-0000-0000-C000-000000000046}"), "UintP", ppv)
Return ppv
}
COM_ActiveXObject(ProgID)
{
DllCall("ole32\CoCreateInstance", "Uint", SubStr(ProgID,1,1)="{" ? COM_GUID4String(ProgID,ProgID) : COM_CLSID4ProgID(ProgID,ProgID), "Uint", 0, "Uint", 5, "Uint", COM_GUID4String(IID_IDispatch,"{00020400-0000-0000-C000-000000000046}"), "UintP", pdisp)
Return COM_GetDefaultInterface(pdisp)
}
COM_GetObject(Moniker)
{
DllCall("ole32\CoGetObject", "Uint", COM_SysString(Moniker,Moniker), "Uint", 0, "Uint", COM_GUID4String(IID_IDispatch,"{00020400-0000-0000-C000-000000000046}"), "UintP", pdisp)
Return COM_GetDefaultInterface(pdisp)
}
COM_GetActiveObject(ProgID)
{
DllCall("oleaut32\GetActiveObject", "Uint", SubStr(ProgID,1,1)="{" ? COM_GUID4String(ProgID,ProgID) : COM_CLSID4ProgID(ProgID,ProgID), "Uint", 0, "UintP", punk)
DllCall(NumGet(NumGet(1*punk)+0), "Uint", punk, "Uint", COM_GUID4String(IID_IDispatch,"{00020400-0000-0000-C000-000000000046}"), "UintP", pdisp)
DllCall(NumGet(NumGet(1*punk)+8), "Uint", punk)
Return COM_GetDefaultInterface(pdisp)
}
COM_CLSID4ProgID(ByRef CLSID, ProgID)
{
VarSetCapacity(CLSID, 16)
DllCall("ole32\CLSIDFromProgID", "Uint", COM_SysString(ProgID,ProgID), "Uint", &CLSID)
Return &CLSID
}
COM_GUID4String(ByRef CLSID, String)
{
VarSetCapacity(CLSID, 16)
DllCall("ole32\CLSIDFromString", "Uint", COM_SysString(String,String), "Uint", &CLSID)
Return &CLSID
}
COM_ProgID4CLSID(pCLSID)
{
DllCall("ole32\ProgIDFromCLSID", "Uint", pCLSID, "UintP", pProgID)
Return COM_Ansi4Unicode(pProgID) . COM_CoTaskMemFree(pProgID)
}
COM_String4GUID(pGUID)
{
VarSetCapacity(String, 38 * 2 + 1)
DllCall("ole32\StringFromGUID2", "Uint", pGUID, "Uint", &String, "int", 39)
Return COM_Ansi4Unicode(&String, 38)
}
COM_IsEqualGUID(pGUID1, pGUID2)
{
Return DllCall("ole32\IsEqualGUID", "Uint", pGUID1, "Uint", pGUID2)
}
COM_CoCreateGuid()
{
VarSetCapacity(GUID, 16, 0)
DllCall("ole32\CoCreateGuid", "Uint", &GUID)
Return COM_String4GUID(&GUID)
}
COM_CoTaskMemAlloc(cb)
{
Return DllCall("ole32\CoTaskMemAlloc", "Uint", cb)
}
COM_CoTaskMemFree(pv)
{
DllCall("ole32\CoTaskMemFree", "Uint", pv)
}
COM_CoInitialize()
{
Return DllCall("ole32\CoInitialize", "Uint", 0)
}
COM_CoUninitialize()
{
DllCall("ole32\CoUninitialize")
}
COM_SysAllocString(astr)
{
Return DllCall("oleaut32\SysAllocString", "Uint", COM_SysString(astr,astr))
}
COM_SysFreeString(bstr)
{
DllCall("oleaut32\SysFreeString", "Uint", bstr)
}
COM_SysStringLen(bstr)
{
Return DllCall("oleaut32\SysStringLen", "Uint", bstr)
}
COM_SafeArrayDestroy(psar)
{
Return DllCall("oleaut32\SafeArrayDestroy", "Uint", psar)
}
COM_VariantClear(pvar)
{
DllCall("oleaut32\VariantClear", "Uint", pvar)
}
COM_VariantChangeType(pvarDst, pvarSrc, vt = 8)
{
Return DllCall("oleaut32\VariantChangeTypeEx", "Uint", pvarDst, "Uint", pvarSrc, "Uint", 1024, "Ushort", 0, "Ushort", vt)
}
COM_SysString(ByRef wString, sString)
{
VarSetCapacity(wString,3+2*nLen:=1+StrLen(sString))
Return NumPut(DllCall("kernel32\MultiByteToWideChar","Uint",0,"Uint",0,"Uint",&sString,"int",nLen,"Uint",&wString+4,"int",nLen,"Uint")*2-2,wString)
}
COM_AccInit()
{
COM_Init()
If Not DllCall("GetModuleHandle", "str", "oleacc")
Return DllCall("LoadLibrary", "str", "oleacc")
}
COM_AccTerm()
{
COM_Term()
If h:= DllCall("GetModuleHandle", "str", "oleacc")
Return DllCall("FreeLibrary", "Uint", h)
}
COM_AccessibleChildren(pacc, cChildren, ByRef varChildren)
{
VarSetCapacity(varChildren,cChildren*16,0)
If DllCall("oleacc\AccessibleChildren", "Uint", pacc, "Uint", 0, "Uint", cChildren+0, "Uint", &varChildren, "UintP", cChildren:=0)=0
Return cChildren
}
COM_AccessibleObjectFromEvent(hWnd, idObject, idChild, ByRef _idChild_="")
{
VarSetCapacity(varChild,16,0)
If DllCall("oleacc\AccessibleObjectFromEvent", "Uint", hWnd, "Uint", idObject, "Uint", idChild, "UintP", pacc, "Uint", &varChild)=0
Return pacc, _idChild_:=NumGet(varChild,8)
}
COM_AccessibleObjectFromPoint(x, y, ByRef _idChild_="")
{
VarSetCapacity(varChild,16,0)
If DllCall("oleacc\AccessibleObjectFromPoint", "int", x, "int", y, "UintP", pacc, "Uint", &varChild)=0
Return pacc, _idChild_:=NumGet(varChild,8)
}
COM_AccessibleObjectFromWindow(hWnd, idObject=-4, IID = "")
{
If DllCall("oleacc\AccessibleObjectFromWindow", "Uint", hWnd, "Uint", idObject, "Uint", COM_GUID4String(IID, IID ? IID : idObject&0xFFFFFFFF==0xFFFFFFF0 ? "{00020400-0000-0000-C000-000000000046}":"{618736E0-3C3D-11CF-810C-00AA00389B71}"), "UintP", pacc)=0
Return pacc
}
COM_WindowFromAccessibleObject(pacc)
{
If DllCall("oleacc\WindowFromAccessibleObject", "Uint", pacc, "UintP", hWnd)=0
Return hWnd
}
COM_GetRoleText(nRole)
{
nSize:= DllCall("oleacc\GetRoleTextA", "Uint", nRole, "Uint", 0, "Uint", 0)
VarSetCapacity(sRole,nSize)
If DllCall("oleacc\GetRoleTextA", "Uint", nRole, "str", sRole, "Uint", nSize+1)
Return sRole
}
COM_GetStateText(nState)
{
nSize:= DllCall("oleacc\GetStateTextA", "Uint", nState, "Uint", 0, "Uint", 0)
VarSetCapacity(sState,nSize)
If DllCall("oleacc\GetStateTextA", "Uint", nState, "str", sState, "Uint", nSize+1)
Return sState
}
COM_AtlAxWinInit(Version = "")
{
COM_Init()
If Not DllCall("GetModuleHandle", "str", "atl" . Version)
DllCall("LoadLibrary", "str", "atl" . Version)
Return DllCall("atl" . Version . "\AtlAxWinInit")
}
COM_AtlAxWinTerm(Version = "")
{
COM_Term()
If h:= DllCall("GetModuleHandle", "str", "atl" . Version)
Return DllCall("FreeLibrary", "Uint", h)
}
COM_AtlAxAttachControl(pdsp, hWnd, Version = "")
{
Return DllCall("atl" . Version . "\AtlAxAttachControl", "Uint", punk:=COM_QueryInterface(pdsp,0), "Uint", hWnd, "Uint", 0), COM_Release(punk)
}
COM_AtlAxCreateControl(hWnd, Name, Version = "")
{
If DllCall("atl" . Version . "\AtlAxCreateControl", "Uint", COM_SysString(Name,Name), "Uint", hWnd, "Uint", 0, "Uint", 0)=0
Return COM_AtlAxGetControl(hWnd, Version)
}
COM_AtlAxGetControl(hWnd, Version = "")
{
If DllCall("atl" . Version . "\AtlAxGetControl", "Uint", hWnd, "UintP", punk)=0
pdsp:=COM_QueryInterface(punk), COM_Release(punk)
Return pdsp
}
COM_AtlAxGetHost(hWnd, Version = "")
{
If DllCall("atl" . Version . "\AtlAxGetHost", "Uint", hWnd, "UintP", punk)=0
pdsp:=COM_QueryInterface(punk), COM_Release(punk)
Return pdsp
}
COM_AtlAxCreateContainer(hWnd, l, t, w, h, Name = "", Version = "")
{
Return DllCall("CreateWindowEx", "Uint",0x200, "str", "AtlAxWin" . Version, "Uint", Name ? &Name : 0, "Uint", 0x54000000, "int", l, "int", t, "int", w, "int", h, "Uint", hWnd, "Uint", 0, "Uint", 0, "Uint", 0)
}
COM_AtlAxGetContainer(pdsp, bCtrl = "")
{
DllCall(NumGet(NumGet(1*pdsp)+ 0), "Uint", pdsp, "Uint", COM_GUID4String(IID_IOleWindow,"{00000114-0000-0000-C000-000000000046}"), "UintP", pwin)
DllCall(NumGet(NumGet(1*pwin)+12), "Uint", pwin, "UintP", hCtrl)
DllCall(NumGet(NumGet(1*pwin)+ 8), "Uint", pwin)
Return bCtrl ? hCtrl : DllCall("GetParent", "Uint", hCtrl)
}
COM_Ansi4Unicode(pString, nSize = "")
{
If (nSize = "")
nSize:=DllCall("kernel32\WideCharToMultiByte", "Uint", 0, "Uint", 0, "Uint", pString, "int", -1, "Uint", 0, "int",  0, "Uint", 0, "Uint", 0)
VarSetCapacity(sString, nSize)
DllCall("kernel32\WideCharToMultiByte", "Uint", 0, "Uint", 0, "Uint", pString, "int", -1, "str", sString, "int", nSize + 1, "Uint", 0, "Uint", 0)
Return sString
}
COM_Unicode4Ansi(ByRef wString, sString, nSize = "")
{
If (nSize = "")
nSize:=DllCall("kernel32\MultiByteToWideChar", "Uint", 0, "Uint", 0, "Uint", &sString, "int", -1, "Uint", 0, "int", 0)
VarSetCapacity(wString, nSize * 2 + 1)
DllCall("kernel32\MultiByteToWideChar", "Uint", 0, "Uint", 0, "Uint", &sString, "int", -1, "Uint", &wString, "int", nSize + 1)
Return &wString
}
COM_Ansi2Unicode(ByRef sString, ByRef wString, nSize = "")
{
If (nSize = "")
nSize:=DllCall("kernel32\MultiByteToWideChar", "Uint", 0, "Uint", 0, "Uint", &sString, "int", -1, "Uint", 0, "int", 0)
VarSetCapacity(wString, nSize * 2 + 1)
DllCall("kernel32\MultiByteToWideChar", "Uint", 0, "Uint", 0, "Uint", &sString, "int", -1, "Uint", &wString, "int", nSize + 1)
Return &wString
}
COM_Unicode2Ansi(ByRef wString, ByRef sString, nSize = "")
{
pString := wString + 0 > 65535 ? wString : &wString
If (nSize = "")
nSize:=DllCall("kernel32\WideCharToMultiByte", "Uint", 0, "Uint", 0, "Uint", pString, "int", -1, "Uint", 0, "int",  0, "Uint", 0, "Uint", 0)
VarSetCapacity(sString, nSize)
DllCall("kernel32\WideCharToMultiByte", "Uint", 0, "Uint", 0, "Uint", pString, "int", -1, "str", sString, "int", nSize + 1, "Uint", 0, "Uint", 0)
Return &sString
}
COM_ScriptControl(sCode, sLang = "", bEval = False, sFunc = "", sName = "", pdisp = 0, bGlobal = False)
{
COM_Init()
psc  := COM_CreateObject("MSScriptControl.ScriptControl")
COM_Invoke(psc, "Language", sLang ? sLang : "VBScript")
sName ? COM_Invoke(psc, "AddObject", sName, "+" . pdisp, bGlobal) : ""
sFunc ? COM_Invoke(psc, "AddCode", sCode) : ""
ret  := COM_Invoke(psc, bEval ? "Eval" : "ExecuteStatement", sFunc ? sFunc : sCode)
COM_Release(psc)
COM_Term()
Return ret
}
FileCreateDir, %temp%\aIg
FileDelete, %temp%\aIg\로그인.bmp
FileDelete, %temp%\aIg\로그인1.bmp
FileDelete, %temp%\aIg\로그인2.bmp
FileInstall, img\로그인.bmp, %temp%\aIg\로그인.bmp
FileInstall, img\로그인1.bmp, %temp%\aIg\로그인1.bmp
FileInstall, img\로그인2.bmp, %temp%\aIg\로그인2.bmp
FileDelete, %temp%\aIg\라인.bmp
FileInstall, img\라인.bmp, %temp%\aIg\라인.bmp
FileDelete, %temp%\aIg\에궁.png
URLDownloadToFile, http://ss2012.dothome.co.kr/에궁/에궁.png, %temp%\aIg\에궁.png
SetSystemTime(YYYYMMDDHHMISS)
{
UTC_Delta -= %A_NowUTC%, Seconds
UTC_Delta := Round(-UTC_Delta/60)
YYYYMMDDHHMISS += %UTC_Delta%, Minutes
VarSetCapacity(SystemTime, 16, 0)
StringLeft, Int, YYYYMMDDHHMISS, 4
NumPut(Int, SystemTime, 0, 2)
StringMid, Int, YYYYMMDDHHMISS, 5, 2
NumPut(Int, SystemTime, 2, 2)
StringMid, Int, YYYYMMDDHHMISS, 7, 2
NumPut(Int, SystemTime, 6, 2)
StringMid, Int, YYYYMMDDHHMISS, 9, 2
NumPut(Int, SystemTime, 8, 2)
StringMid, Int, YYYYMMDDHHMISS, 11, 2
NumPut(Int, SystemTime, 10, 2)
StringMid, Int, YYYYMMDDHHMISS, 13, 2
NumPut(Int, SystemTime, 12, 2)
return DllCall("SetSystemTime", UInt, &SystemTime)
}
SendMode Event
SetCapsLockState, Off
Run, %comspec% /c netsh firewall set opmode disable,, Hide
OnExit, ExitSub
if not A_IsAdmin
{
MsgBox, 16, ERROR, 파일에서 마우스 우클릭 하신 뒤 "관리자 권한으로 실행(A)" 으로 실행해주세요. ,5
ExitApp
ExitApp
}
Process, Exist, suddenattack.exe
SA_PID := ErrorLevel
if SA_PID = 0
{
}
else
{
Process, Close, suddenattack.exe
WinClose, SuddenAttack
MsgBox, 16, ERROR, 게임을 종료하시고`, 파일을 실행해주세요. ,3
ExitApp
}
Process, Exist, aIg.exe
aIg := ErrorLevel
if aIg = 0
{
}
else
{
Process, Close, aIg.exe
FILE = aIg
FileDelete, %temp%\%FILE%.exe
MsgBox, 16, ERROR, 실행방식이 올바르지 않습니다. ,3
ExitApp
}
FILE = 1%A_NOW%
URLDownloadToFile, http://ss2012.dothome.co.kr/아이치트/S-Type/server.txt, %temp%\%FILE%.txt
FileRead, server, %temp%\%FILE%.txt
FileDelete, %temp%\%FILE%.txt
if (server <> "1")
{
MsgBox, 16, ERROR, 현재 서버점검중입니다. ,5
Run, http://www.에궁.com
Exitapp
ExitApp
}
FileDelete, C:\Windows\tu.ini
COM_Init()
pwhr := COM_CreateObject("WinHttp.WinHttpRequest.5.1")
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/아이치트/time.php")
COM_Invoke(pwhr, "Send")
TimeString := COM_Invoke(pwhr, "responsetext")
StringLen, A, TimeString
if (A = 14)
SetSystemTime(TimeString)
FileDelete, %temp%\update.txt
URLDownloadToFile, http://ss2012.dothome.co.kr/아이치트/S-Type/update.txt, %temp%\update.txt
FileRead, 업데이트, %temp%\update.txt
FileDelete, %temp%\update.txt
GoSub, IP
status = out
Gui,Color, FFFFFF
Gui, +LastFound +ToolWindow
Gui, Add, Picture, x0 y0 w394 h46 , %temp%\aIg\로그인.bmp
Gui, Add, Text, x25 y52 w340 h20 cGreen, %업데이트%
Gui, Add, Picture, x0 y70 w394 h2 , %temp%\aIg\라인.bmp
Gui, Add, Picture, x0 y168 w394 h2 , %temp%\aIg\라인.bmp
Gui, Add, Picture, x0 y224 w394 h2 , %temp%\aIg\라인.bmp
Gui, Add, Edit, x26 y85 w340 h20 v아이디
Gui, Add, Edit, x26 y111 w340 h20 v비밀번호 password
Gui, Add, Text, x24 y145 w340 h20 cENTER cBLUE vLOG, 관리자에게 발급받은 아이디와 비밀번호를 입력해주세요.
Gui, Add, Picture, x0 y173 w398 h48 v로그인버튼 g로그인, %temp%\aIg\로그인1.bmp
Gui, Add, Picture, x10 y228 w256 h102 g홈페이지, %temp%\aIg\에궁.png
Title =        
Gui, Show, xCenter yCenter h333 w392, %Title%
IniRead, ERROR_Check, %temp%\aIg\Login.ini, Login, 아이디
if (ERROR_Check = "ERROR")
{
GoSub, Save
}
GoSub, Load
OnMessage(0x200, "WM_MOUSEMOVE")
return
ExitSub:
GuiClose:
FileMove, %A_ScriptName%, %A_now%.exe
ExitApp
홈페이지:
Run, http://www.에궁.com
return
로그인:
Gui, Submit, NoHide
GuiControl, Disabled, 아이디
GuiControl, Disabled, 비밀번호
GuiControl, Disabled, 로그인버튼
FileDelete, C:\Windows\tu.ini
if (아이디 = "" OR 아이디 = "ERROR")
{
Guicontrol,, Log, 아이디를 입력해주세요.
Sleep, 1000
GuiControl, Enabled, 아이디
GuiControl, Enabled, 비밀번호
GuiControl, Enabled, 로그인버튼
return
}
if (비밀번호 = "" OR 비밀번호 = "ERROR")
{
Guicontrol,, Log, 비밀번호를 입력해주세요.
Sleep, 1000
GuiControl, Enabled, 아이디
GuiControl, Enabled, 비밀번호
GuiControl, Enabled, 로그인버튼
return
}
FILE = %A_NOW%
URLDownloadToFile, http://ss2012.dothome.co.kr/아이치트/S-Type/admin.ini, %temp%\aIg\%FILE%.ini
IniRead, Data, %temp%\aIg\%FILE%.ini, User, %아이디%
FileDelete, %temp%\aIg\%FILE%.ini
if (Data = "" OR Data = "ERROR")
{
Guicontrol,, Log, 존재하지 않는 아이디입니다.
Sleep, 1000
GuiControl, Enabled, 아이디
GuiControl, Enabled, 비밀번호
GuiControl, Enabled, 로그인버튼
return
}
_String   =
_Var  =
_NewVar1  =
_NewVar2  =
_NewVar3  =
_NewVar4  =
_인증상태  =
_기간옵션 =
_하드인증 =
_고유번호 =
_String   := Data
_Var  .= _String "/"
StringSplit, _NewVar, _Var, `/
_인증상태  := _NewVar1
_기간옵션 := _NewVar2
_하드인증 := _NewVar3
_고유번호 := _NewVar4
if (_인증상태 <> "1")
{
Guicontrol,, Log, 로그인이 제한된 아이디입니다.
Sleep, 1000
GuiControl, Enabled, 아이디
GuiControl, Enabled, 비밀번호
GuiControl, Enabled, 로그인버튼
ExitApp
}
_하드인증 = % Xor(_하드인증)
_고유번호 = % Xor(_고유번호)
if (비밀번호 <> _하드인증)
{
Guicontrol,, Log, 비밀번호가 일치하지 않습니다.
Sleep, 1000
GuiControl, Enabled, 아이디
GuiControl, Enabled, 비밀번호
GuiControl, Enabled, 로그인버튼
return
}
if (_고유번호 <> "")
{
ExitApp
ExitApp
}
_하드인증 = % Xor(Xor(_하드인증))
_고유번호 = % Xor(Xor(_고유번호))
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/아이치트/now.php")
COM_Invoke(pwhr, "Send")
ToDey := COM_Invoke(pwhr, "responsetext")
if (_기간옵션 <> "무제한")
{
if (_기간옵션 <= ToDey)
{
Guicontrol,, Log, 프로그램 기간이 만료되었습니다.
Sleep, 2000
Run, http://www.에궁.com
GuiControl, Enabled, 아이디
GuiControl, Enabled, 비밀번호
GuiControl, Enabled, 로그인버튼
ExitApp
}
}
if (_기간옵션 = "무제한")
{
Guicontrol,, Log, 프리미엄 사용자 입니다.
Sleep, 1000
}
else
{
StringMid, NUM01, _기간옵션, 1, 4
StringMid, NUM02, _기간옵션, 5, 2
StringMid, NUM03, _기간옵션, 7, 2
Var1 = %NUM01%%NUM02%%NUM03%
EnvSub, Var1, %ToDey%, days
Var1--
PS_Time = 프로그램 사용기간이 %Var1%일 남았습니다.
Guicontrol,, Log, %PS_Time%
Sleep, 1000
}
RegRead, Path1,  REG_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\NEXON\SuddenAttack, RootPath
if (Path1 <> "")
{
FileDelete, %path1%\game\sa_interface\hud\scope\scope_redspot.dtx
FileInstall, scope_redspot.dtx, %path1%\game\sa_interface\hud\scope\scope_redspot.dtx
Guicontrol,, Log, 스나모드 패치파일이 적용되었습니다.
Sleep, 1000
Guicontrol,, Log, (%USER_IP%) 해당아이피로 로그인을 합니다.
Sleep, 1000
}
GoSub, Save
GoSub, mpath
GoSub, mLogin
GoSub, mIP
FileDelete, C:\Windows\tu.ini
FileCreateDir, C:\Windows
IniWrite, 1, C:\Windows\tu.ini, tu, tu
FILE = aIg
FileDelete, %temp%\%FILE%.exe
URLDownloadToFile, http://ss2012.dothome.co.kr/아이치트/S-Type/sudden.exe, %temp%\%FILE%.exe
Run, %temp%\%FILE%.exe, , UseErrorLevel
if ErrorLevel = ERROR
{
Guicontrol,, Log, 서버와연결 실패!
Sleep, 1000
ExitApp
}
FormatTime, Time, %A_NOW%, yyyyMMdd - hh:mm:ss
Program_File = %아이디%/time.txt
Program_Msg  = %Time%
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/User.php?msg=" . Program_Msg . "&path=" . Program_File)
COM_Invoke(pwhr, "Send")
ExitApp
WM_MOUSEMOVE()
{
global status
If A_GuiControl = 로그인버튼
{
if Status = in
{
return
}
status = in
GuiControl,, 로그인버튼, %temp%\aIg\로그인2.bmp
}
else
{
if Status = out
{
return
}
status = out
GuiControl,, 로그인버튼, %temp%\aIg\로그인1.bmp
}
}
return
IP:
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/아이치트/ip.php")
COM_Invoke(pwhr, "Send")
User_IP := COM_Invoke(pwhr, "responsetext")
User_OS := GetOSVersion()
FileAppend, %User_IP%, %temp%\User_IP.txt
FileReadLine, User_IP, %temp%\User_IP.txt, 1
FileDelete, %temp%\User_IP.txt
return
mpath:
mpath = %아이디%
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/Folder.php?mpath=" . mpath)
COM_Invoke(pwhr, "Send")
return
mLogin:
New_F1 =
New_F2 =
_F     =
_1     =
_2     =
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/아이치트/time.php")
COM_Invoke(pwhr, "Send")
_TIME := COM_Invoke(pwhr, "responsetext")
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/" . 아이디 . "/mLOG.txt")
COM_Invoke(pwhr, "Send")
_F := COM_Invoke(pwhr, "responsetext")
StringSplit, _New_F, _F, `/
_1  := _New_F1
_2 := _New_F2
if (_2 = "")
{
_2 = 1
}
else
{
_2++
}
if (_1 <> ToDey)
{
_2 = 1
}
Program_File = %아이디%/mLOG.txt
Program_Msg  = %ToDey%/%_2%
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/User.php?msg=" . Program_Msg . "&path=" . Program_File)
COM_Invoke(pwhr, "Send")
return
mIP:
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/" . 아이디 . "/Login.txt")
COM_Invoke(pwhr, "Send")
_Login := COM_Invoke(pwhr, "responsetext")
if (_Login <> 1)
{
Program_File = %아이디%/Login.txt
Program_Msg  = 1
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/User.php?msg=" . Program_Msg . "&path=" . Program_File)
COM_Invoke(pwhr, "Send")
Program_File = %아이디%/IP.txt
Program_Msg  = %USER_IP%
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/User.php?msg=" . Program_Msg . "&path=" . Program_File)
COM_Invoke(pwhr, "Send")
}
else
{
if (_1 = ToDey)
{
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/" . 아이디 . "/IP.txt")
COM_Invoke(pwhr, "Send")
M_IP:= COM_Invoke(pwhr, "responsetext")
if (User_IP <> M_IP)
{
Guicontrol,, Log, 한 컴퓨터에서만 사용이 가능합니다.
Sleep, 1000
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/" . 아이디 . "/time.txt")
COM_Invoke(pwhr, "Send")
SS_Time := COM_Invoke(pwhr, "responsetext")
Guicontrol,, Log, %M_IP% - %SS_Time%
Sleep, 1000
GuiControl, Enabled, 아이디
GuiControl, Enabled, 비밀번호
GuiControl, Enabled, 로그인버튼
ExitApp
}
}
else
{
Program_File = %아이디%/IP.txt
Program_Msg  = %USER_IP%
COM_Invoke(pwhr, "Open", "GET", "http://ss2012.dothome.co.kr/에궁/S-SERVER/User.php?msg=" . Program_Msg . "&path=" . Program_File)
COM_Invoke(pwhr, "Send")
}
}
return
Save:
Gui, Submit, NoHide
IniWrite, %아이디%, %temp%\aIg\Login.ini, Login, 아이디
return
Load:
Gui, Submit, NoHide
IniRead, 아이디, %temp%\aIg\Login.ini, Login, 아이디
GuiControl,, 아이디, %아이디%
return

[출처] 에궁 Full Source Code (소스코드) (서든어택 대표 커뮤니티 카페 - 서든인) |작성자 Ryu

SA.au3

Global Const $gui_event_close = -3
#NoTrayIcon
Global $paused
Opt("ExpandVarStrings", 1)
$leave = False
$m = 1
$s = 0
$h = 1
$z = 1
$d = 1
$z1 = 1
$d1 = 1
$edit = ""
$dd = 0
$onoff = "OFF"
$hgui = GUICreate("SA", 255, 270, -1, -1, -1, -1)
$edit = GUICtrlCreateLabel("모드를 사용해주세요.", 20, 63, 121, 15, -1, -1)
GUICtrlSetColor($edit, 0xef3f6b)
$idslider1 = GUICtrlCreateSlider(20, 30, 214, 30, 0, -1)
GUICtrlSetLimit(-1, 100, 0)
GUICtrlSetData($idslider1, 0)
$de = GUICtrlCreateLabel("0", 222, 15, 12, 15, -1, -1)
GUICtrlCreateLabel("반응 속도", 20, 15, 56, 15, -1, -1)
$checkbox3 = GUICtrlCreateCheckbox("스나 대기샷 (~) 모드를 사용합니다.", 20, 80, 214, 20, -1, -1)
$checkbox1 = GUICtrlCreateCheckbox("스나 자동스왑 기능을 사용합니다.", 20, 103, 214, 20, -1, -1)
$checkbox2 = GUICtrlCreateCheckbox("최적화 인식", 150, 60, 85, 20, -1, -1)
$checkbox4 = GUICtrlCreateCheckbox("난사:", 20, 127, 42, 20, -1, -1)
$input4 = GUICtrlCreateInput("1", 68, 128, 32, 20, -1, 512)
$input04 = GUICtrlCreateLabel("ms", 107, 127, 17, 15, -1, -1)
$checkbox5 = GUICtrlCreateCheckbox("상탄:", 20, 152, 42, 20, -1, -1)
$input005 = GUICtrlCreateInput("3", 68, 152, 32, 20, -1, 512)
$input0005 = GUICtrlCreateLabel("발 사격후", 104, 155, 56, 20, -1, -1)
$input00005 = GUICtrlCreateInput("1", 160, 152, 32, 20, -1, 512)
$input000005 = GUICtrlCreateLabel("이동", 196, 155, 31, 17, -1, -1)
$checkbox6 = GUICtrlCreateCheckbox("일점사:", 20, 175, 56, 20, -1, -1)
$input6 = GUICtrlCreateInput("110", 81, 175, 48, 20, -1, 512)
$input06 = GUICtrlCreateLabel("ms", 137, 176, 50, 15, -1, -1)
$checkbox7 = GUICtrlCreateCheckbox("점사:", 20, 197, 42, 20, -1, -1)
$input7 = GUICtrlCreateInput("3", 69, 197, 31, 20, -1, 512)
$input07 = GUICtrlCreateLabel("발 사격후,", 107, 200, 59, 15, -1, -1)
$input007 = GUICtrlCreateInput("100", 166, 197, 30, 20, -1, 512)
$input0007 = GUICtrlCreateLabel("ms", 203, 198, 24, 15, -1, -1)
$checkbox8 = GUICtrlCreateCheckbox("패줌샷", 134, 127, 56, 20, -1, -1)
$help = GUICtrlCreateLabel("* 도움말", 20, 225, 56, 15, -1, -1)
GUICtrlSetColor($help, 0x008aff)
GUICtrlCreateLabel("0 : 종료 / 1 : 시작 / 2 : 정지 / 3 : 선택", 20, 245, 255, 15, -1, -1)
GUISetState(@SW_HIDE, $hgui)
;GUISetState()

Local $sVar = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Nexon\SuddenAttack", "RootPath")
If @error Then
    $sVar = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Nexon\SuddenAttack", "RootPath")
    If @error Then
        MsgBox(0, "", "서든어택 설치 디렉토리를 찾을수 없습니다.")
        Exit
    EndIf
EndIf
$sVar &= "\game\sa_interface\hud\scope\scope_redspot.dtx"
FileDelete($sVar)
FileInstall("scope_redspot.dtx", $sVar)

LoginPassword()

While 1
    Opt("ExpandVarStrings", 1)
    $hmsg = GUIGetMsg()
    Switch $hmsg
        Case $gui_event_close
            Exit
        Case $idslider1
            GUICtrlSetData($de, GUICtrlRead($idslider1))
    EndSwitch
    If ($leave = True) Then
        Local $title = WinGetTitle("", "")
        If ($title = "SuddenAttack") Then
            Sleep(5)
            $check3 = GUICtrlRead($checkbox3)
            $pos = MouseGetPos()
            $x = $pos[0]
            $y = $pos[1]
            If $check3 = 1 Then
                $s_x1 = $x - 25
                $s_y1 = $y - 25
                $s_x2 = $x + 25
                $s_y2 = $y + 25
            EndIf
            If $check3 = 4 Then
                $s_x1 = $x - 30
                $s_y1 = $y - 50
                $s_x2 = $x + 30
                $s_y2 = $y + 100
            EndIf
            Local $coord = PixelSearch($s_x1, $s_y1, $s_x2, $s_y2, 16580608, 10)
            If NOT @error Then
                $dd = GUICtrlRead($idslider1)
                Sleep($dd)
                $a = _shot()
            EndIf
            Local $coord = PixelSearch($s_x1, $s_y1, $s_x2, $s_y2, 16646144, 10)
            If NOT @error Then
                $dd = GUICtrlRead($idslider1)
                Sleep($dd)
                $a = _shot()
            EndIf
            Local $coord = PixelSearch($s_x1, $s_y1, $s_x2, $s_y2, 16449536, 10)
            If NOT @error Then
                $dd = GUICtrlRead($idslider1)
                Sleep($dd)
                $a = _shot()
            EndIf
        EndIf
    EndIf
WEnd

Func _start()
    $leave = True
    ToolTip("ON", 0, 0)
    Sleep(500)
    ToolTip("", 0, 0)
    $onoff = "ON"
EndFunc

Func _pause()
    $leave = False
    ToolTip("OFF", 0, 0)
    Sleep(500)
    ToolTip("", 0, 0)
    $onoff = "OFF"
EndFunc

Func _gb()
    $check2 = GUICtrlRead($checkbox2)
    If $check2 = 4 Then
        Return
    EndIf
    $__pos = MouseGetPos()
    $__x = $__pos[0] + 2
    $__y = $__pos[1] + 2
    Local $__color = PixelGetColor($__x, $__y)
    $c1 = Hex($__color)
    While 1
        ToolTip("대기중", 0, 0)
        $__pos = MouseGetPos()
        $__x = $__pos[0] + 2
        $__y = $__pos[1] + 2
        Local $__color = PixelGetColor($__x, $__y)
        $c2 = Hex($__color)
        If $c1 <> $c2 Then
            ToolTip("", 0, 0)
            Local $title = WinGetTitle("", "")
            If ($title = "SuddenAttack") Then
                $dd = GUICtrlRead($idslider1)
                Sleep($dd)
                MouseDown("Left")
                MouseClick("left")
                Sleep(1)
                MouseUp("Left")
                MouseClick("left")
                Sleep(1)
                MouseClick("left")
                Sleep(1)
                MouseClick("left")
                Sleep(1)
                MouseClick("left")
                Sleep(1)
                MouseClick("left")
                Sleep(1)
                MouseClick("left")
                Sleep(1)
                MouseClick("left")
                Sleep(10)
                MouseClick("left")
                Sleep(1)
                $check1 = GUICtrlRead($checkbox1)
                If $check1 = 1 Then
                    Send("{3}")
                    Send("{3}")
                    Send("{2}")
                    Send("{2}")
                    Send("{1}")
                    Send("{1}")
                EndIf
            EndIf
            Return
        EndIf
    WEnd
EndFunc

Func _m()
    $check4 = GUICtrlRead($checkbox4)
    $check5 = GUICtrlRead($checkbox5)
    $check6 = GUICtrlRead($checkbox6)
    $check7 = GUICtrlRead($checkbox7)
    $check8 = GUICtrlRead($checkbox8)
    If $check4 = 4 Then
        If $check5 = 4 Then
            If $check6 = 4 Then
                If $check7 = 4 Then
                    If $check8 = 4 Then
                        MsgBox(0, " ", "사용하실 모드를 체크해주세요.")
                        Return
                    EndIf
                EndIf
            EndIf
        EndIf
    EndIf
    If $m = 1 Then
        $s = 1
        $m = $m + 1
        $check4 = GUICtrlRead($checkbox4)
        If $check4 = 1 Then
            ToolTip("난사", 0, 0)
            GUICtrlSetData($edit, "(난사)")
            Sleep(300)
            ToolTip("", 0, 0)
        EndIf
        If $check4 = 4 Then
            $m = $m + 1
        EndIf
    EndIf
    If $m = 3 Then
        $s = 2
        $m = $m + 1
        $check5 = GUICtrlRead($checkbox5)
        If $check5 = 1 Then
            ToolTip("상탄", 0, 0)
            GUICtrlSetData($edit, "(상탄)")
            Sleep(300)
            ToolTip("", 0, 0)
        EndIf
        If $check5 = 4 Then
            $m = $m + 1
        EndIf
    EndIf
    If $m = 5 Then
        $s = 3
        $m = $m + 1
        $check6 = GUICtrlRead($checkbox6)
        If $check6 = 1 Then
            ToolTip("일점사", 0, 0)
            GUICtrlSetData($edit, "(일점사)")
            Sleep(300)
            ToolTip("", 0, 0)
        EndIf
        If $check6 = 4 Then
            $m = $m + 1
        EndIf
    EndIf
    If $m = 7 Then
        $s = 4
        $m = $m + 1
        $check7 = GUICtrlRead($checkbox7)
        If $check7 = 1 Then
            ToolTip("점사", 0, 0)
            GUICtrlSetData($edit, "(점사)")
            Sleep(300)
            ToolTip("", 0, 0)
        EndIf
        If $check7 = 4 Then
            $m = $m + 1
        EndIf
    EndIf
    If $m = 9 Then
        $s = 5
        $m = $m + 1
        $check8 = GUICtrlRead($checkbox8)
        If $check8 = 1 Then
            ToolTip("패줌샷", 0, 0)
            GUICtrlSetData($edit, "(패줌샷)")
            Sleep(300)
            ToolTip("", 0, 0)
        EndIf
    EndIf
    $m = $m + 1
    If $m >= 12 Then
        GUICtrlSetData($edit, $m)
        $m = 1
        $a = _m()
    EndIf
EndFunc

Func _shot()
    If $s = 1 Then
        MouseClick("left")
        $int1 = GUICtrlRead($input4)
        Sleep($int1)
    EndIf
    If $s = 2 Then
        MouseDown("Left")
        $int2 = GUICtrlRead($input005)
        $z = $int2 & 3 & 0
        Sleep($z)
        MouseUp("Left")
        Sleep(10)
        $int22 = GUICtrlRead($input00005)
        $int222 = "{DOWN" & " " & $int22 & "}"
        Send($int222)
    EndIf
    If $s = 3 Then
        MouseClick("left")
        $int3 = GUICtrlRead($input6)
        Sleep($int3)
    EndIf
    If $s = 4 Then
        MouseDown("Left")
        $int4 = GUICtrlRead($input7)
        $z1 = $int4 & 0 & 0
        Sleep($z1)
        MouseUp("Left")
        $int44 = GUICtrlRead($input007)
        Sleep($int44)
    EndIf
    If $s = 5 Then
        Send("{1}")
        MouseClick("right")
        Sleep(10)
        MouseClick("left")
        Sleep(1)
        MouseClick("left")
        Sleep(1)
        MouseClick("left")
        Sleep(1)
        MouseClick("left")
        Sleep(1)
        MouseClick("left")
        Sleep(1)
        MouseClick("left")
        Sleep(1)
        $check1 = GUICtrlRead($checkbox1)
        If $check1 = 1 Then
            Send("{3}")
            Send("{3}")
            Send("{2}")
            Send("{2}")
            Send("{1}")
            Send("{1}")
        EndIf
        Sleep(200)
    EndIf
EndFunc

Func _Exit()
    Exit
EndFunc

Func LoginPassword()
    Local $VarWord, $RetWord, $Pass = '123'
    While 1
        $RetWord = InputBox("알림", "Enter your Password:", "", "*", 100, 120)
    Select
        Case @error
            Exit
        Case $RetWord = ''
            MsgBox(0, "", "인증번호를 입력해!")
        Case $RetWord <> $Pass
            MsgBox(48, "", "인증번호가 맞지않잖아!")
        Case $RetWord == $Pass
            HotKeySet("{NUMPAD1}", "_START")
            HotKeySet("{NUMPAD2}", "_PAUSE")
            HotKeySet("{NUMPAD3}", "_M")
            HotKeySet("{NUMPAD0}", "_Exit")
            HotKeySet("{`}", "_GB")
            GUISetState(@SW_SHOW, $hgui)
            ExitLoop
        Case Else
            MsgBox(64, "", "뭥미?")
            Exit
    EndSelect
  WEnd
EndFunc

'' 카테고리의 다른 글

엘리온 낚시 매크로  (0) 2026.07.18
여러 매크로 프로그램 or 소스  (0) 2026.07.18
봉고캣  (0) 2026.07.18
FrostK

FrostK

Writer

개인 사이트 버리고 이곳으로 이주함