嵌入式设备的JTAG,Angle,和ICE三种调试笔记

组成ARM交叉开发环境的宿主机到目标机的调试通道一般分为一下三种:

  1. 基于JTAG的ICD(In-Circuit Debugger)(英语翻译,电路内置调试器)
    JTAG,边界扫描测试的一个标准协议,大多数边界扫描都是通过JTAG接口实现的;
    只要ASIC内部相应寄存器做了边界扫描测试,利用JTAG就可以访问ASIC内部寄存器了;也就是说边界扫描一般是通过移位寄存器结构实现输入测试数据和输出测试数据,这样可以较少测试引脚;
    优点:价格便宜。
    功能:通过JTAG的方式可以
    (1) 读/写CPU的寄存器,访问控制ARM 处理器内核
    (2) 读/写内存,访问系统中的存储器
    (3) 访问ASIC(专用集成电路)系统
    (4) 访问I/O系统;
    (5) 控制程序单步执行和实时执行;
    (6) 实时的设置基于指令地址或者基于数据值的断点
    提示:基于JTAG仿真器的调试是目前ARM开发中采取最多的一种方式

  2. Angel调试监控软件(也称驻留监控软件)
    特点:(1)运行在目标板上,可以接收宿主机上调试器发送的命令,执行注入设置断点,单步执行目标程序,读写存储器,查看或修改寄存器等操作。
    (2)宿主机通过串行端口,,以太网口,并行端口等通讯端口与angel调试监控软件进行通讯。
    (3)angle坚实控制程序需要占用一定的系统资源,如内存,通信端口等。
    缺点:(1)对硬件设备要求比较高,一般要在硬件稳定后才能进行应用软件的开发,因为占用系统资源的问题,在一些严格的场合下不适合使用;

  3. 在线仿真器ICE(In-Circuit Emulator)
    特点:
    (1) 模拟CPU的功能,可以完全仿真ARM芯片的行为;
    (2) 价格昂贵,难以普及

llyICE是一款专业的代码编译和调试工具,一些进行逆向工程的人员也会使用OllyICE进行一些软件的断点进行查找,OllyICE中文版是学习破解工作的一款利器。 使用说明 OllyICE.exe与OLLYDBG.EXE同时做了如下修改: 1.窗口、类名等常见修改; 2.格式化字符串的漏洞[OutPutDebugString]补丁; 3.参考dyk158的ODbyDYK v1.10 ,自动配置UDD、PLUGIN为绝对路径; 4.参考nbw的"OD复制BUG分析和修正"一文,修正从内存区复制数据时,有时无法将所有的数据都复制到剪贴板的bug。 5.参考ohuangkeo“不被OD分析原因之一和修补方法”,稍改进了OD识别PE格式能力(可能仍报是非PE文件,但己可调试了)。 6.修正OllyScript.dll插件bpwm命令内存读写都中断的问题。 7.jingulong的Loaddll.exe,可以方便让OllDbg中断在dll的入口。 8.感谢DarkBul告知SHIFT+F2条件窗口显示的bug及修复。 9.感谢dreaman修复Findlabel,Findname,Findnextname三个函数处理字符串会溢出的bug。 10.改善sprintf函数显示某些浮点数会崩溃的bug,这里的修复代码直接引用heXer的代码。 11.该修改版,配合HideOD插件,可以很好地隐藏OD。 12.新增实用的快捷键功能: 1).查看数据 push A480033 //如果按回车键,则数据窗口中显示A480033数据,此行按Shift+回车键,即可跳到A480033地址; mov eax,401000 //此行按回车,则数据窗口中显示401000 数据 mov eax,[401000] //此行按回车,则数据窗口中显示401000 数据 mov [ebp-4], esp //此行按回车,则数据窗口中显示ebp-18的值(注意EIP必须指向当前行) mov eax, [esp+10]//此行按回车,则数据窗口中显示esp+10的值(注意EIP必须指向当前行) 2).二进制复制/粘贴快捷键 反汇编窗口:Shift+C/Shift+V 数据窗口:Shift+C/Shift+V 注意:数据窗口中,Shift+V时,不必选择块大小,会将剪粘板的数据全部粘贴上去。 3).数据窗口查看数据 (来源于heXer) 数据窗口: 00406000 00 10 40 00 00 00 00 00 00 00 00 00 CA 2E 40 00 .@.........?@. ^ 光标移到“00 10 40 00”第一字节00处,按回车,反汇编窗口显示401000;Shift+回车,数据窗口显示401000 4).堆栈窗口 (来源于heXer) 0012FF44 00401D8A //按回车,反汇编窗口显示0401D8A;Shift+回车,数据窗口显示0401D8A 0012FF48 00000000 5).数据窗口选择数据显示 当光标在数据窗口移动时,会显示出光标起始地址、结束地址,以及选中的块大小。 6).数据窗口切换到代码窗口 00406000 00 12 40 00 00 00 00 00 00 00 00 00 CA 2E 40 00 .@.........?@. ^ 光标移到“00 12 40 00”第一字节00处,按Ctrl+双击鼠标,则反汇编窗口显示00401200开始的代码 7).反汇编窗口或数据窗口取当前地址 快捷键:ctrl+X 例如: 004091C0 push ebp 004091C1 mov ebp, esp 004091C3 push -1 //此行按快捷键ctrl+X ,则将地址004091C3复制到剪粘板里 数据窗口同样操作。 0040DD40 55 8B EC 83 EC 08 53 56 57 55 FC 8B 5D 0C 8B 45 U嬱冹SVWU鼖].婨 ^ 光标移到上面55处,按ctrl+X ,将地址0040DD40 复制到剪粘板里 8).取数据窗口光标所在字的数据 0040DD40 55 8B EC 83 EC 08 53 56 57 55 FC 8B 5D 0C 8B 45 U嬱冹SVWU鼖].婨 ^ 光标移到上面EC处,鼠标双击,则将数据565308EC复制到剪粘板里 9).快捷键T 0047F190 C7 A0 80 7C 40 7A 95 7C E1 EA 81 7C 8D 2C 81 7C 亅 0047F1A0 AB 14 81 7C A2 CA 81
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值