-
-
未解决
[求助]学习 Android 过程中的一些疑惑
50.00雪花
-
发表于:
2024-3-7 04:21
1873
-
未解决 [求助]学习 Android 过程中的一些疑惑
50.00雪花
以前都是钻研Windows的,现在在Android属于初学者。在学习动态调试的时候碰上一些疑惑,找了很多书籍(包括网上搜索)都没有解惑,可能是思想已经被Windows禁锢了!希望可以指导一下:
(前提:被调试的App,是一个简单的示例(测试用)App,它没有任何的反编译或者反调试的保护手段)
我使用 IDA 和 JEB 进行动态调试时,对这个【线程】比较困惑。
疑问1:比如Name为 JDWP 的线程,是属于"虚拟机自身"的调试线程,而 RenderThread 也是属于 "虚拟机自身" 的渲染线程。问:线程的 Name 是如何决定的? 如果 APP 创建了一个线程,如何区分哪些线程是属于 "虚拟机自身",哪些线程是 APP 额外创建的?还是说,APP创建的线程,在调试器中不会"体现"出来?
疑问2: IDA Attach Process 后,在 Threads 一框里,没有发现这个APP的 "主线程",经对比线程名称,全是 "虚拟机自身" 的线程。执行APP 代码的线程到底是哪个?
疑问3: 在windows系统中,线程是有 "启动地址" 的,即这个线程从哪里开始执行,Android虚拟机中的线程是否没有这个概念?还是说,就它的调试机制来说,根本不需要?
疑问4:在windows系统中,如果中断到调试器,是可以查得到各个线程 "当前的位置" 的,Android虚拟机中的线程,是否也是没有这个概念的?
还有,在 IDA - Threads 中,双击某个线程,出现 Command "SelectThread(xxxx)" faild - registers are not available 是什么原因?
初学Android,还请指导!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!