啥叫内存挂?懂行的来
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了啥叫内存挂?懂行的来相关的知识,希望对你有一定的参考价值。
什么叫内存挂?是封包么?说是不会被封号?修改内存?这个挂怎么做的?
懂得说说 不懂别瞎说啊!!
就是调用游戏内部的函数
网上大部分人内存挂都用delphi写挂,
下面是个例子:
【时间获取i控制】
procedureiTForm1.Timer2Timer(Sender:iTObject);
begin
Ifi(CheckBox5.checked)iandi(ComboBox16.text<>'0')ANDi(gjtime1<strtoint(edit38.t
ext))then
gjtime1:=gjtime1+1;//攻击的延时。用来使这个变量通过这个timer不停的自加1一直加到延时等于想攻击的时间。比如我设置的攻击。是3秒按一下。那这个就是自加到3,然后等调用的地方清0edit38里放着需要等到的时间。checkbox5是用来检测是否启用了这个功能。combobox是用户选择的快捷键。如果这个没有设置。是0的情况。也认为是没有启用这个功能。以下的都跟这个是一样的
Ifi(CheckBox6.checked)iandi(ComboBox17.text<>'0')andi(gjtime2<strtoint(edit39.text))then
gjtime2:=gjtime2+1;
Ifi(CheckBox7.checked)iandi(ComboBox18.text<>'0')andi(gjtime3<strtoint(edit40.text))then
gjtime3:=gjtime3+1;
Ifi(CheckBox8.checked)iandi(ComboBox19.text<>'0')andi(gjtime4<strtoint(edit41.text))then
gjtime4:=gjtime4+1;
Ifi(CheckBox9.checked)iandi(ComboBox20.text<>'0')ANDi(fztime1<strtoint(edit22.text))then
fztime1:=fztime1+1;
Ifi(CheckBox10.checked)iandi(ComboBox21.text<>'0')andi(fztime2<strtoint(edit23.text))then
fztime2:=fztime2+1;
Ifi(CheckBox11.checked)iandi(ComboBox22.text<>'0')andi(fztime3<strtoint(edit24.text))then
fztime3:=fztime3+1;
Ifi(CheckBox12.checked)iandi(ComboBox23.text<>'0')andi(fztime4<strtoint(edit20.text))then
fztime4:=fztime4+1;
Ifi(CheckBox13.checked)iandi(strtoint(edit25.text)>0)and(huanidtime<strtoint(edit25.text))then
huanidtime:=huanidtime+1;
Ifi(CheckBox1.checked)iandi(strtoint(edit17.text)>0)iand(ComboBox1.text<>'0')and(hptime<10)ithen
hptime:=hptime+1;
Ifi(CheckBox2.checked)iandi(strtoint(edit18.text)>0)iand(ComboBox2.text<>'0')and(mptime<10)ithen
mptime:=mptime+1;
ifi(CheckBox18.checked)iandi(strtoint(edit52.text)>0)iandi(combobox25.text<>'0')andi(bbtime<strtoint(edit52.text))then
bbtime:=bbtime+1;
ifi(CheckBox4.checked)iandi(combobox4.text<>'0')ithen
huanwqtime1:=huanwqtime1+1;
ifi(CheckBox4.checked)iandi(huanweizhi<>0)ithen
huanwqtime2:=huanwqtime2+1;
edit7.Text:=Concat('攻',inttostr(gjtime1));
edit8.Text:=Concat('攻',inttostr(gjtime2));
edit9.Text:=Concat('攻',inttostr(gjtime3));
edit10.Text:=Concat('攻',inttostr(gjtime4));
edit11.Text:=Concat('辅',inttostr(fztime1));
edit12.Text:=Concat('辅',inttostr(fztime2));
edit13.Text:=Concat('辅',inttostr(fztime3));
edit14.Text:=Concat('辅',inttostr(fztime4));
edit48.Text:=Concat('换',inttostr(huanidtime))i;
edit15.Text:=Concat('HP',inttostr(hptime))i;
edit16.Text:=Concat('MP',inttostr(Mptime))i;
edit49.Text:=Concat('宝',inttostr(bbtime))i;
edit55.Text:=Concat('武',inttostr(huanwqtime1))i;
edit56.Text:=Concat('器',inttostr(huanwqtime2))i;
//这些是把这些变量都用一个text表输出出来。我好测试一些问题看着。没什么用
end;
这是第2个timer。用来监控时间的。他用来把那些变量每秒+1。让各自函数分别检测这些变量来判断是否应该执行对应的操作。比如喝血cd。技能cdi以及打怪时间,换怪时间,i换武器时间等等 参考技术A 看了本贴,让菜鸟的你学会做内存挂,简单是实现自动打怪喝药!
#[HOTKEY]F10
# 在此定义全局变量
// 这些定义的全局变量都是可以改的.只是作者的习惯.大家不要搞混了.
dim WinID
#内存地址
dim addFirst
dim addNowBlood
dim addAllBlood
dim addTarget
dim bloodDrink
dim bloodKey
dim dazuobloodNeedSit
dim dazuokey
dim daguaikey
dim jinengkey
//支持最小化的函数你们不用关直接复制就行了
#支持最小化的模拟按键函数
function myKeyDown(KeyCode)
SendWindowMessage(WinID, &h001c, 1, 0)
if not GetKeyState(KeyCode) then
SetInputMode(0)
KeyDown(KeyCode)
end if
SetInputMode(1)
KeyDown(KeyCode)
end function
#支持最小化的模拟按键函数
function myKeyPress(KeyCode)
SendWindowMessage(WinID, &h001c, 1, 0)
if not GetKeyState(KeyCode) then
SetInputMode(0)
KeyDown(KeyCode)
SetInputMode(1)
GetActiveWindowID(id)
if id<>WinID then
KeyPress(KeyCode, 400)
else
KeyUp(KeyCode)
end if
else
SetInputMode(1)
KeyPress(KeyCode, 400)
end if
end function
#支持最小化的模拟按键函数
function myKeyUp(KeyCode)
SendWindowMessage(WinID, &h001c, 1, 0)
SetInputMode(1)
KeyUp(KeyCode)
end function
//好了,从这里开始就是重点了,我会一个一个解释!
#初始化全局数据
function initData //定义个子函数,名字叫initdata的函数!
GetActiveWindowID(WinID)//读取窗口ID,并把窗口ID保存到winid里面!很多新手以为winid又是个特别的函数,实际上不是 .因为定义的窗口ID是winID,
//大家看到最上面的定义的全局变量了么!
print(winID)//这个为了方便新手学习!可以把ID输入出来!
bloodkey=GetConfigString("加血的按键")//到这里可能很多人要问了.bloodkey什么意思.blood是红的意思key是按键的意思,合起来嘛!除非你是傻子!
//呵呵,开玩笑了
//下面雷同.
dazuokey=GetConfigString("打坐的按键")
jinengkey=GetConfigString("技能的按键")
daguaikey=GetConfigString("打怪的按键")
//上面返回的是字串,下面返回的是数字.就这些区别
//他们会把返回的值保存到bloodDrink里面,当然你用眼睛是看不到他是什么数值的!
bloodDrink=GetConfigNumber("喝红百分比")
dazuobloodNeedSit=GetConfigNumber("打坐百分比")
//上面这些代码如果你删掉了.你点设置.里面肯定没有了!
#内存地址计算
//到这里,大家要注意了!有人看到这里就感觉很无力的感觉.
//你一句一句读下读.发现没有!里面的函数大部分都是最上面定义的变量!
//下面的示例利用 CNum 函数把 基地址 转换为数值类型。
addFirst=CNum(GetConfigString("基地址"))
//下面住要是计算了.我还是解释下吧!
//读 基地址. 就是CNum(GetConfigString("基地址")的值.读出来它的值并把他保存到numbrr1里面.这个number1非固定函数
//可以改成自己习惯的
ReadMemory(addFirst, 2, Number1)
//下面就是计算了 比如3=2+1这类的.
addSecond=Number1+&H28
ReadMemory(addSecond, 2, Number3)
addNowBlood=Number3+&H278
addAllBlood=Number3+&h2B0
addTarget=Number3+&h8cc
//下面这句 的意思是 要子函数initdata运行正确才会结束这个函数!
initData=true
end function
#取得当前血的百分比
//这里都是子函数的调用了.慢慢的研究下,就会懂了
function GetBloodPercent
ReadMemory(addNowBlood, 2, NowBlood)
ReadMemory(addAllBlood, 2, AllBlood)
GetBloodPercent=NowBlood*100/AllBlood
wait(10)
print(nowblood)
end function
#检查血和MP
function CheckBloodMP
BloodPercent=GetBloodPercent()
#喝红药
if GetBloodPercent()<=bloodDrink then
myKeyPress(bloodKey,100)
end if
#打坐
if GetBloodPercent()<=dazuobloodNeedSit then
myKeyPress(dazuokey,100)
do
Wait(20)
loop until GetBloodPercent()>=99
mykeypress(dazuokey,100)
end if
end function
#打一轮怪
function Fight
myKeyPress("TAB",100)
wait(80)
do
myKeyPress(daguaikey,100)
wait(100)
mykeypress(jinengkey,10)
wait(50)
ReadMemory(addTarget, 2, TargetID)
print(targetid)
loop until TargetID<80000000
end function
function main
if not initData() then
exit function
end if
while true
CheckBloodMP()
Fight()
mykeypress("F1",100)
wend
end function
呵呵.今天先讲到这,记的看贴要顶哦!为了让更多的人学会!AQ顶下吧.哈哈 参考技术B 内存挂是内存CALL啦……
就是调用游戏内部的函数
网上大部分人内存挂都用delphi写挂,
下面是个例子:
【时间获取i控制】
procedureiTForm1.Timer2Timer(Sender:iTObject);
begin
Ifi(CheckBox5.checked)iandi(ComboBox16.text<>'0')ANDi(gjtime1<strtoint(edit38.t
ext))then
gjtime1:=gjtime1+1;//攻击的延时。用来使这个变量通过这个timer不停的自加1一直加到延时等于想攻击的时间。比如我设置的攻击。是3秒按一下。那这个就是自加到3,然后等调用的地方清0edit38里放着需要等到的时间。checkbox5是用来检测是否启用了这个功能。combobox是用户选择的快捷键。如果这个没有设置。是0的情况。也认为是没有启用这个功能。以下的都跟这个是一样的
Ifi(CheckBox6.checked)iandi(ComboBox17.text<>'0')andi(gjtime2<strtoint(edit39.text))then
gjtime2:=gjtime2+1;
Ifi(CheckBox7.checked)iandi(ComboBox18.text<>'0')andi(gjtime3<strtoint(edit40.text))then
gjtime3:=gjtime3+1;
Ifi(CheckBox8.checked)iandi(ComboBox19.text<>'0')andi(gjtime4<strtoint(edit41.text))then
gjtime4:=gjtime4+1;
Ifi(CheckBox9.checked)iandi(ComboBox20.text<>'0')ANDi(fztime1<strtoint(edit22.text))then
fztime1:=fztime1+1;
Ifi(CheckBox10.checked)iandi(ComboBox21.text<>'0')andi(fztime2<strtoint(edit23.text))then
fztime2:=fztime2+1;
Ifi(CheckBox11.checked)iandi(ComboBox22.text<>'0')andi(fztime3<strtoint(edit24.text))then
fztime3:=fztime3+1;
Ifi(CheckBox12.checked)iandi(ComboBox23.text<>'0')andi(fztime4<strtoint(edit20.text))then
fztime4:=fztime4+1;
Ifi(CheckBox13.checked)iandi(strtoint(edit25.text)>0)and(huanidtime<strtoint(edit25.text))then
huanidtime:=huanidtime+1;
Ifi(CheckBox1.checked)iandi(strtoint(edit17.text)>0)iand(ComboBox1.text<>'0')and(hptime<10)ithen
hptime:=hptime+1;
Ifi(CheckBox2.checked)iandi(strtoint(edit18.text)>0)iand(ComboBox2.text<>'0')and(mptime<10)ithen
mptime:=mptime+1;
ifi(CheckBox18.checked)iandi(strtoint(edit52.text)>0)iandi(combobox25.text<>'0')andi(bbtime<strtoint(edit52.text))then
bbtime:=bbtime+1;
ifi(CheckBox4.checked)iandi(combobox4.text<>'0')ithen
huanwqtime1:=huanwqtime1+1;
ifi(CheckBox4.checked)iandi(huanweizhi<>0)ithen
huanwqtime2:=huanwqtime2+1;
edit7.Text:=Concat('攻',inttostr(gjtime1));
edit8.Text:=Concat('攻',inttostr(gjtime2));
edit9.Text:=Concat('攻',inttostr(gjtime3));
edit10.Text:=Concat('攻',inttostr(gjtime4));
edit11.Text:=Concat('辅',inttostr(fztime1));
edit12.Text:=Concat('辅',inttostr(fztime2));
edit13.Text:=Concat('辅',inttostr(fztime3));
edit14.Text:=Concat('辅',inttostr(fztime4));
edit48.Text:=Concat('换',inttostr(huanidtime))i;
edit15.Text:=Concat('HP',inttostr(hptime))i;
edit16.Text:=Concat('MP',inttostr(Mptime))i;
edit49.Text:=Concat('宝',inttostr(bbtime))i;
edit55.Text:=Concat('武',inttostr(huanwqtime1))i;
edit56.Text:=Concat('器',inttostr(huanwqtime2))i;
//这些是把这些变量都用一个text表输出出来。我好测试一些问题看着。没什么用
end;
这是第2个timer。用来监控时间的。他用来把那些变量每秒+1。让各自函数分别检测这些变量来判断是否应该执行对应的操作。比如喝血cd。技能cdi以及打怪时间,换怪时间,i换武器时间等等 参考技术C 内存挂(顾名思义就是内存挂了)解释为烧掉或者损坏。
这个名字的由来是从一个死去的人,照片挂在墙上来的。民间常说这个人挂了就是这个意思。 参考技术D 5天会用delphi写完美内存挂
变量定义的部分就不发了。没什么意义。反正用到什么去定义什么就好了。先发主函数
【主循环】
procedure TForm1.Timer1Timer(Sender: TObject);//主循环
begin
xinxi;//刷新个人信息
guaixinxi;//刷新怪物信息
xuanguai;//执行选怪
checkwuqi;//检测武器持久是否需要更换
hpmpbh;//红蓝保护
dopickup;//执行拣取
dofz;//检测辅助技能/物品更换
doatt;//执行攻击
huanguai;//是否需要换怪。是否打怪超时间
end;
参考资料:http://www.chinadforce.com/viewthread.php?tid=927192
C语言中啥叫内存泄露?
一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显式释放的内存。应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。以下这段小程序演示了堆内存发生泄漏的情形:void MyFunction(int nSize)
char* p= new char[nSize];
if( !GetStringFrom( p, nSize ) )
MessageBox(“Error”);
return;
…//using the string pointed by p;
delete[] p;
当函数GetStringFrom()返回零的时候,指针p指向的内存就不会被释放。这是一种常见的发生内存泄漏的情形。程序在入口处分配内存,在出口处释放内存,但是c函数可以在任何地方退出,所以一旦有某个出口处没有释放应该释放的内存,就会发生内存泄漏。 参考技术A 在内存中申请空间,但是在使用后没有销毁,这个空间的引用不在了,但是未被释放,会对安全性造成威胁 参考技术B 内存泄漏通常是指分配出去的内存使用完毕后没有释放掉,未被收回。长此以往,当再要求分配内存时,没有足够的内存可以分配,就会报出内存泄漏(memory leak)。 参考技术C 申请了内存,而没有释放内存。
如执行了如int *p=(int *)malloc(sizeof(int));的语句,但没有在程序末尾用free(p)释放内存,申请的内存就会一直处于被占用状态,就是内存泄露。
谢谢采纳! 参考技术D 就是申请空间后没有及时注销,导致课分配内存越来越小。
以上是关于啥叫内存挂?懂行的来的主要内容,如果未能解决你的问题,请参考以下文章
linux设置虚拟内存(swap)解决mysql因内存不足挂掉的故障