当前位置:编程学习 > wap >>

IDA调试WINCE程序进不了DLL地址

用IDA远程调试一个WINCE程序,该程序用LoadLibraryW加载了一个DLL,再用GetProcAddress获取DLL入口地址,然后跳转到该入口地址执行。我想在获取DLL入口后,直接到入口处下断,结果提示JMPASK错误,无法进入DLL空间。用G命令也进不了该地址。在模块列表中也进不了该地址。从GetProcAddress的返回值看,该DLL已经正常加载了,但为什么就是进不了DLL空间呢?请各位指点一下,如何才能进入DLL空间。 --------------------编程问答-------------------- wince多少版的,没权限吧,静态观察看不出结果吗 --------------------编程问答--------------------
引用 1 楼  的回复:
wince多少版的,没权限吧,静态观察看不出结果吗


谢谢回复!wince60版本的,需要动态跟踪才能看出各寄存器的作用,而关键代码都在DLL中。 --------------------编程问答-------------------- .text:00013400 STR     R0, [R4,#(dword_11528C - 0x115250)]
.text:00013404 MOV     R0, R4
.text:00013408 MOV     LR, PC
.text:0001340C MOV     PC, R1                 //运行到这里,F7就跑飞了。
.text:00013410 MOV     R4, R0
.text:00013414 LDR     R0, [R10]             ; hLibModule
.text:00013418 BL      FreeLibrary
.text:0001341C MOV     R0, R4
.text:00013420 ADD     SP, SP, #4
.text:00013424 LDMFD   SP, {R4-R10,SP,PC}
.text:00013424 ; End of function sub_1332C

运行到.text:0001340C MOV     PC, R1  时,R1=419F90EC 就是DLL的入口地址。在这里再F7单步就跑飞了。

在text:0001340C时无论是g 419F90EC 还是在模块列表里JMP到模块地址,都不行。 --------------------编程问答-------------------- 发现问题所在了,原来是系统版本的问题,WINCE50就没问题,WINCE60就不行。原来是2个版本的内存管理方式不同。WINCE60禁止其他进程访问0X40000000-0X4FFFFFFF虚拟内存空间。请问各位兄弟,有什么办法可以让调试器访问这个虚拟内存空间? --------------------编程问答-------------------- --------------------编程问答--------------------
补充:移动开发 ,  Windows Phone
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,