自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (2)
  • 收藏
  • 关注

原创 android 无死角调试计划

多年前曾沐浴在windows的荣光下,体验着visual studio提供的完美开发体验,不知其他平台开发工具的险恶。怀揣美好的向往,投入到android的怀抱,才发现世事艰辛。对于调试而言,android平台是个残暴的世界。对于native程序,曾操起gdb,寻找windbg的身影,确发现等价命令臃肿的可怕,它看起来就不是给人用的,很像个二次开发的api,当我想专注于调试时,我确不得不先专注于这个复杂的接口,让他更好用一些。windbg把用户当上帝,gdb把用户当小弟。话说android studio调试

2020-05-18 13:52:39 258

原创 android 真机调试原始的init进程

init作为android用户态启动的第一个进程,是难以直接调试的,之前的文章讲了如何调试单独启动的init,也就是在系统启动完成之后再启动一个init,这时候系统环境完全变了,不是init执行的原始环境了,调试起来并不能了解init真正的执行过程。现在我介绍如何直接调试原始的init进程。虽然还是不能调试init的初始化,但其所接收命令的执行过程是可调试的,且是原汁原味的。先上个效果图:这是中断所有进程后,init进程正在等待下面是,发出stop zygote后,init进程接收到命令:.

2020-05-17 23:09:59 607

原创 调试理论

关于调试,有很多想说的。简洁的说,调试是一种控制手段,用以提高人对软件的控制能力。作为软件从业者,尤其指开发人员,可能遇到如下场景:1. 程序崩溃,卡顿,占用大量内存。2. 软件很复杂,难以理解,不能建立简洁的心理模型。3. 编程接口复杂,缺乏文档。因为软件开发的本质就是复杂性控制,其复杂性来源于其环境的复杂性,环境包括:1. 需求复杂,随时间而变化。2. 接口复杂,几乎任何常见软件都建立在其它软件之上,并与第三方软件产生交互。3. 软件兼容产生复杂性,一个软件在发展过程中...

2020-05-17 09:12:28 413

原创 magisk 模块如何替换init

用magisk模块替换system分区中的文件特别简单,下载个模板,解压后system文件夹中放入要替换的文件,重新压缩后用twrp刷入即可。甚至boot分区中也能有限的替换个别文件,patch一些rc文件,但是替换init文件是官方不支持的,笔者经研究发现了一个可行办法做到这一点,记录在此。办法就是修改magisk的安装脚本,magisk的逻辑很复杂,但是需要做的修改非常简洁。1.D:\Downloads\Magisk-v20.4\common 中加入你自己编译的init,取名myinit:..

2020-05-17 07:02:15 3125

原创 android linker 源码调试

上篇文章介绍了init进程的调试,现在介绍linker的调试。linker 作为动态加载器是android系统上动态链接可执行文件的依赖文件,并且是首先执行的模块,同时它也是独立可执行的文件,不过独立执行时并不执行有用的功能,但我们可以略微调整代码,来调试感兴趣的函数。调试效果图:调试设置很简单,请参照上篇文件中init进程的调试设置。...

2020-05-12 21:14:41 474 1

原创 android init 进程源码调试探索

android 系统native进程有很多,其中比较重要的有init,zygote,installd,dex2oat等,native进程的调试是困难的,尤其是调试其初始化过程,原因是没有集成化调试环境,虽然gdb是可能的,但是对用户不具有易用性。android studio 随能调试so,但对native可执行文件无能为力。作为对比,visual studio作为宇宙最强ide,调试windows可执行文件的能力可以说是甩开android studio几条街。笔者经过研究,找到了媲美windows上的无缝调

2020-05-12 16:59:50 693

原创 android工程师的福音:5分钟内checkout任意版本android源码!

android工程师的福音:5分钟内checkout任意版本android源码!做android最大的痛苦莫过于获取android源码,由于众所周知的原因,从谷歌下载一个版本的源码困难重重,即使克服了网络障碍,也因源码巨大而耗时持久,据经验根据网络情况,耗时少则6,7天,多则个把月,有人说用国内镜像,但事实证明国内镜像因版权问题,提供的镜像是不完整的,并且即使用国内镜像,中间也会访问谷歌服务器...

2019-12-06 15:10:30 292

原创 思维框架

很长时间以来,一直被一个想法

2014-05-30 23:32:05 843

原创 你在追求什么?

无论谁,你一定有所追求,即使你宣称自己堕落...   当然,并不是谁都懂,谁都同意,那些不懂自己的人,很难明白我在说什么。   为了说明这件事,那就从自我说开去...    任何人,没有人生来就明白事理。生来一无所知,甚至语言都要从点滴学起。人们经常说起 “我” ,这个字,但没人知道从小到大,“ 我”这个概念是从哪一天形成的。同时,我们也肯定能意识到,刚出生

2014-05-02 02:04:07 469

原创 思维模型

以认知模型为基础        主要总结几个机制:        其一,预测机制        其二,创造机制        其三,预测内外客观机制        其四,创造内外客观机制        其五,预测内外主观机制        其六,创造内外主观机制        其七,主客交织机制        马克思是个伟人,创造了马哲。但他也仅仅是那个

2014-05-02 01:58:18 684

原创 计算机随想

计算机核心是CPU,其模型是DFA------有限自动机。          计算机能做很多事,其原因是什么?为什么它能模拟天气,模拟模拟植物,模拟动物,模拟人,甚至人类社会。从无机自然,到有机生命,计算机无所不能。          很多人怀疑,模拟这些事物,计算机还做不到。诚然当模拟规模巨大的事物的时候,计算机肯定不能做到我们所期望的精确性。然而,即便是最简单的物理过程,计

2014-05-02 01:55:34 456

原创 程序无能为力的领地

为什么精确的程序在复杂的环境中总会失败?          为什么生活中没有确定方法去指引我们成功的去做事?          这是程序固有的缺点,其根源在于环境的复杂性,变化性。这是程序化思维无法发挥作用的问题域。          但问题本身又不能脱离其环境,它高度依赖于复杂的环境。          那问题该怎样去处理呢?          当程序间通信频繁,模块

2014-05-02 01:54:13 434

原创 黑客的思维模式

 对于黑客来说他们其实所痴迷的并不是技术。         他们所坚持的,并不是那种永不放弃的黑客精神。         他们所真正着迷的东西,是事物的本源与真相,他们是方法论的终极探究者。他们探究的是事物的抽象规则,事物的可能性。他们以技术作为一般表达方式,但却不局限于技术。在他们的大脑中整个人类社会都被抽象为信息处理,他们入侵的不只是电脑。他们以其炉火纯青的语言操纵能力

2014-05-02 01:49:28 972

原创 终极逆向

逆向工程不应该局限于计算机领域。          它的威力应该发挥在人所接触的遇到的一切领域的问题之中。          黑客,侦探,科学家,政治领袖,他们都是逆向工程的身体力行者,黑客通过软件工具可以知道二进制代码的原始设计,侦探可以通过其调查手段及各种方法得知事实的真相,科学家通过科学研究方法获知物理世界的结构,政治领袖通过其社会活动,得知社会结构,及矛盾关系。    

2014-05-02 01:48:11 382

原创 程序哲思(4)

你继续看的理由,应该是那个充满诱惑的“无尽的力量”吧。         那是需要付出代价的。我将继续为你铺路,请先相信最终会有“水到渠成”的效果。         看看那些牛人,牛的技术,那些经典代码,那些经典的架构,那些大师在创造并推动着计算机世界的一切。那些深邃的思想,那些极具穿透力的眼光,直达问题的本质,核心,让人望尘莫及。         如果你对计算,自动机,语言的背

2014-05-02 01:44:59 408

原创 程序哲思(3)

你此时已经隐约感到,程序已经在你的现实世界中,如空气一样。但是你还不确信,因为这种感觉才刚刚开始。          编程本身算是什么呢?是否是程序呢?是的。          编程是这样一个过程,你在大脑中首先有了一堆概念,有了概念就隐含的说明有了什么呢?一个概念定义了一个集合,有了概念的同时就有了概念上的操作,概念与数据类型,与集合是同一个东西。你这时候要达到一个目标或某种目的

2014-05-02 01:42:12 458

原创 程序哲思(2)

第一篇中,从未涉及程序是什么这个问题,让人懊恼,不过你将马上看到对这个问题的探讨。          先说下,集合上的运算。但愿你还记得什么是映射,什么是函数,如果你曾上过高中。简单例子说明如下:          y=2*x     还记得这个简单的函数吧,应该初中就见过了。还记得,x叫做自变量,y叫做函数吧。这里规定x的取值来自集合{1,2,3,4,5},起个名叫集合X,y取值

2014-05-02 01:40:01 440

原创 程序哲思(1)

程序是什么?我将以这个话题开始,最终引出一套理论。        在通俗易懂与精确深刻之间,我还是偏向了后者,因为同时这是写给自己的总结,还有志同道合的程序员的。为了能达到精确深刻,我必须从抽象的集合论开始,这也实属是个无奈的选择。        当然,我所谓的精确,不是数学上的那种严格的精确,我以能够揭示本质为标准,会忽略掉一些不重要的东西,同时也会加强一些概念,甚至重新定义一些

2014-05-02 01:38:23 410

原创 有思想的程序员

一个

2014-05-02 01:35:22 623

网狐棋牌源代码

完整的棋牌程序源代码,可以编译运行

2014-05-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除