首页
社区
课程
招聘
[求助]在用ida调wm的.exe文件时对api下断点为什么会出错?
发表于: 2009-5-19 09:33 6993

[求助]在用ida调wm的.exe文件时对api下断点为什么会出错?

2009-5-19 09:33
6993
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
2
估计你已经解锁成功,可以使用IDA连接到设备了。

WM程序调试和PC平台有很大区别,不能直接对API下断点,如果需要停在API上可以在传递参数指令上下断点。

给你看一段我翻译的IDA的资料就明白了:

Windows CE ARM调试器有以下特性和限制:
- 无需手动启动调试服务器。IDA将会使用已存在的ActiveSync连接访问设备并将调试服务器下载到上面。

- 因为一般的ARM不支持"单步运行"所以需要通过软件来模拟它。IDA使用软件断点来模拟单步运行。在大多数情况都可以正常运行,但缺点是不能单步运行到系统区域和coredll.dll中。

- 在coredll.dll或系统区域的断点将会使设备僵死,只能硬重启。因为断点对所有进程可见,但除了在调试器进程上下文没有进程处理它。为了避免这个严重问题调试服务器拒绝任何对coredll.dll或者地址大于0x80000000的写入操作。

- 因为不能将断点加在禁止区域(查看前一条)当应用程序在内核或者coredll.dll中运行时中断是不可能的。当前IDA检查进程的PC是否在可以运行允许的区域内,只有在这种情况下才能生成断点暂停进程。否则暂停进程命令出错。

- 硬件数据断点在Intel XScale上被支持(最多2个)。即使一个地址被多个应用程序共享也可以设置硬件断点。IDA通过内核调试器插桩来实现这一点。这个插桩的任务是忽略在应用程序中硬件断点产生的异常而不是被调试程序产生的异常。注意:从IDA v5.2开始如果需要使用他们,你必须激活硬件断点。为此,选择编辑菜单中的WinCE调试模块菜单项,插件子菜单。

- 调试器使用内核内存表来查找内存层。它假设内核内存层(地址大于0x80000000)不会改变,因此这个信息只在调试会话开始时收集一次。

- 在Windows CE运行进程被映射到两个不同区域:进程插槽和#0插槽。IDA Pro使用#0插槽作为进程主映像并不知道关于内存映像的信息。

- THUMB模式不被支持

- Wince调试器只支持32位版本的Windows,因为ActiveSync API只在这个平台可以使用。

- WinCE v5.0:如果调试器返回'访问被拒绝',可以修改PocketPC设备的注册表:HKLM\Security\Policies下的安全策略将'00001001'改为dword 1。
2009-5-19 10:25
0
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
3
大家发帖的时候有一个“专题”选项最好选上属于哪个专题,方便后来的朋友查看。
2009-5-19 11:02
0
雪    币: 234
活跃值: (217)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习了!关注win ce调试
2009-7-22 18:04
0
游客
登录 | 注册 方可回帖
返回
//