能力值:
( LV2,RANK:10 )
|
-
-
2 楼
楼主这排版密密麻麻看起来费劲
|
能力值:
( LV13,RANK:460 )
|
-
-
3 楼
自己到手丰衣足食,静待楼主作品:)
不知道是不是插件方式呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
应该好好分一下段,密密麻麻看的眼累。
|
能力值:
( LV5,RANK:70 )
|
-
-
5 楼
对不起大家,排版太菜了,我也不会写插件,用的是直接在OD上面增加代码的方式
|
能力值:
( LV13,RANK:460 )
|
-
-
6 楼
改好了后,放出来吧~
我帮你写插件:)
|
能力值:
( LV9,RANK:200 )
|
-
-
7 楼
OD2已经增加此功能了
|
能力值:
( LV5,RANK:70 )
|
-
-
8 楼
先把附件放上来,回头再详细解释具体做法。用法:附件解压后放到你正在使用的OD所在文件夹直
接运行OD即可。本想把整个文件夹压缩后放上,但是附件太大帖子不接受按只好如此。照正常操作
在追踪代码时,在设置完内存硬件断点(访问、写入)时会弹出对话框,此时输入16进制数据例如
“23db5e6f"、" EF340068"等均是合法的16进制数,注意根据设置断点类型是字节、字、还是
双字,正确输入数值,不要加前后缀,16进制数以字母开头时,前面不加0,输入完按“确定”,
即完成添加条件设置,在弹出对话框时,直接按“取消”,就没有设置任何条件。为了区别原版我
用eXescope换了一下图标,这些图标均取自OD本身,不足之处欢迎提出宝贵意。
|
能力值:
( LV5,RANK:70 )
|
-
-
9 楼
附件已经在第一篇帖子的回复中上传,请有兴趣者试用,不当之处望不惜赐教。顺便说一下,我本
人没受过计算机专业的系统教育,最好的也是最有价值的文凭是个计算机专业自学考
试专科文凭,也正是这个自学考试,BASIC、DOS、汇编语言等一系列的自学打下了一点基
础,我曾经为DOS中断下过功夫,但是无功而返,windows时代铺天盖地成了主流,win98是最
好的调试平台,可惜我没有看到罗云杉老师的的WIN32汇编教程,总是对窗口之类一头雾水,现
在,感谢看雪学院,给了我好多可以学习的东西,我想通过这篇帖子,一是叙述一下自己的做法,
如有不妥请高手大侠不惜赐教,更重要的我想给初学者提供一个样板,一个例子,如何开始调试,
当然这是解密的基本功,希望他们少走弯路,提高技能。由于我的专业知识不足,错误之处在所难
免,尤其是专业反方面欠缺一些,大家忍耐一下吧,但是我会尽一切可能,尽可能能的提供我认为
是较为“完美”的东西给大家,有时候叙述啰嗦,太菜了,请高手们见谅。言归正传,下面开工
了。
具体做法如下:使用工具OD、道具window自带的NOTEPAD记事本,为了避免
混乱,将OD所在文件夹copy一个副本,将副本中的OD换个图标,这一步不是必需的,但是这么做
了为后续的工作提供了便利,这个副本OD称为OD1,如何改造这个OD1呢?最拿手的还是使用
OD,真是那句话“以子之矛,攻子之盾”,现在是以子之矛,打造此矛,使其更加锋利。
运行OD,载入OD1,F9,使OD1跑起来,使用OD1,载入记事本,先别忙着F
9,我们不想调试记事本!要调试的是OD1,不要忘记。怎么会这么干?我想了:解密调试一个普
通软件,用OD载入,下断点、查API 、上百度查找API的用法等等,能用的功夫全都用
上,必然可以得到想要的东西,这个OD怎么弄?它本身是调试器,怎么调它?我没有别的办法,别
的也不会,就用OD来调试他自己吧,最初不知道行不行,但是试了一下竟然然成了,这要感谢OD
的作者,他没有拒绝调试,不像那个“XX游侠”,偶尔想开个玩笑查找个它本身的东西,他就说
“哼,大侠不吃这一套!",没有贬低的意思,我对这个东西十分佩服,该公司的系列产品我是大量
应用,当然都是免费的,该公司不因为免费就降低质量,而是兢兢业业,不断推陈出新,真是丽人
佩服呀。再说主题, 既然想给OD1增加条件硬件断点,当然需要在OD1的硬件断点设置部
分找到动手的地方。
目前有两个OD在跑,电脑的任务栏内有两个图标,为啥要更改OD1的图标,现在
明白了吧。点OD,来到DO1的领空,点OD1,来到的是NOTEPAD的领空,后续的工作需要不停
的在这两个领空切换,如果图标一样很容易混淆。OD1在哪部分处理硬件断点设置问题?武汉科锐
angelqkm的《OllyDBG分析报告系列》提供线索了,
00451CE3 . 6A 03 push 3 ; BreakPoint_Flag
00451CE5 . 6A 01 push 1 ; BreakPoint_Len
00451CE7 . 8B4D B0 mov ecx, dword ptr [ebp-50] ;
00451CEA . 51 push ecx ; BreakPoint_Addr
00451CEB . E8 A069FBFF call _Sethardwarebreakpoint ; \_Sethardwarebreakpoint
当然了,找到这段就不错了,下断点,跟踪,还会找到另一处更好的好地方:
00408690 >/$ 55 PUSH EBP
00408691 |. 8BEC MOV EBP,ESP
00408693 |. 81C4 24FDFFFF ADD ESP,-2DC
00408699 |. 53 PUSH EBX
0040869A |. 56 PUSH ESI
0040869B |. 57 PUSH EDI
0040869C |. E8 F36F0A00 CALL OllyDBG.004AF694;此代码已经改写为接口了,调用
添加的代码
004086A1 |. 90 NOP
为啥是个好地方,请看下文,408690是一个过程的入口,在此处F2设一断点,切换回到
NOTEPAD领空,来到数据窗口,选一位置例如01009010处,右键鼠标,设置硬件写入断点,你
发现了什么?在OD1的领空408690处断下了,观察CPU的各个寄存器,大有来头,例如:
EAX 01009010;什么东西似曾相识?就是刚才在NOTEPAD数据窗口设
置硬件断 点的地方
再观察堆栈窗口,此时的ESP指向一个返回地址参考价值不大,忽略,从ESP+ 4开始都是
好东西,过程参数呀!
0012CA88 |01009010 ;NOTEPAD数据区断点地址
0012CA8C |00000004 ;断点长度4字节
0012CA90 |00000003 ;断点类型3,硬件写入断点,
这些好东西当然有用,要保存下来,为此在40869C处开口,
0040869C CALL 004AF694
004AF694是什么地方,要去干嘛?大家心知肚明,我要在此处添加代码,记下堆栈中的3个数
据,我还有设法弹出一个窗口,输入01009010处应该断下的数值,并设法影响OD1,让它只有
这个数值时可以断下,其他数值继续跑,这不就实现硬件条件断点的功能了吗?
这个想法没错,当然实现这个想法还有一段路要走,大家要记住的是,我找到了一个好地方,”
“找到好地方”,定位到关键点,是从事解密工作不可缺少的一关,也是解密成功的关键,这是基
本功,否则一切都无从谈起。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
我更加菜 表示完全没有看懂
|
能力值:
( LV15,RANK:1473 )
|
-
-
11 楼
这个思路不错,可以考虑集成到其他插件中去
|
能力值:
( LV8,RANK:120 )
|
-
-
12 楼
学习一下,感谢分享 :)
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
不错的想法, 直接DIY出来了
|
能力值:
( LV12,RANK:980 )
|
-
-
14 楼
等待插件
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
不错,有了想法就离成功不远了
|
能力值:
( LV5,RANK:70 )
|
-
-
16 楼
[QUOTE=热火朝天;1013207]不错,有了想法就离成功不远了[/QUOTE
不是已经把附件放在网上了,下载的不多呀!真不知道还有多少人在使用OD,为啥?我可是下了功夫搞出来的,插件办不到的事情,我办到了!!!
|
能力值:
( LV5,RANK:70 )
|
-
-
17 楼
感谢关注,但是,你知道这项功能在追踪过程中的作用吗?我期待着你的评价!!我感觉我做的工作插件解决不了的!!不恰当的比喻:插件给OD的手上放了一件工具,可以延伸OD的功能,我却给了OD一条小手,他和OD密不可分,它利用了OD能够被小手连通的部位。插件是隔着OD的衣服,我在OD的肌肉之内,差别仅仅如此。
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
还真是没看太明白!!
|
能力值:
( LV3,RANK:20 )
|
-
-
19 楼
表示同LS和LLS,没看明白也没看到做好的文件。。
|
能力值:
( LV12,RANK:980 )
|
-
-
20 楼
首先感谢楼主提供这个功能,有时的确方便好多。只是和F4功能有些冲突,每次F4时都要弹出对话框,然后点击取消,才能继续。这样不太方便,运行脚本时尤其麻烦。
|
能力值:
( LV15,RANK:1473 )
|
-
-
21 楼
直接修改OD原程序个人认为不是很好的办法,因为这种修改是不可还原的,一旦修改出现不可预知的问题就没法用了,而且无法与其他汉化版或增强修改版不能共同使用,所以我认为用插件实现这个功能,如果出问题了把插件禁用就可以了
不是否认作者的辛苦劳动,只是我个人的观点,没有任何针对作者的意思
|
能力值:
( LV12,RANK:980 )
|
-
-
22 楼
最好用插件的形式,而且要设置一个开关。需要时打开,不需要时关闭。不然有时很麻烦,比如用脚本调试时。
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
OD的断点处理太不效率了..以前写过一个这样的..闪得人眼晕就给删了.
|
能力值:
( LV9,RANK:460 )
|
-
-
24 楼
很有意义的工作。
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
我喜欢看,喜欢做,不喜欢说.但我现在非要说一下,论坛里看了N多大牛写的东西,同时也喜欢他们分享的知识,但我非常非常喜欢楼主写东西的方式,写东西所使用的语言.写东西时的那份快乐.太......爱死你了.
|
|
|