- 博客(10)
- 收藏
- 关注
原创 NDK 循环优化的BUG
在执行一段解密代码的时候出现错误,导致只解密前几个字节,通过查看汇编代码发现for循环被优化掉了,没有具体研究什么情况下会被优化掉,但是逻辑已经不对了,通过去掉优化,问题解决。方法为加优化标记,去掉优化,如下。__attribute__((optimize("O0")))void FunctionUseFor(params ...){ ...}...
2018-05-17 10:35:31 250
原创 Binder的JAVA接口
之前看的binder的那么多类和接口感觉蛮迷糊的,以ActivityManager为例理了一下。IBinder:远程对象,关键接口就一个transact,发送数据到远程对象上。Binder 实现IBinder接口 onTransact 具体发送的类型数据。ActivityManagerNative 实现了onTransact ,用于解析数据传输,提供方法getDefault获取Acti
2017-11-20 20:56:11 343
原创 apktool 回编译说文件名或扩展名太长
>Caused by: java.io.IOException: Cannot run program "C:\Users\Administrator\ShakaApktool\windows-x86\bin\aapt.exe": CreateProcess error=206, 文件名或扩展名太长。>at java.lang.ProcessBuilder.start(ProcessBuild
2017-10-18 20:57:18 4122 2
原创 Android 非ROOT GDB 调试步骤
直接把命令列出来吧 1、cmd>adb shell am start -D -n appname/LaunchActivity 2、cmd>adb shell 3、cmd>ps | grep str=> get pid 查找进程pid 4、cmd>run-as appname 5、cmd>adb push gdbserver /data/data/appname/tmp 6、cmd>m
2017-10-16 17:29:03 587
原创 Android DEX 文件打开分析
函数为 DexFile_openDexFileNativeClassLinker::OpenDexFilesFromOat 1、 FindOpenedOatDexFile 查找缓存中是否存在,checksum为空或者相同 2、 CreateOatFileForDexLocation 1、生成oat文件 执行execv 调用 dex2oat 生成Oat 会启动进程生成较慢
2017-10-13 16:44:15 2626
原创 Binder 内存分配
android6.0已经把binder_buffer有关的操作和binder.c分开了,实现在binder_alloc.c文件里面 一、binder_alloc_mmap_handler函数进行map,先看这个结构体:struct binder_alloc { struct mutex mutex; struct vm_area_struct *vma; struct mm
2017-10-10 11:13:26 2474
原创 Binder驱动研究
好久没写过博客了,也没怎么研究过源码,偶尔看到别人的博客都是系列研究,自愧不如啊,所以也下下来android源码开始看了,参考网上的讲解,结合源码。希望这样记录下自己的阅读历程,也不枉虚度时光了。 先从android的Binder驱动说起吧,以前也不动Linux驱动,有说错的地方敬请谅解,欢迎指正。一、驱动注册就不详细说了binder_init1、初始化工作队列bind
2017-09-30 10:53:13 474 1
原创 MFC图片按钮
MFC的图片按钮为CBitmapButton,一开始创建的时候由于少写了BS_OWNERDRAW属性,导致不显示图片,因此感觉MFC只是对API的一个简单封装,因此用起来不是特别好用,有一些陷阱,不仔细就容易出现问题。CBitmapButton有个LoadBitmaps,需要把资源加到程序里,不太方便,一个方法是继承CBitmapButton,然后添加一个方法,内部是四个状态的CBitmap,用L
2015-03-09 19:11:24 339
原创 半透明子窗体MFC实现
上一篇说了大概的思路,但是写的时候就可能遇到各种问题,下面给出完整的步骤源代码。先建立一个MFC的对话框程序,然后添加类CTransparentWnd,以下给出改动后的代码。1、CTransparentWnd类#pragma onceclass CTransparentWnd:public CWnd{public: CTransparentWnd(void);
2015-03-06 09:55:15 1345
原创 VC半透明透明子窗体
对子窗口理解出现一些误区,导致实现跟随其它窗体的透明窗体时走了很多弯路。1、有父窗口不一定具有WS_CHILD属性,父子窗口可以保证Z轴顺序,也就是保证子窗口在父窗口上面。2、Layered Window不能有WS_CHILD属性,但是可以有父窗口,所以也能实现透明和异形效果。3、Z轴顺序用父子窗口关系实现,透明窗体用Layered Window实现,就能很容易实现透明子窗体。4、
2015-03-05 18:48:05 1198
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人