- 博客(61)
- 资源 (16)
- 收藏
- 关注
原创 【分析】dalvik虚拟机解释执行字节码
参考源码版本:Android-4.4.4_r2提示:大部分分析直接注释在代码内。dvmInterpret函数中调用了dvmInterpretPortable函数对方法的字节码进行解释执行,dvmInterpret在dalvik/vm/interp/Interp.cpp文件中。dvmInterpretPortable函数在dalvik/vm/mterp/out/Int
2015-04-04 07:17:04
6882
原创 【分析】dalvik虚拟机启动过程(三)
源码版本:Android-4.4.4_r2在AndroidRuntime::start中调用AndroidRuntime::startVm函数启动了虚拟机,然后又调用了AndroidRuntime::startReg函数注册Android函数:/* * 向 VM 注册Android本地函数。 * Register android native functions with
2015-03-29 00:28:40
1444
原创 【分析】dalvik虚拟机启动过程(二)
源码版本:Android-4.4.4_r2提示:大部分分析直接注释在代码内。接着上一篇【分析】dalvik虚拟机启动过程(一)JNI_CreateJavaVM函数调用dvmCreateJNIEnv创建JNIEnv后,接着又调用了dvmStartup函数初始化VM:/* * VM 初始化。 * VM initialization. Pass in any
2015-03-29 00:24:43
1782
原创 【分析】dalvik虚拟机启动过程(一)
源码版本:Android-4.4.4_r2提示:大部分分析直接注释在代码内。主要函数的调用层次:|AndroidRuntime::start |AndroidRuntime::startVm |JNI_CreateJavaVM |dvmCreateJNIEnv |dvmStartup
2015-03-29 00:14:53
3634
原创 JNIEnvExt/JNIEnv创建过程分析
参考源码版本:Android-4.4.4_r2---------------------------------dvmCreateJNIEnv函数创建一个JNIEnvExt结构,函数返回时,将JNIEnvExt*强制转换为JNIEnv*:/* * 创建一个新的JNIEnvExt结构,并将它添加到VM列表中。 * 返回时,将JNIEnvExt*强制转换为JNIEnv*。 * C
2015-03-27 21:20:19
1940
原创 【分析】config-portable文件
路径:dalvik/vm/mterp/config-portable-----------------------------------------------------------gen-mterp.py文件可以根据config-portable文件,生成便携(portable)的dalvik解释器的源码,这种风格的解释器可以方便的移植,而根据这个配置文件生成的源码全都是”.cpp”
2015-03-27 00:26:21
1305
原创 【分析】生成dalvik解释器原文件的脚本:gen-mterp.py
源码参考:进入路径:dalvik/vm/mterp/gen-mterp.py----------------------------------------------------------------------------------------------------概述gen-mterp.py根据特定体系结构配置文件,生成dalvik解释器的C和汇编源码。po
2015-03-27 00:22:37
2807
原创 【分析】多dex加载机制
Android源码版本:5.0.2_r1下面是多dex加载的时序图: Android项目有两种方式支持多dex:1. 项目中的Application类继承MultiDexApplication。2. 在自己的Application类的attachBaseContext方法中调用MultiDex.install(this);。我从Mul
2015-03-27 00:06:45
11292
1
原创 构造多dex的apk
步骤1. 在IntelliJ IDEA中创建一个Android项目。2. 修改AndroidManifest.xml文件,在``标签中添加"android:name="android.support.multidex.MultiDexApplication"3. 修改app模块下的`build.gradle`文件,在`defaultConfig`中添加一行:`multiDexEnabl
2015-03-25 10:24:56
9145
原创 .\test.sct(5): error: L6236E: No section matches selector - no section to be FIRST/LAST.
.\test.sct(5): error: L6236E: No section matches selector - no section to be FIRST/LAST.
2014-10-19 10:08:53
3828
原创 Android Art模式下openDexFile的调用
在DexFile.java中openDexFile方法调用了native方法openDexFileNative
2014-09-19 18:21:31
4962
原创 VisualGDB编译android代码失败原因及解决方案
VisualGDB编译android代码失败后,如果显示“某个工具从以下位置返回了错误代码: "正在执行生成文件项目操作"”一、
2014-04-05 10:15:37
2022
原创 android编译错误解决办法
一、htmlDir not a directory: out/target/common/docs/gen/bin/bash: line 26: 21282 Killed LD_LIBRARY_PATH=out/host/linux-x86/lib javadoc \@out/target/product/sdkDemo/obj/JAVA_LIBRARIE
2014-04-03 20:13:47
11950
原创 PPT转PDF记
老大让我给一个工具写一个使用说明,我听成了用PPT写,没想到交工的时候老大说要写成PDF那就在网上找转换工具吧。用了两个转换工具PowerPoint/PPT to Pdf Converter、PDF虚拟打印机,均没有成功转换成PDF文件,后来在网上查到office 2007居然有差距可以直接将word、ppt转换成PDF我擦,前面的前戏浪费了我两个小时啊插件使用方法转载自:http
2013-03-27 17:14:11
2417
原创 MrleeProtect游戏保护
MrleeProtect驱动保护,是我写的一个功能较为完善且稳定的一个保护。因为MP保护的文件有很多,而且还有R3层的部分,经过讲解视频的讲解和配合完善的注释,可以让大家对于保护的流程和功能有更清晰更快的理解。注意:1. 此套保护仅在Windows XP SP3系统上做过测试。2. 保护程序是在VS2010环境下编译的。MrleeProtect效果:1. 防止受保护进程
2013-02-25 10:11:05
1084
原创 游戏收费模式 - 颠覆传统收费模式
-- 引言 此方法需要完整策划和一套紧密的组合拳。对于任何公司来说都是机会,但如果此方法一旦普及,则将对小型游戏公司产生沉重打击。 转载请说明出处:http://blog.youkuaiyun.com/zylc369/article/details/7957142 首先,游戏完全免费,不收任何点卡和道具费用。那么如何盈利哪? 羊毛不出在玩家身上,从合作商身上拔,解决了玩家玩游
2012-09-08 07:37:22
1941
1
原创 我做的第一个项目的项目总结
1.了解客户需求了解客户需求不可能一次了解完全,因为客户毕竟不是专业人士,了解客户需求的时候可以根据自己的经验去提醒客户是否需要加某些功能,能了解多少就了解多少,因为客户不会总在你身边。2.敏捷开发一般了解需求可能需要很多次,但我们不能等到需求完全确定的时候再开始做项目,我们要将已经十分确定的需求先做了,等这部分做完了,另一部分需求就很可能已经确定了,这样循序渐进不耽误事儿。
2012-03-16 13:36:41
952
原创 进程权限与OpenProcess
今天写了一个DLL,通过OpenProcess获取一个进程的句柄,可是OpenProcess总是返回0。但这个段代码不写在DLL中,而是嵌入使用这段代码的调用代码时,却可以正常工作,让我很郁闷。查了半天发现,貌似是需要给进程提权,有更高的权限时,OpenProcess才能正常使用,我试了试,果然可以。这里是给程序提权代码的地址和大家分享下:标题:三个给进程提权的方法 地址:http
2011-12-02 15:25:34
3337
2
转载 对 Windows驱动开发技术详解 第九章的(IRP的同步)自我理解
对 Windows驱动开发技术详解 第九章的(IRP的同步)自我理解BY:ALALMN—飞龙 QQ:316118740 BLOG:http://hi.baidu.com/alalmn同步异步处理(这个也都是很好理解的) 在R0和R3下都给了例子////////////////////////////////////////////////////////////////////
2011-11-30 10:49:14
685
转载 对 Windows驱动开发技术详解 第八章的(驱动程序的同步处理)自我理解
对 Windows驱动开发技术详解 第八章的(驱动程序的同步处理)自我理解BY:ALALMN—飞龙 QQ:316118740 BLOG:http://hi.baidu.com/alalmn本章主要对等待 创建新线程 对事件进行初始化操作 信号灯 互斥体 从R0和R3都做了介绍方便大家对比///////////////////////////////////////////
2011-11-30 10:48:23
862
原创 中断请求(IRQ)中断控制器(PIC)
///////////////////////////////////////////////////////////////////////////////中断请求(IRQ)中断控制器(PIC)PIC的中断向量IRQ编号 设备名称 用途IRQ0 Tine 计算机系统计时器IRQ1 Key
2011-11-30 10:42:53
1406
原创 互锁函数
///////////////////////////////////////////////////////////////////////////////互锁函数ExInterlockedXX系列函数通过自旋锁实现 不可以操作分页数据ExInterlockedXX互锁操作函数内核函数 功能ExInterlockedAdd
2011-11-30 10:42:17
2504
原创 WaitForSingleObject、WaitForMultipleObjects、CreateThread
///////////////////////////////////////////////////////////////////////////////用户模式的等待WaitForSingleObject等待一个同步对象DWORD WaitForSingleObject( HANDLE hHandle, //同步对象句柄 DWORD dwMillisecond
2011-11-30 10:40:36
1877
原创 KeInitializeEvent、KeInitializeSemaphore、KeInitializeMutex
///////////////////////////////////////////////////////////////////////////////内核模式下事件对象VOID KeInitializeEvent( IN PRKEVENT Event, //这个参数是初始化事件对象的指针 IN EVENT_TYPE Type, //这个参数是时间的类
2011-11-30 10:38:17
3763
原创 CreateEvent、CreateSemaphore、ReleaseSemaphore、CreateMutex
///////////////////////////////////////////////////////////////////////////////用户模式 对事件进行初始化操作HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, // 安全属性 BOOL bManualReset, // 复位方式 BO
2011-11-30 10:35:42
2863
原创 PsCreateSystemThread函数说明
// 创建新线程NTSTATUS PsCreateSystemThread( OUT PHANDLE ThreadHandle, //用于输出,这个参数得到新创建的线程句柄 IN ULONG DesiredAccess, //是创建的权限 IN POBJECT_A
2011-11-30 10:26:52
4171
原创 主线程等待子线程完成
#include #include // _beginthread, _endthread#include // 创建线程UINT WINAPI Thread(LPVOID para){ printf("进入Thread......\n"); // 等待5秒 Sleep(5000); printf("离开Thread......\n"); return 0;}int
2011-11-29 23:08:38
1228
原创 使用互斥体同步线程
#include #include // _beginthread, _endthread#include /* * 可以理解信号灯内部有N个灯泡。 * 如果有一个灯泡亮着,就代表信号灯处于激发状态,如果全灭,则代表信号灯处于未激发状态。 */// 创建线程 1UINT WINAPI Thread1(LPVOID para){ HANDLE* phMutex = (HAN
2011-11-29 22:53:12
1308
原创 Win API 互斥体
互斥体是一种常用的同步对象,互斥体可以避免多个线程争夺同一个资源。例如,多线程环境中,只能有一个线程占有互斥体。获得互斥体的线程如果不释放互斥体,其他线程永远不会获得这个互斥体。互斥体的概念类似于同步事件,所不同的是同一个线程可以递归获得互斥体。递归获得互斥体的意思是,得到互斥体的线程还可以再次获得这个互斥体,或者说互斥体对于已经获得互斥体的线程不产生“互斥”关系。而同步事件不能递归获取。互斥
2011-11-29 22:15:11
1335
原创 使用信号灯同步线程
#include #include // _beginthread, _endthread#include /* * 可以理解信号灯内部有N个灯泡。 * 如果有一个灯泡亮着,就代表信号灯处于激发状态,如果全灭,则代表信号灯处于未激发状态。 */// 创建线程UINT WINAPI Thread1(LPVOID para){ printf("进入Thread1......\
2011-11-29 21:52:03
790
原创 使用事件同步线程
#include #include // _beginthread, _endthread#include // 创建线程UINT WINAPI Thread1(LPVOID para){ printf("进入Thread1......\n"); HANDLE* phEvent = (HANDLE*)para; // 设置该事件激发 SetEvent(*phEvent);
2011-11-29 21:13:27
528
原创 _beginthread、_beginthreadEx、CreateThread之间的注意点
首先,线程句柄要通过CloseHandle关闭,但不是每个句柄都需要关闭,内核对象的句柄需要关闭。关于内核对象的介绍参考:http://www.cppblog.com/zwp/archive/2008/12/27/70525.html介绍_beginthread、_beginthreadEx、CreateThread之间的关系参见一下内容:http://blog.youkuaiyun.com/
2011-11-29 21:07:01
1182
原创 _beginthreadex函数说明
//第1个参数:安全属性,NULL为默认安全属性//第2个参数:指定线程堆栈的大小。如果为0,则线程堆栈大小和创建它的线程的相同。一般用0//第3个参数:指定线程函数的地址,也就是线程调用执行的函数地址(用函数名称即可,函数名称就表示地址)//第4个参数:传递给线程的参数的指针,可以通过传入对象的指针,在线程函数中再转化为对应类的指针//第5个参数:线程初始状态,0:立即运行;CREATE
2011-11-29 19:18:29
4128
原创 CreateEvent函数说明
// 参数1:LPSECURITY_ATTRIBUTES pEventAttributes 安区参数 一般用户不用考虑它,传入NULL。 // 参数2:表示创建的事件是否是手动模式。 // 如果是TRUE,则是手动模式的事件,事件处于激发状态后,需要手动设置才能回到未激发状态。 // 如果是FALSE,则是自动模式,当事件处于激发状态后,遇到任意一个等待(如:W
2011-11-29 19:09:39
904
通过 HOOK PsCreateSystemThread 监控线程,入口函数特征码对比来过hs防护软件的保护,asm源码
2012-10-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人