近几天写了几天的反汇编引擎,感觉还是收获颇多

       这段时间由于学习需要开始对于硬编码转换成汇编语句进行编写程序。最开始只是想一次写好代码省得以后工程更改就是所谓的前期规划。老师建议我先从最简单的if else语句先写一遍后面再去重新写反汇编引擎。原来教学时候学习的代码以为都应该懂了,结果写的时候就发现了很多问题了,对于位的运算和各个编码都去总结规律很难,总是有意外的情况出现。不过这个程序编写过程让我学到了就是建数据表,和用数据驱动来检测我们的代码正确性的方法。代码可以不需要更改只要驱动的数据更换可以比较完善的检测手段了。这个需呀很好的总结规律才能做的好,虽说我只是做第一个先练手的版本还是花费很多精力去苦苦寻找更加好一点点的方法。虽说网上到处飞反汇编引擎代码,我还是希望自己能写过一遍,不断更新修改后再参考别人大牛力做,争取自己进步。

以下说明下如何数据驱动测试

int i;
 int j;
 int k;
 int Length;
 char CodeBYte[0x80];
 char ss[0x80];

 for (i=0;CodeList[i].Length!=0x10;i++)
 {
   Length = StudentDisassembler(ss,CodeList[i].CodeBuffer,0x400022,1,8,16);
    if (Length!=CodeList[i].Length)
    {
        for (j=0;j<16;j++)
       {
         printf("%02X ",CodeList[i].CodeBuffer[j]);
       }
     printf("\n%d ERROR !!!\n",i);
   }
  CodeBYte[0] = 0;
  for(k=0;k<Length;k++)
  {
     printf("%02X ",CodeList[i].CodeBuffer[k]);
  }
    printf("  L:%d %s\n",Length,ss);
 }

这个是老师给我的样例我照抄了这只需要更改CodeList中定义的数据就可以添加测试代码数据

对于StudentDisassembler函数中的代码进行结果检测如果加以完善这个测试代码将可以对整个工程做一个完整的检测

现在还没有时间完善这边的程序。等我完成第一个版本时候重新完善检测手段。

猜你喜欢

转载自blog.csdn.net/lyfwwb/article/details/7649739