暗黑3逆向分析走路CALL特征码与代码编写

//寻路

typedef struct _Move_Struct

{

float x;

float y;

float z;

ULONG MapId; //?

}Move_Struct, *PMove_Struct;

void MoveToCoord(float x, float y, float z)

{

__try

{

Move_Struct Move = {0};

Move.x = x;

Move.y = y;

Move.z = z;

__asm

{

mov eax, dwCoordBase

mov eax, [eax]

mov eax, [eax + 778h]

mov eax, [eax + 38h]

mov Move.MapId, eax

}

PVOID pMove = (PVOID)&Move;

ULONG u1;

__asm

{

mov eax, dwCoordBase

mov eax, [eax]

mov eax, [eax + 8B0h]

mov eax, [eax + 148h]

mov eax, [eax]

add eax, 10A0h

mov edi, eax        //dwMySelfObject ?

mov ecx, [edi + 380h]

mov esi, [ecx]

mov eax, [esi + 4]

push 0

push 42C80000h

push -1

push 0

push 0000777Ch

push -1

push 0

push 200010h

push 00011060h

push 0

push 0

push pMove

mov u1, eax

call eax

}

push 41BF900B

push 45325FD0

push 45324896

mov edx,esp

push 0

push 0A9E402C

push 0FFFFFFFF

push 0

push 0000777C

push 0FFFFFFFF

push 0A9E402C

push 00200010

push 00011068

push edx

call 00B4A550

add esp,0c

50 8B 46 04 83 EC 08 D9 5C 24 04 8D 55 E0 D9 45 18 D9 1C 24 52

下1

0097998A        |.  51                    push    ecx

0097998B        |.  D91C24                fstp    dword ptr ss:[esp]

0097998E        |.  6A FF                 push    -1

00979990        |.  D945 14               fld     [arg.4]

00979993        |.  6A 00                 push    0

00979995        |.  53                    push    ebx

00979996        |.  6A FF                 push    -1

00979998        |.  51                    push    ecx

00979999        |.  D91C24                fstp    dword ptr ss:[esp]

0097999C        |.  52                    push    edx

0097999D        |.  D9EE                  fldz

0097999F        |.  50                    push    eax                                    ;  Diablo_I.00B4A410

009799A0        |.  8B46 04               mov     eax, dword ptr ds:[esi+4]              ;  Diablo_I.00B4A410

009799A3        |.  83EC 08               sub     esp, 8

009799A6        |.  D95C24 04             fstp    dword ptr ss:[esp+4]

009799AA        |.  8D55 E0               lea     edx, [local.8]

009799AD        |.  D945 18               fld     [arg.5]

009799B0        |.  D91C24                fstp    dword ptr ss:[esp]

009799B3        |.  52                    push    edx

009799B4        |.  FFD0                  call    near eax      00B4A410              ;  //走路call2  nop不能走eax=00B4A410

009799B6        |.  E8 3511FCFF           call    0093AAF0

009799BB        |.  5F                    pop     edi                                    ;  d3d9.4B68F4A4

009799BC        |.  5E                    pop     esi                                    ;  d3d9.4B68F4A4

009799BD        |.  B8 01000000           mov     eax, 1

009799C2        |.  5B                    pop     ebx                                    ;  d3d9.4B68F4A4

009799C3        |.  8BE5                  mov     esp, ebp

009799C5        |.  5D                    pop     ebp                                    ;  d3d9.4B68F4A4

009799C6        \.  C3                    retn

83 EC 08 D9 5C 24 04 8B CF D9 45 0C D9 1C 24 50

下6 //走路call nop不会走路

00B4A503         |.  8B4D 2C               mov     ecx, [arg.10]

00B4A506         |.  D91C24                fstp    dword ptr ss:[esp]

00B4A509         |.  D945 1C               fld     [arg.6]

00B4A50C         |.  51                    push    ecx

00B4A50D         |.  8B4D 20               mov     ecx, [arg.7]                           ;  Diablo_I.013E4458

00B4A510         |.  52                    push    edx

00B4A511         |.  8B55 18               mov     edx, [arg.5]                           ;  Diablo_I.01572994

00B4A514         |.  50                    push    eax                                    ;  Diablo_I.00B4A410

00B4A515         |.  8B45 08               mov     eax, [arg.1]

00B4A518         |.  51                    push    ecx

00B4A519         |.  51                    push    ecx

00B4A51A         |.  D91C24                fstp    dword ptr ss:[esp]

00B4A51D         |.  52                    push    edx

00B4A51E         |.  D945 10               fld     [arg.3]

00B4A521         |.  53                    push    ebx

00B4A522         |.  83EC 08               sub     esp, 8

00B4A525         |.  D95C24 04             fstp    dword ptr ss:[esp+4]

00B4A529         |.  8BCF                  mov     ecx, edi

00B4A52B         |.  D945 0C               fld     [arg.2]

00B4A52E         |.  D91C24                fstp    dword ptr ss:[esp]

00B4A531         |.  50                    push    eax                                    ;  Diablo_I.00B4A410

00B4A532         |.  E8 792AD9FF           call    008DCFB0                               ;  //走路call nop不会走路

00B4A537         |.  C787 68010000 0000000>mov     dword ptr ds:[edi+168], 0

00B4A541         |.  5F                    pop     edi                                    ;  d3d9.4B68F4A4

00B4A542         |.  5E                    pop     esi                                    ;  d3d9.4B68F4A4

00B4A543         |.  5B                    pop     ebx                                    ;  d3d9.4B68F4A4

00B4A544         |.  8BE5                  mov     esp, ebp

00B4A546         |.  5D                    pop     ebp                                    ;  d3d9.4B68F4A4

00B4A547         \.  C2 3000               retn    30

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

仅供技术研究交流 切勿用于非法用途

时间: 2024-10-22 22:10:08

暗黑3逆向分析走路CALL特征码与代码编写的相关文章

c++反汇编与逆向分析 小结

第一章  熟悉工作环境和相关工具1.1 熟悉OllyDBG  操作技巧1.2 反汇编静态分析工具 IDA(最专业的逆向工具)    快捷键    功能     Enter     跟进函数实现     Esc       返回跟进处    A         解释光标处的地址为一个字符串的首地址     B         十六进制数与二进制数转换    C         解释光标处的地址为一条指令     D         解释光标处的地址为数据,没按一次将会转换这个地址的数据长度   

IOS逆向分析——GL脚本的提取

总结:要逆一个程序必须清楚地知道程序的结构和常用的API函数,不清楚一个程序而去逆出结果是不可能滴 首先是glsl脚本运行的全过程,第一步是为shader的运行创建一个容器GLuint glCreateProgram(void),第二步是把编译好的shader附加到程序void glAttachShader(GLuint program, GLuint shader),编译好的shader可以是多个所以第二步可以重复多步把每一个编译好的一一附加到程序,顶点shader和像素shader一一成对,

Android逆向分析(2) APK的打包与安装

http://blog.zhaiyifan.cn/2016/02/13/android-reverse-2/ 2/18日增加对aidl和java编译的描述. 前言 上一次我们反编译了手Q,并遇到了Apktool反编译直接crash的问题,虽然笔者很想在这次解决这个问题,但在解决途中,发现该保护依赖于很多知识,所以本次先插入一下,正所谓知其然知其所以然,授之鱼不如授之以渔,只有知道一些基本原理,才能让我们以后能自行解决更多问题. 那么,你知道么?从我们在Android Studio中,点击run,

逆向分析智能窗帘频射协议

近来我热衷于对家庭自动化设备的破解,然后将它们添加到我的Homekit集成包之中.这事情要从几个月前说起,当时我爸订购了大批量的RAEX 433MHz射频电动窗帘,以替代老式的手动式窗帘. 注意:你可以在Spotlight网店搜索Motion Motorised Roller Blind找到该窗帘. 我对这个电动窗帘非常满意,有了它我就不用跑上跑下的去打开/关闭窗户,可是为了控制它们,你需要购买RAEX的遥控器.RAEX有许多不同类型的遥控器产品,其中我选择购买了以下两种遥控器: R 型遥控器

Android动态逆向分析工具ZjDroid--脱壳神器

项目地址:https://github.com/BaiduSecurityLabs/ZjDroid 前提条件: 1.Root手机一部 2.须要通过Xposed installer( http://dl.xposed.info/latest.apk)安装Xposed Framework; 一.ZjDroid工具介绍 ZjDroid是基于Xposed Framewrok的动态逆向分析模块,逆向分析者能够通过ZjDroid完毕下面工作:1.DEX文件的内存dump2.基于Dalvik关键指针的内存Ba

逆向分析底纹

工作需要会被要求还原某个证书底纹,一般解决的思路是到网上找,如果找到了就直接用,如果找不到了相同的就找近似的凑合用,如果连近似的底纹都没有那我们是不是就没有办法了呢?有的,我们可以直接逆向分析出它最基本的单元,然后用photshop的填充功能生成即可. 既然用的是逆向分析,那么我们应该知道正向是怎么回事! 一般证书底纹是由一张二方连续贴图或者四方连续贴图拼接而成的,我这里称这张贴图为原子贴图,原子贴图的特征为"它是底纹里面最基本的那个单位,不能被拆分了",只要制作好了这个原子贴图,那么

TI(德州仪器) TMS320C674x逆向分析之一

一.声明 作者并不懂嵌入式开发,整个逆向流程都是根据自身逆向经验,一步一步摸索出来,有什么错误请批评指正,或者有更好的方法请不吝赐教.个人写作水平有限,文中会尽量把过程写清楚,有问题或是写的不清楚的地方,后面再慢慢修改. 二.正向开发流程 C语言开发,开发工具使用CCS(Code Composer Studio,基于eclipse开发的),有过开发经验的都会很容易上手,新建test工程,选择C674x,输出文件为ELF格式,如图所示: 编译成功后,会生成test.out文件(ELF格式). 使用

对Xposed的全面分析(一)--- xposedInstall apk文件,逆向分析

本次分析主要是 对源代码的分析, 分成两块1. xposedInstall 逆向分析java代码, 2. 分析框架 替换的app_process和框架hook的原理. 第一部分: 主要是希望分析的尽量透彻,这是第二次分析AnDa,之前对第二部分分析完(源码看过,文献多次阅读)之后理解不深刻,而且当时第一部分根本就没当回事,因为做项目比较赶.所以现在为了将漏网之鱼一网打尽,决定"内外"兼修,java和C++带上系统一起学习总结一下,达到融汇贯通就可以了. 之所以再次分析xposed是觉得

七夕蠕虫“XX神器”逆向分析

七夕蠕虫“XX神器”逆向分析 首先给各位无良媒体记者跪了,七夕那天刚从公司拿到样本的时候还以为是主管随便到网上扒了个木马demo给我练手,第二天看新闻才知道这小玩具已经搞得满城风雨,媒体竟然称它为“超级手机病毒”(-_-#)不得不感叹混安全圈想装逼简直太容易了.在此强烈谴责这种夸张报道,不仅向公众传递错误信息,也会影响孩子的价值观.短短今天说这个apk没有任何研究价值,虽然技术是非常拙劣,但是其利用短信不会审核恶意链接的性质传播的方式倒是令人眼前一亮.下面就来瞧瞧这个“XX神器”的真面目. 从恶