吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 13836|回复: 12
收起左侧

[原创] 新手学习反汇编之OD特征码

[复制链接]
hackking 发表于 2017-12-15 21:24
本帖最后由 hackking 于 2017-12-16 14:24 编辑

背景知识

  • 汇编知识
  • 进制转换

什么是特征码

特征码必须是某类或某个唯一的,比如,人具有思考的功能,但是所有人都具有,所以这只是人的特征。但是如果要找具体某个人,那么需要分析这个人具有哪些信息,如面部有疤痕,身高2米,长期活动范围等等。

那么反过来,需要找一个call的特征,那么要知道该功能具有什么信息。
在逆向工程中特征其实就是汇编指令对应的十六进制机器码,如:59 89 4D F8 6A 00 6A 00,对应的汇编代码就是:

59            pop ecx  
894D F8       mov [local.2],ecx
6A 00         push 0x0
6A 00         push 0x0

通过分析前篇test程序:

015D3EA0  /> \55            push ebp                                 ;  这里是test call
015D3EA1  |.  8BEC          mov ebp,esp
015D3EA3  |.  81EC CC000000 sub esp,0xCC
015D3EA9  |.  53            push ebx
015D3EAA  |.  56            push esi
015D3EAB  |.  57            push edi
015D3EAC  |.  51            push ecx
015D3EAD  |.  8DBD 34FFFFFF lea edi,[local.51]
015D3EB3  |.  B9 33000000   mov ecx,0x33
015D3EB8  |.  B8 CCCCCCCC   mov eax,0xCCCCCCCC
015D3EBD  |.  F3:AB         rep stos dword ptr es:[edi]
015D3EBF  |.  59            pop ecx                                  ;  test.01648053
015D3EC0  |.  894D F8       mov [local.2],ecx
015D3EC3  |.  6A 00         push 0x0
015D3EC5  |.  6A 00         push 0x0
015D3EC7  |.  68 0C60C601   push test.01C6600C                       ;  UNICODE "test"
015D3ECC  |.  8B4D F8       mov ecx,[local.2]
015D3ECF  |.  E8 95D2FCFF   call test.015A1169                       ;  call test1111
015D3ED4  |.  5F            pop edi                                  ;  test.01648053
015D3ED5  |.  5E            pop esi                                  ;  test.01648053
015D3ED6  |.  5B            pop ebx                                  ;  test.01648053
015D3ED7  |.  81C4 CC000000 add esp,0xCC
015D3EDD  |.  3BEC          cmp ebp,esp
015D3EDF  |.  E8 997EFBFF   call test.0158BD7D
015D3EE4  |.  8BE5          mov esp,ebp
015D3EE6  |.  5D            pop ebp                                  ;  test.01648053
015D3EE7  \.  C3            retn

=====================华丽的分割线==================

015D3E40  /> \55            push ebp                                 ; 这里是 test2 call
015D3E41  |.  8BEC          mov ebp,esp
015D3E43  |.  81EC CC000000 sub esp,0xCC
015D3E49  |.  53            push ebx
015D3E4A  |.  56            push esi
015D3E4B  |.  57            push edi
015D3E4C  |.  51            push ecx
015D3E4D  |.  8DBD 34FFFFFF lea edi,[local.51]
015D3E53  |.  B9 33000000   mov ecx,0x33
015D3E58  |.  B8 CCCCCCCC   mov eax,0xCCCCCCCC
015D3E5D  |.  F3:AB         rep stos dword ptr es:[edi]
015D3E5F  |.  59            pop ecx                                  ;  test.015D20AB
015D3E60  |.  894D F8       mov [local.2],ecx
015D3E63  |.  6A 00         push 0x0
015D3E65  |.  6A 00         push 0x0
015D3E67  |.  68 1860C601   push test.01C66018                       ;  UNICODE "test2"
015D3E6C  |.  8B4D F8       mov ecx,[local.2]
015D3E6F  |.  E8 F5D2FCFF   call test.015A1169                       ;  call test2
015D3E74  |.  5F            pop edi                                  ;  test.015D20AB
015D3E75  |.  5E            pop esi                                  ;  test.015D20AB
015D3E76  |.  5B            pop ebx                                  ;  test.015D20AB
015D3E77  |.  81C4 CC000000 add esp,0xCC
015D3E7D  |.  3BEC          cmp ebp,esp
015D3E7F  |.  E8 F97EFBFF   call test.0158BD7D
015D3E84  |.  8BE5          mov esp,ebp
015D3E86  |.  5D            pop ebp                                  ;  test.015D20AB
015D3E87  \.  C3            retn

发现两个程序几乎一模一样,就参数不一样。 这个时候就需要往上一层分析他们不一样并具有唯一性的特征(一般特征都是自底向上)。因为这里函数功能都一样,所以上层跟call内部一样,只有参数不一样,但是68 1860C601   push test.01C66018这部分是动态变化的,所以不能作为特征码。像这种情况是很少的,所以在记录特征码时这里可以以分类的方式记录。也就是找到的都是同一种功能。
特征就是:

59 89 4D F8 6A 00 6A 00

免费评分

参与人数 3吾爱币 +8 热心值 +3 收起 理由
liu774551 + 1 + 1 热心回复!
Hmily + 6 + 1 用心讨论,共获提升!
小乖哟 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

SnakeJohn 发表于 2020-3-25 10:19
本帖最后由 SnakeJohn 于 2020-3-25 10:21 编辑

特征码:就是你要找的数据附近的汇编代码,如果你要找的数据所在的程序更新了,数据改变了,你就可以用这串汇编代码快速定位你要找的更新后的数据
比如DNF的角色基址,假设更新前的基址是063721EA,特征码是00 02 0E AE,更新后要找的新基址的话,就可以用这个特征码迅速定位特征码新位置,同时定位新基址
APshaco 发表于 2017-12-16 14:28
但是68 1860C601   push test.01C66018这部分是动态变化的,所以不能作为特征码
可否这样 ;59 89 4D F8 6A 00 6A 00  ??  ??  ??  ??  ??8B 4D F8  

OD用的不多,貌似应该能这样找特征码吧?
 楼主| hackking 发表于 2017-12-16 14:54
APshaco 发表于 2017-12-16 14:28
但是68 1860C601   push test.01C66018这部分是动态变化的,所以不能作为特征码
可否这样 ;59 89 4D F8 6 ...

可以的,模糊查找,可以测试,这里实际上是一样的。
hbjacker 发表于 2017-12-16 15:39
这只能说明调用的是同一个例程。其他能说明什么呢?
china晓五 发表于 2017-12-16 19:24
什么是特征码
jkl718293 发表于 2017-12-17 00:51
不是很懂
戒酒的李白 发表于 2017-12-18 14:26 来自手机
汇编不会
过林黑马 发表于 2018-2-12 19:45
这个特征码在什么地方能用到,不是语言的特征码,也不是什么事件的特征码吧
sunshine_昊 发表于 2018-2-14 16:54
没怎么看懂,可能书读少了
duyisu2012 发表于 2020-3-16 21:24
特征码就是一段最小功能的汇编代码,用来定位代码的,对吗?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-3-29 18:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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