QObject
QObject类是Qt对象模型的核心,绝大部分的Qt类都是从这个类继承而来。这个模型的中心特征就是一个叫做信号和槽的机制来实现对象间的通讯,你可以把一个信号和另一个槽通过 connect 方法连接起来,并可以 …
QObject类是Qt对象模型的核心,绝大部分的Qt类都是从这个类继承而来。这个模型的中心特征就是一个叫做信号和槽的机制来实现对象间的通讯,你可以把一个信号和另一个槽通过 connect 方法连接起来,并可以 …
在某些FindXXX.cmake模块中经常出现下面这两条命令:
find_package(PkgConfig QUIET)
pkg_check_modules(PC_GLIB2 QUIET glib-2.0)
主要在一些第三方库没有提供CMake模块,只提供了pkg-config的配置,需要开发者自己开发CMake模块。 本文详细介绍这两条命令的含义。
cmake_minimum_required(3.18 …
ELF文件格式的讨论已经存在非常多的文章,这里试图从另一个角度来讨论如何学习ELF文件格式。OAID SDK已经更新到1.0.30了,发现代码保护方式变化了,采用了自实现Linker方式来保护代码,libmsaoaidsec.so 就是负责释放真实的so。但本文不讨论释放和 …
在Android安全开发中,经常需要获取进程内模块的加载基地址,获取方法一般有:
上述这些方法比较慢,用于一些检测任务是可以的,考虑这 …
最近开发一个基于unicron的模拟执行库,为了更好地模拟进程和线程的一些特性(比如线程本地存储),需要知道Android进程的实际内存布局,这里主要介绍线程栈的布局,非主线程可以通过分析pthread_create实现过程 …
最近分析一个Android平台上的so,发现JNI函数命名如下:
函数名字和自己平时写代码不一样,故重新学习JNI方法的签名规则。
可以使用javah自动生成JNI函数签名,来探索函数命名规则。
javah -jni 包名.类名
一般类的普 …
在正式开始之前,需要明确几个概念的中文和英文对照:
装饰器是一种设计模式,在Python中是一个非常有用的特性。可以在不修改函数、方法、类的情况下,修改(扩展)它们的行为。常见的装饰器如classmethod、staticmethod等,以@开始 加以使用,其实@只是Python提供的一个语法糖。
一个使用装饰器 …
/* Unicorn Emulator Engine */
/* By Nguyen Anh Quynh, 2015 */
/* Sample code to demonstrate how to emulate ARM code */
#include <unicorn/unicorn.h>
#include <string.h>
// code to be emulated
#define THUMB_CODE "\x10\xb5\x4f\xf6\x00\x74\xe8\xbf\x10\xbd"
// memory address where emulation starts
int STACK_MEMORY_BASE = 0x00000000;
int STACK_MEMORY_SIZE = 0x00800000;
int HOOK_MEMORY_BASE = 0x1000000;
int HOOK_MEMORY_SIZE = 0x0800000;
static void hook_code …
#include <iostream>
using namespace std;
int main(int argc,char* argv[]){
cout << "Hello,World" << endl;
return 0;
}
# -*- coding:utf-8 -*-
import sys,os
if __name__ == '__main__':
print('Hello,World')
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[]){
string s = "Hello,Hexo";
cout << s << endl …