首页
社区
课程
招聘
[求助]od调试程序怎么判断这个程序是深度封装的?
发表于: 2016-7-27 16:31 3952

[求助]od调试程序怎么判断这个程序是深度封装的?

2016-7-27 16:31
3952
近日。在学外文翻译OD从零开始。看到第18章,解析序列号生成算法,利用BP TranslateMessage 消息函数下消息断点101,断下来后,译文说了一句“我们可能会想到对该字节设置内存访问断点,让程序在读取该字节与正确的序列号进行比较的时候断下来,但是该CrackMe是个Delphi的程序,Delphi程序是经过深度封装的程序,可能在与正确的序列号进行比较之前,12FF80对应内存单元中序列号已经经过了很多次的内存的中拷贝了,所以直接对该字节设置内存访问断点是不可取的。我们可以采用上一章使用的方法,先在内存中搜索我们输入的序列号,定位到以后再对区域设置内存访问断点可能更方便一些。” ,小的在这里就不明白。作者说的判断依据这个程序是深度封装的。是他事先知道这个程序是深度封装工具开发出来的还是?。如果不是他判断依据是什么。是看他跟踪到数据窗口,就说这么一句,小的就想判断依据是什么。搞不明白。
  有前辈看到有空的同时指点下么..

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这里说的"深度封装" , 应该是说delphi编译出来的程序,  会被添加很多delphi自身的"库"代码进去  .
"非深度封装" , 最典型的是汇编写的程序, 编译后没有添加任何冗余代码 .  

个人理解,可能有误.

反正调试东西, 一个方法不行就换另一个方法呗 , 没什么方法是万能的
2016-7-28 07:23
0
雪    币: 81
活跃值: (110)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
你所说的深度封装其实就是调用了框架库
框架由于设计模式的关系往往结构会相当复杂,一步简单的操作也会调用很多过程
几个典型的例子
微软的MFC,Delphi,易语言

作者是怎么判定的呢?通过PE特征扫描软件例如exeinfo这种,可以知道程序是delph编译的
delphi程序必然会这种封装

比较干净的就是c\c++语言直接调用win32 api开发的程序,console的比较多见,gui的几乎现在已经没有了
2016-7-28 08:32
0
雪    币: 90
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢楼上的2位前辈解答。
2016-7-28 10:33
0
雪    币: 123
活跃值: (144)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
delphi的更好办啊!直接用dede,可以找到对应的进程
2016-7-29 13:14
0
游客
登录 | 注册 方可回帖
返回
//