码迷,mamicode.com
首页 > 其他好文 > 详细

汇编中Switch逆向基础(跳转表)

时间:2019-07-11 00:31:21      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:大致   大小   执行   family   style   mil   switch   查看   最小   

跳转表产生的条件     应该是case 之间的差应该是大于4 小于一 定的数量吧 才会产生  如果跳转表太大的话性能也不高

过程

跳转表(case 不是太多也不是太少才会产生) 过程

先把Switch(a)  a中的数值减去 case: 中的最小值  假设这个值为B

然后再去判断case 中最大值-最小值 假设为 C

比较BC大小 如果 B>C(至于那些最大最小值人家怎么找的这我真不知道) 说明不再这个switch里面执行default 或者 跳出判断

如果 B<=C的话说明这个数在Switch里面 然后查表调转到相应的case语句(这个表大致构建为 从你最小的case 例如 为0x10  到你最大的case 例如为 0x30 即使你中间没那个case 判断 例如 0x11他也会构建的)

 

例如

Ja xxxx  这个是默认defult

Mov

Movzx edxByte PTR DS:[EDX*4+410CC]    这个数组是下标索引数组 可以通过查看下标的值

JMP DWORD  PTR DS:[EDX*4+410B4]  这个是跳转表(通过查上面的edx下标  dd 下标*4+410B4 可以查看要调转的位置)

 

技术图片

 

汇编中Switch逆向基础(跳转表)

标签:大致   大小   执行   family   style   mil   switch   查看   最小   

原文地址:https://www.cnblogs.com/xuexidememeda/p/11167423.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!