吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 273|回复: 1

[原创逆向图文] (图+源码+详细分析)全面分析购买药品NPC

[复制链接]
宝贝芽芽 发表于 2025-7-7 21:15 | 显示全部楼层 |阅读模式

全面分析购买药品NPC
分析如下:
一.首先打开购买药品对话框,需要
载入游戏,下BP SEND,然后返回游戏点NPC,此时出现购买药品对话框,然后查看堆栈,找到如下几个地址:
   0059880A 0059872E 005986F0 00510F08 0050FC85
第一二个下断,返回游戏走一下,发现会断下来,直接排除
第三个下断,太复杂,不像。先找后面的,如果不行再来详细分析
第四个下断有点像,注入如下代码:
push 0
push 0
push 0
push 0
mov eax,[5f6a7c]
mov eax,[eax]
mov ecx,05ea9f40
mov edx,3f2
call 005986c0
测试通不过。
第五个下断,原型如下:
图片1.jpg
所以,写入注入代码,如下:
经分析:前面两行为无用的代码,所以省掉
mov edx,05ea9f40
//mov eax,esi//测试时发现这句也可以省掉
call 00510eb4
二.然后追踪edx值的来源
1.看清楚上面的原型,其中edx=[ebx+4],所以我们要追踪ebx的来源,所以往上看,你会发现在
0050FC09   /E9 AF030000     JMP BMir.0050FFBD
这个地方有个跳转,如果在这儿下断,当返回游戏中点购药NPC时,OD不会断下来。所以如果我们用od追踪,将会十分困难。所以我这里采用OD+CE的方法。
2.下断,查明ebx的值,当然每次重新打开游戏时此值不一样。我这里,ebx=06778A80,于是在ce中搜索067787A0,然后查找访问该地址的代码,出现:
00473a63 mov ebx,[eax+04]
00473a66 cmp edx,[ebx+ecx*4]
此时,ebx=067469d8,进一步发现:
Ebx=[eax+04],其中eax=0115cef0,再搜索0115cef0的来源:
00566510mov eax,[ebx+5fb5c],其中ebx=7ff30010,继续搜ebx的来源,发殃:
[63e7c4] =7ff30010,综上所述:ebx=[[[[63e7c4]+5fb5c]+04]+4],所以edx=[ebx+4]
3.使用dd [[[[63e7c4]+5fb5c]+4]+4]+4查看,会发现里面的值就是edx.
三.用dephi写打开买药NPCcall,代码如下:
procedure TForm1.Button34Click(Sender: TObject);
begin
{
mov edx,05fef2d0//其中EDX=[EBX+4],所以追踪EBX的来源
call 00510eb4 //dd edx=[[[[63e7c4]+5fb5c]+4]+4]+4
}
  asm
     mov edx,$63e7c4
     mov edx,[edx]
     add edx,$5fb5c
     mov edx,[edx]
     add edx,4
     mov edx,[edx]
     add edx,4
     mov edx,[edx]
     add edx,4
     mov edx,[edx]
     mov ebx, $00510eb4
     call ebx
  end;
end;
好了,现在测试成功,可以打开药品npc了。然后呢,现在我要找点击买药中的买字后出现的窗口。
四.首先用bp send下断,跟踪到点击买后的CALL,原型如下:
买药NPC原型CALL
0048E2A8 0059880A 0059871F 0055BE7F 004EDD04
004EDCED    8B15 20665F00   MOV EDX,DWORD PTR DS:[5F6620]            ; BMir.00641D24
004EDCF3    8B12            MOV EDX,DWORD PTR DS:[EDX]
004EDCF5    A1 906A5F00     MOV EAX,DWORD PTR DS:[5F6A90]
004EDCFA    8B00            MOV EAX,DWORD PTR DS:[EAX]
004EDCFC    8B4D FC         MOV ECX,DWORD PTR SS:[EBP-4]             ; ecx=[ebp-4]
004EDCFF    E8 ACD90600     CALL BMir.0055B6B0   ; 买药NPC CALL
命令的来源:
//db [[[[[63e800]+010]+4]+4+4*4]+0d8],其中数组下标4代表第四项,买药
注入测试一下:
asm
mov edx,$ 5F6620
mov edx,[edx]
mov edx,[edx]
mov eax,$5F6A90
mov eax,[eax]
mov eax,[eax]
mov ecx,command   //字符串指针 @buy 打开卖对话框  @sell 打开买对话框  @main 主对话框(返回)
mov ebx,$0055B6B0   // @repair 打开修理对话框  @doexit退出
call ebx
end;
五.找选取物品CALL
原型如下:
005E7A65    57              PUSH EDI
005E7A66    8B45 08         MOV EAX,DWORD PTR SS:[EBP+8]
005E7A69    50              PUSH EAX
005E7A6A    8BCE            MOV ECX,ESI
005E7A6C    8BD3            MOV EDX,EBX
005E7A6E    8B83 DC000000   MOV EAX,DWORD PTR DS:[EBX+DC]
005E7A74    FF93 D8000000   CALL DWORD PTR DS:[EBX+D8]
写如下源代码测试:
push 0
push 0012facc
mov ecx,0
mov ebx,0681cdb0
mov edx,ebx
mov eax,[ebx+0dc]
call [ebx+0d8]
跟踪一下ebx的来源:dd [[[63e834]+10]+4]+1c里面放的值就是ebx的值
六.购买药品CALL
  0055C65B 004D9300 005DB248 005B59E7
原型如下:
005DB237    57              PUSH EDI
005DB238    8BCE            MOV ECX,ESI
005DB23A    8BD3            MOV EDX,EBX                              ; [ebx+0d8]
005DB23C    8B83 94000000   MOV EAX,DWORD PTR DS:[EBX+94]
005DB242    FF93 90000000   CALL DWORD PTR DS:[EBX+90]               ; [edx+0d8]
分析EBX的来源:其中EBX=0681ca80,此时:
mov eax,[ebx+04]
mov eax,[eax+esi*4],所以:
eax=[[ebx+04]+4],此时ebx=01162470,然后追踪其来源,此时
mov eax,[ebx+10],此时ebx=06832440,发现[63e834]=6832440
综合一下:
eax=[[[[63e834]+10]+4]+4]
以下测试成功,可以成功购买物品:
asm
    push 4          //固定
    mov esi,$b      //固定
    mov ecx,esi
    mov ebx,$63e834
    mov ebx,[ebx]
    mov ebx,[ebx+$10]
    mov ebx,[ebx+4]
    mov ebx,[ebx+4]
    mov edx,ebx
    mov eax,[ebx+$94]
    mov ebx,[ebx+$90]
    call ebx
  end;
本文章根据手把手项目开发 - 一站式开发项目培训平台中的视频教程整理而成,指导大师:QQ:1026165915,转载请注明出处。

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
一身旧雪 发表于 2025-7-7 23:04 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

1层
2层

免责声明

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

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


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

Powered by Discuz!

吾爱汇编 www.52hb.com

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