吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 36263|回复: 307

[原创逆向图文] 天龙N部游戏逆向分析

  [复制链接]
30659653 发表于 2020-4-5 17:17 | 显示全部楼层 |阅读模式

本帖最后由 30659653 于 2020-4-7 16:10 编辑

游客,如果您要查看本帖隐藏内容请回复

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

武侠游戏的核心首先是一套挂机功能.能自动打怪,寻路,检测血量自动吃药,捡东西.

在追数据之前,要说的一句话是:一定要懂正向,了解数据结构,脑中构思功能间的调用关系.

比如打怪功能.,点击怪物之后触发的功能调用可能如下
[C] 纯文本查看 复制代码
鼠标点击CALL
{
        ..判断点的什么东西call
        {
            ....选中怪物call
            {
                ......走路call
                {
                    ..........攻击call
                    {
                        技能CALL
                        {
                            ...
                            ...
                        }
                    }
                }
            }
        } 
}



这是调用关系的构思,同时还要捋清楚数据结构,比如技能对象的结构
[C] 纯文本查看 复制代码
struct 技能对象
{
技能ID
当前是否可用
攻击距离
消耗MP
伤害值
恢复值
技能类型
冷却
学习等级
}


脑中只有有了框架才会有突破口和追的方向.

接下来开始正式工作,首先要把人物自身对象结构找到.这个突破口比较多,比如利用人物的血量变化搜索到HP(同理MP/真气等) ,只要找到人物的一个属性(HP),那么基本等于找到了人物对象

                               
登录/注册后可看大图

HKGLO[MML@S3@9W}M2@X(`K.png
左上角数值显示,人物当前血量为3871,进入CE搜索四字节的3871 clipboard(32).png

                               
登录/注册后可看大图

然后,想办法让这个血量变化,换装备/掉血/吃药.这里我选择吃药,比较方便.

                               
登录/注册后可看大图

再次搜素4733
clipboard(30).png

                               
登录/注册后可看大图

直接得到一条线索.接下来要做的就是追数据来源,所有新手们都知道,直接搜到的地址下次开游戏就不一定是这个地址了.要追到他的来源(基址),基址是固定不变的(游戏更新会变).

接下来开始追来源

                               
登录/注册后可看大图

在找到的血量 右键=>查找是什么写入这个地址. 弹出来的页面没有变化,因为我们还没有改变血量,就没有写入内容. 再次吃药! clipboard(36).png

                               
登录/注册后可看大图

血量上升的同时,收到一条写入数据. 观察这条代码不难理解,将新的血量写入到人物血量地址.,eax是新的血量,[ecx+0x2D00]是存储的血量.

                               
登录/注册后可看大图

clipboard(11).png
然后继续搜索ecx的值0x4F1FA458,看是什么地方存储了这个值.记得标选HEX(16进制)

                               
登录/注册后可看大图

clipboard(8).png
将得到的结果 右键点击=>是什么访问    这里不需要再找写入了,找访问就可以(它存储的不再是人物血量了,而是存储的人物某个结构的指针,是不停的访问这个结构的,所以通过访问就能得到数据)
clipboard(24).png
如上图所述,都是+0x4的偏移,在选择的时候有两个选择方法:
1.不要选这种左右都是同一个寄存器的,会让你分析的时候不知道给你的数值是左边的还是右边的.具有干扰性
clipboard(37).png

2.尽量不要选择来源是eax的,因为eax还可以作为call的返回值,容易追错地方.(纯新手容易犯错)
(什么是call的返回值??在写C语言代码的时候每个函数都可以给他写一个返回值,return给一个东西.那么在汇编代码里面,所有的call只要有返回值都会在call内部的结尾赋值给eax)

继续,我们选中一行合适的代码继续往下分析.追0x51E539F8
clipboard(3).png

                               
登录/注册后可看大图

得到三个结果,都选中,数量不多,挨个右键查看访问.发现只有第二个有访问数据.所以其他两个不是我们的目标/
clipboard(1).png

                               
登录/注册后可看大图

从第二个得到如下图数据
clipboard(39).png

                               
登录/注册后可看大图

我们继续选择合适的一行追.0x423E5DC8
clipboard(41).png
又得到这么多数据,继续按照前面的方法挨个访问.
clipboard(13).png
其中两三个数据都有访问,并且访问得到的偏移不同,这时可能有的数据特别难追追不通,也可能每条数据都可以使用.需要我们都去追一下,我已经挨个试过了都没问题都能追到,最后我选择的追+54的偏移.
clipboard(26).png

接下来再次搜索我们便得到了四条基址
clipboard(38).png
这个时候还不要高兴的太早,还有几个要注意的地方!!!
第一,一定要考虑这个游戏是不是模块动态加载.如果是那么基址一定要用模块+偏移的方式来写,如果不是,那么绿色的地址可以直接用.很巧,这个游戏是动态加载的.双击基址就可以查看他的模块+偏移



这才是他的最终结果.
还有一点就是,尽量使用主模块+偏移. 这个游戏的主模块就是Game.exe
我再双击另一个基址大家看一下他的模块+偏移是什么
clipboard(22).png
是一个陌生的模块,可以用但没必要.

这时一整条人物血量的基址得到了.
[[[[[Game.exe+ABABC0]+54]+1a0]+4]+2D00]//人物血量
这个时候需要读者思考一下.大家都写过结构体,用过结构体指针+偏移表示某个成员. 也就是说人物血量作为人物结构的一个成员,他的偏移是2d00,那么是不是表示在同一层下面还有其他成员.
为了方便观察我们打开OD附加游戏
(附加过程中会发现附加失败,因为咱们用CE下过写入和访问断点.只要点一下ce的小电脑图标重新选择一下游戏进程就可以了.)

clipboard(27).png

在OD中 dd 4F1FD158就直接看到了血量的数据(16进制的),然后再dd 4F1FD158-2d00就是本层结构的头部. 我们从头开始看看,看着感觉像是什么数据都把他转换为10进制在游戏里找找对比一下
clipboard.png
比如上图,看到一个1F,选中之后右键修改,显示10进制位31.回到游戏观察一下人物属性,人物的等级为31
clipboard(17).png

                               
登录/注册后可看大图

那么2d00改为6c就是表示人物等级
就继续往下翻,或者说需要什么人物属性就到这里找什么.我把我找到的直接分享给大家.
+38//名称
+6C//等级
+80//称号

+2d00 //当前血量
+2d04//当前蓝量
+2d08//拥有经验
+2d14//精力
+2d18//精力上限
+2d1c//活力
+2d20//活力上限

+2d50//体力
+2d54//定力
+2d58//身法

+2d60//力量
+2d64//灵力
+2d68//外功功力
+2d6c//内功功力
+2d70//外功防御
+2d74//内功防御

+2d78//生命上限
+2d7c//蓝量上限
+2d88//命中
+2d8c//闪避
+2d90//会心攻击
+2d94//会心防御

然后大家观察发现,这个结构下面并没有人物的坐标.看来游戏把坐标结构和人物属性结构分开了.
[[[[[Game.exe+ABABC0]+54]+1a0]+4]+2D00]//人物血量
观察一下这行数据. [+4]下面是人物结构,坐标不在这里他有可能在[+8]或者说他可能在前面的几层结构下面,可能在+54也可能在+1A0.这样一来范围太广无从下手.
方法有两个:
1.重新打开CE搜索人物地址,和搜索血量一样,不过人物坐标是个float(浮点)类型,不要选错
2.利用网上的遍历工具一层一层找坐标

我都用过了,方法不再展示,直接贴数据:
[[[[Game.exe+ABABC0]+54]
        +2C//人物X坐标
            +30//人物Z坐标
        +34//人物Y坐标


这里我们所需要的人物属性已经搜完了.接下来是找怪物
找怪物的话突破口在哪,从什么地方下手呢.打开怪物血量看一眼,不显示HP数值,也不显示MP.
只有怪物ID露在外面,那就搜索怪物的ID:花港毒蜂
clipboard(53).png

clipboard(29).png
得到800+数据,我们跑到别的地方,让身边的怪物不再是花港毒蜂,因为我们要找身边怪物,存储身边怪物的数组或者链表等结构是一直存在的,当我们身边怪物变成小狗,他就会存储小狗.  
那么我们去别的地方看看,搜ID:白堤柳鬼


clipboard(4).png
clipboard(51).png
出去第二个带身 字的 ,就是我们要的结果.那么哪些名称才是在怪物对象下面呢.???
我给大家分析一下,我们都学过类,学过继承,无论是人物还是怪物,游戏程序员在写的时候会有一个父类,然后人物和怪物会继承那个父类.在内存中观察的话,父类结构放在子类的头部,也就是说,人物和怪物对象的头部结构应该很相似.我们就利用这一点,用得到的怪物名称地址减去0x38,dd一下(因为人的名称偏移是38)
首先人物对象的头部结构是这样的
clipboard(6).png

                               
登录/注册后可看大图

然后挨个dd得到的数据-38,最后有一个比较相似的,其他的都截然不同,如下图


                               
登录/注册后可看大图

验证一下,+6c也是等级,和人物的一样,说明没找错

                               
登录/注册后可看大图


上面的这个过程极其麻烦,要忍住寂寞,保持耐性.

基础到这里结束,接下来是重点部分了,寻找怪物遍历
clipboard(47).png
我们在头部下硬件访问断点,
因为周围的怪物是在不断变化的,怪物列表在不停的访问怪物对象,所以我们要在怪物对象地址处下断

clipboard(46).png
断在上图位置,这个游戏大部分是二叉树结构,大家做好心理准备,我开始走一次正常分析路线,把路上的坑给大家分析一遍
这个eax就是咱们下断的怪物对象,并且发现每次下断点eax在不断变化,说明前面有代码把所有的怪物都遍历了一遍,那么咱们就追eax的来源就会找到怪物遍历的地方.开始追!
clipboard(14).png
直到最后追到这么一个地方,要继续追eax了.但是eax上面有个call,那么我们需要进入call追eax,给call下断点,断下之后按F7进入call内部,这时下面这个结构我们一步步分析
clipboard(19).png

如下图的循环就是二叉树遍历,回想二叉树在C语言中是什么样的写法,先传递一个树根节点先遍历左子树,然后遍历右子树.  
clipboard(54).png

                               
登录/注册后可看大图

在循环中,[eax]就是+0得到左子树   [eax+8]就是+8得到右子树. 通过循环把所有节点扫描出来
clipboard(23).png

                               
登录/注册后可看大图

那么这个树根节点是谁呢?就是这个循环头部的eax,然后开始追她的来源.来自[esi+4],在追esi
clipboard(16).png
esi来自[ecx+40]    //[[ecx+40]+4],再追ecx
clipboard(57).png


在外层得到一个基址,不要忘记是动态加载,点击E按钮查看所有模块,找到主模块Game.exe
2.png

Game.exe的地址是00BB0000
clipboard(45).png

然后用166ABC0-00BB0000得到偏移ABABC0
Game.exe+ABABC0(和人物基址偏移一样)

这个时候我们得到了树根  然后观察二叉树结构也能知道遍历的规则,最后就能得到所有的二叉树节点.
这里就可以编程实现遍历了,我们是在逆向分析游戏,就不教学写代码了.代码不会写的朋友要多敲代码.
我们写代码便利观察发现周围的花草树木NPC怪物人物宠物全部遍历出来了,这是什么情况.我们得到的竟然不是怪物二叉树而是所有环境对象的二叉树.

掉进坑里了,这个时候思考一下文章开头所说的游戏结构.
我们给怪物对象下断点断在了大环境对象中,那么他细致分类应该是在遍历结束之后.我们回到给怪物对象下断点断下的地方.


                               
登录/注册后可看大图

这个地方的eax还是大环境中的所有对象,那么下面的代码应该会有细致对象的分类遍历

D:\weixinobU7VjmLCuVLSHl9apKGn-NmEXzU\92b1b286486040c18b0edfca5a0bcf09\clipboard.png

                               
登录/注册后可看大图

clipboard(12).png
下面的代码就是这些,一行一行分析并没有做分类处理,然后进入每个CALL看看,没有任何异常,直到最后一个CALL,里面是一个二叉树结构!!!!
这个地方进行判断,如果对象头部是-1也就是FFFFFFFF就跳转到最后一个call(新的二叉树遍历)


call内部结构如下图所示
clipboard(7).png

                               
登录/注册后可看大图

我们按照之前的方法可以轻松找到树根.内部遍历也和之前的遍历一样.
最后遍历出内容发现.得到的内容范围确实缩小了.只剩下了玩家.自己.NPC.怪物.掉落物
我们要细分就需要手动分析对象结构了.分别拿出一个类型,挨个对比发现,在便利的道德节点下
+14]+20]+8]表示的是对象的类型
+14]+20]+8]//分类标志//6其他玩家//4npc(4包含怪)//8自己//1凋落物//9珍兽
这个过程需要耐心思考耐心比较,过程很痛苦.

在二叉树遍历的过程中,我们需要对这个+14]+20]+8]进行判断筛选怪物

经过细化我们找到了,npc和怪物类型是4,但是该怎么区分npc和怪物呢?如果不区分的话打怪就会选中NPC从而出错.
我在结构中继续找,没有找到区分NPC和怪物的地方,那么只能能从另一个思路下手了.既然打怪会失败.那么会有什么提示呢.???进游戏看一下

                               
登录/注册后可看大图

他提示不能攻击此目标,进CE搜这句话
clipboard(20).png
clipboard(40).png
把这个地址放到OD中dd  然后下访问断点.再回到游戏攻击NPC,触发断点.看看是什么地方调用了它

断下之后点击一下上方的K按钮.调用来自都会显示出来
clipboard(18).png


                               
登录/注册后可看大图

然后我们给所有调用来自主模块的地方下断点.这些地方可能就是打印不能攻击那句话的CALL
下断之后 运行游戏,先不要进行任何攻击,如果哪些断点自己断了就把他删除,说明这个地方不是相关功能CALL,(功能CALL不会自己没事乱运行)

然后选一个NPC攻击,这些断点回一次断下,按照断下的顺序,给这些断点12345编号排序
clipboard(50).png

                               
登录/注册后可看大图

然后再选一个怪物进行攻击,发现他没有运行编号5的断点!!!!!!!
说明编号4内部进行了判断.重点分析编号4
问题又来了,这个函数的内部代码太多.那个地方才是判断呢.
我是用的方法是,头部下端,然后攻击NPC从上到下运行一遍,做一下标记
然后攻击野怪再运行一遍.找到他们那些代码运行了哪些没运行,没运行的代码前面的跳转就是关键判断,最后定位在了这个CALL.就是怪物NPC判断CALL
选中人物自身返回1,选中怪物返回0,选中NPC返回2
那么我们只需要把它添加进入二叉树中,把返回值为0的对象选出来进行攻击即可.
clipboard(2).png
另外一件需要判断的事情是,打怪不能乱打不能看见怪物就上去打,为了考虑效率,先打距离自己最近的怪物,那么就应该在二叉树遍历中取出怪物的XY坐标和人物自身的XY坐标,计算出两者的X差值和Y差值,利用勾股定理计算出两者距离.需要注意的事情是,数据类型是float,不要写错,容易出错
clipboard(55).png

                               
登录/注册后可看大图
[C++] 纯文本查看 复制代码
//角色位置
float RX = *(float*)(Base1 + 0x2C);float RY = *(float*)(Base1 + 0x34);
//怪物位置
float GX = *(float*)(Attribute0 + 0x1E8);float GY = *(float*)(Attribute0 + 0x1EC);                                                        
//计算
float tempjuli = sqrtf(labs(RX - GX) * labs(RX - GX) + labs(RY - GY) * labs(RY - GY));



到这里,怪物筛选完成了,接下来是选中怪物的实现
选中怪物如何下手分析呢
我作为一个新手,目前能想到的起手方法就两种,
第一种就是利用发包CALL追功能.因为每个功能都会发包,只要从发包call往回走就能找到功能,但是线程发包除外,线程发包的话需要先追到线程外的数据来源,然后再往回追才是功能CALL
第二种是找突破口(简单说法),比如,我想找某个动作的调用call,可以先找到动作列表,然后得知某个动作的对象地址,然后给他下访问断点,使用动作时就会断下,然后可以追到动作.  再比如想追走路call,那么可以从人物的状态下手.静止不动可能状态为0,走路起来,状态改变,(一般改为1,也可能23456),最后搜索到人物状态的地址.那么给这个地址下写入断点,进行人物移动就会断下,就能找到功能call

我利用的是发包追CALL,为什么要用发包呢.游戏内的操作它是需要服务器去进行判断然后实现的,比如你打死了一个野怪,那么你需要告诉服务器你打死了野怪.

发包三大函数send sendto WSASend,ctrl+g分别输入这三个函数下断点,哪个正常断下就说明游戏用的哪个发包函数.如果ctrl+G找不到这三个函数,可以在函数名前面输入模块ws2_32.send这样去书写.

                               
登录/注册后可看大图



                               
登录/注册后可看大图

最后我们找到了,这个游戏使用的send发包.
在send函数头部下断点,然后回到游戏右键选中一个怪物,断点断下.
堆栈数据如图:
clipboard(58).png

                               
登录/注册后可看大图

data就是他的数据包,size是他的数据长度,
因为根据发包函数往回一层层的追发现这是线程发包,那么就需要在data右键数据窗口跟随. 在2c范围内给合适的一行数据下写入断,(删除发包函数的断点),然后会断在一个地方,再次运行起来,选择一只野怪,又会断下,这个时候就可以不停的返回上一层,把所有经过的主线程模块CALL都下断点(这些CALL中存在的选怪功能CALL),然后运行起来之后把自动断下的断点删除.   再次选怪,后把所有断下的CALL都挨个分析,看看他们的参数,找一个适合使用的CALL作为我们的选怪CALL
clipboard(34).png

                               
登录/注册后可看大图

最后确定了这个CALL比较好用,只有两个参数.第一个参数 push  1 第二个参数是目标ID.(在怪物对象下面可以找到)
然后传入ecx,就可以调用.

选怪功能完成了.接下来就是打怪
打怪同样可以用发包函数返回的方式找到一个技能调用CALL,只需要传入目标ID和技能ID就可以释放技能,但是这样找到的CALL会有距离限制,不会自动寻路.
技能CALL
[Asm] 纯文本查看 复制代码
push 0xBF800000
push 0xBF800000
push 0xBF800000
push 0x26                        //若是攻击技能,则为目标ID
push 0xFFFFFFFF
push 0xFFFFFFFF
push 0x0                        //技能ID
mov ecx,0x2C72DBA0        //[[[1DDA0D0]+128]+1b4] 
call 0x01728470                //GAME.EXE+408470

[Asm] 纯文本查看 复制代码
017275A1   .  F3:0F1087 E00>movss   xmm0, dword ptr [edi+E0]
017275A9   .  8B87 C8000000 mov     eax, dword ptr [edi+C8]
017275AF   .  83EC 0C       sub     esp, 0C                                        ;  esp压入三个参数BF800000
017275B2   .  8BCF          mov     ecx, edi                                       ;  [[[game.exe+ABA0D0]+128]+1b4]  //game.exe+ABA0D0
017275B4   .  F3:0F114424 0>movss   dword ptr [esp+8], xmm0
017275BA   .  F3:0F1087 DC0>movss   xmm0, dword ptr [edi+DC]
017275C2   .  F3:0F114424 0>movss   dword ptr [esp+4], xmm0
017275C8   .  F3:0F1087 D40>movss   xmm0, dword ptr [edi+D4]
017275D0   .  F3:0F110424   movss   dword ptr [esp], xmm0
017275D5   .  FFB7 D0000000 push    dword ptr [edi+D0]                             ;  非攻击技能:FFFFFFFF /攻击能能:野怪ID
017275DB   .  83EC 08       sub     esp, 8                                         ;  esp压入两个参数FFFFFFFF
017275DE   .  8BD4          mov     edx, esp017275E0   .  8902          mov     dword ptr [edx], eax
017275E2   .  8B87 CC000000 mov     eax, dword ptr [edi+CC]
017275E8   .  8942 04       mov     dword ptr [edx+4], eax
017275EB   .  FFB7 C4000000 push    dword ptr [edi+C4]                             ;  209/20A/217/21E  四个技能ID 15骑马 0普攻
[backcolor=inherit][backcolor=inherit]017275F1   .  E8 7A0E0000   call    01728470   
           

并且在调用这个技能封包CALL之前你需要先确定自己的技能的ID,需要遍历技能背包.因为有太多局限性,还需要寻路,我们暂时不用这个去打怪.我们可以使用按键CALL打怪.

让游戏内自动按下F1实现调用技能,这样的好处是按键之后他会自己跑到打怪的距离内.不需要我们再去计算距离.
clipboard(33).png

                               
登录/注册后可看大图

下面写一下按键CALL的寻找方法.
前面我们用的发包法,这里我们利用突破口.按下F1之后能不能用他会去判断F1上面有没有技能.,我们不断的改变F1上面的技能得到F1-F10的数组
打开CE,F1放上一个技能搜索未知初始值


                               
登录/注册后可看大图

切换技能位置搜索变动的数值.
clipboard(56).png

                               
登录/注册后可看大图

移走技能搜索0
clipboard(25).png

                               
登录/注册后可看大图

重复上述步骤,将最终得到的几个结果分别放到OD中dd一下,然后下访问断点,之后实用技能访问他们.
和前面的找CALL方法一样,在断下的地方开始返回,每个返回得到的CALL都有可能是按键CALL.
接下来分析剩下的断点的参数.找一个最合适的CALL作为按键CALL
clipboard(49).png

                               
登录/注册后可看大图

最后定位在这里,只需要传入一个1和一个下标(0-9)(F1-F10,C语言下标从0开始)就可以调用技能了.

到这里打怪功能已经实现了,我们需要吃药,可以把药品放在技能栏,检测到血量低于多少时按一下相应的键位.(人物血量前面已经得到基址)


                               
登录/注册后可看大图

本篇文章仅供于逆向学习,请勿用于非法用途,利用所学发掘漏洞完善软件,为游戏安全做出贡献.
有兴趣学习的小伙伴可以留言一起学习,另外,急需HB,想攒HB换个ID哈哈哈








clipboard(5).png
clipboard(9).png
clipboard(10).png
clipboard(15).png
clipboard(21).png
clipboard(28).png
clipboard(31).png
clipboard(35).png
clipboard(42).png
clipboard(44).png
clipboard(48).png
clipboard(52).png
clipboard(59).png

评分

参与人数 94威望 +1 HB +201 THX +61 收起 理由
一莫生人 + 1 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
lies + 1
再来壹瓶 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
白丁老师 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
NOP + 1
笑面虎 + 1
longge188 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
花盗睡鼠 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
luoyong5129 + 1 + 1
iebaye + 2
啊辉 + 1
Jawon + 1
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
行行行行行行 + 1
太阳神 + 2 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
消逝的过去 + 1
sjtkxy + 1 + 1
PDWORD + 4 + 1
yexing + 1
小黑白又白 + 1
飞刀梦想 + 1
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
luo271338515 + 1
xgbnapsua + 1
猪才怪 + 1 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
zyyujq + 2
偷懒的乔治 + 1 + 1
陈沦 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
fzm0001 + 1 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
zy2510 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
武清一点点 + 1 + 1
小菜虫 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
在天一方 + 2 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
zm315857235 + 1
pasqw111 + 1 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
炊烟 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
我是用户名 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
kickic + 1
菜猿后飞 + 1 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
我是好人 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
zwj00544 + 1
清风而已 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
无极剑圣啊 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
军工强国 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
hotD + 2 + 1
拿着雪糕 + 1
EMT + 1 + 1
hackysh + 1
hetao8003200 + 1
630994045 + 1

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 30659653 发表于 2020-4-5 17:29 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
黑猫 发表于 2020-4-5 22:12 | 显示全部楼层

大神你好~!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
我是墨白!! 发表于 2020-4-5 22:47 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
liuhao1909 发表于 2020-4-5 23:21 | 显示全部楼层

谢谢分享,学习一下

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
迟是 发表于 2020-4-6 08:37 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
gx8451 发表于 2020-4-6 10:32 | 显示全部楼层

膜拜大神!来学习了!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
2293225618 发表于 2020-4-7 20:27 | 显示全部楼层

游戏哪里下的,加我一个
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
309847695 发表于 2020-4-7 22:18 | 显示全部楼层

真是厉害!!!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
wyip 发表于 2020-4-7 23:28 | 显示全部楼层

谢谢分享。。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表