char函数

MachO文件详解--逆向开发

人走茶凉 提交于 2019-12-05 10:00:36
今天是逆向开发的第5天内容--MachO文件(Mac 和 iOS 平台可执行的文件),在逆向开发中是比较重要的,下面我们着重讲解一下MachO文件的基本内容和使用。 一、MachO概述 1. 概述 Mach-O是Mach Object文件格式的缩写,iOS以及Mac上可执行的文件格式,类似Window的exe格式,Linux上的elf格式。Mach-O是一个可执行文件、动态库以及目标代码的文件格式,是a.out格式的替代,提供了更高更强的扩展性。 2.常见格式 Mach-O常见格式如下: 目标文件 .o 库文件 .a .dylib .framework 可执行文件 dyld .dsym    通过 file 文件路径查看文件类型 我们通过部分实例代码来简单研究一下。 2.1目标文件.o 通过test.c 文件,可以使用clang命令将其编译成目标文件.o 我们再通过 file 命令(如下)查看文件类型 是个Mach-O文件。 2.2 dylib 通过cd /usr/lib命令查看dylib 通过file命令查看文件类型 2.3 . dsym 下面是一个截图来说明.dsym是也是Mach-O文件格式 以上只是Mach-O常见格式的某一种,大家可以通过命令来尝试。 3. 通用二进制文件 希望大家在了解App二进制架构的时候,可以先读一下 本人 写 的另一篇博客关于armv7

mysql物理设计

╄→尐↘猪︶ㄣ 提交于 2019-12-05 09:49:47
定义数据库,及表的命名规范: 1,数据库,表及字段的命名要遵循可读性原则, 表意性原则, 长名原则(不尽量或者不使用缩写,使用长一些的命名,这样以后会看起来更明白,但是也不太非常的长) 通一 主键的名称,比如是 id或者是 _id 等,这样比较好管理。表里面的字段命名也不需要带上表名什么的。什么意思就是什么意思就好,没必要搞得这样子。不过表命名可以 可是 模块的名称 作为前缀 ,比如有一个 模块 crm ,那么 crm 模块里面 用到的表是 user ,那么表名 就起为 crm_user这样比较好识别和 管理。 个人认为尽量不要使用 uuid 的bigint ,一般的小中型项目,int无符号都可以满足了。 对于分布式的主键呢。 一般都是使用 varchar 的 UUID,这样比较方便管理和使用对于分布式来说。 但是对于一些对接其他系统的场景,ID可能会让你痛不欲生,而洗数据也是体力活儿。如果ID过长极容易产生前端显示问题,毕竟js的long是15位的。所以实际运用中ID长度也要严格把控。所以UUID 才保存为varchar类型,而不是 bigint 这样比较方便写代码和传给客户端,不用进行 类型转换了。 文/codertom(简书作者) 原文链接:http://www.jianshu.com/p/a3828b42fce8 著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”

NX二次开发-将工程图上的每个视图导出PNG图片

吃可爱长大的小学妹 提交于 2019-12-05 09:48:57
大概思路是将每个视图导出PDF,在调另一个项目的EXE(PDF转PNG) 1 //ExportDrawViewPng 2 3 // Mandatory UF Includes 4 #include <uf.h> 5 #include <uf_object_types.h> 6 7 // Internal Includes 8 #include <NXOpen/ListingWindow.hxx> 9 #include <NXOpen/NXMessageBox.hxx> 10 #include <NXOpen/UI.hxx> 11 12 // Internal+External Includes 13 #include <NXOpen/Annotations.hxx> 14 #include <NXOpen/Assemblies_Component.hxx> 15 #include <NXOpen/Assemblies_ComponentAssembly.hxx> 16 #include <NXOpen/Body.hxx> 17 #include <NXOpen/BodyCollection.hxx> 18 #include <NXOpen/Face.hxx> 19 #include <NXOpen/Line.hxx> 20 #include <NXOpen/NXException

MD5消息摘要算法的C++代码实现(含注释)

我怕爱的太早我们不能终老 提交于 2019-12-05 07:57:11
#include <iostream> #include <string> using namespace std; void H_getMD5(const unsigned long Message[16]); static unsigned long State[4]; /* MD5值是由4个32bit的数组成的,也就是4个4Byte长的无符号整型 */ static unsigned long Count[2]; /* MD5算法除了要对原字符串按bit填充1和0之外,还需要在末尾附上64bit 的值,值是用字符串的bit长度 mod 2^64,这两整型是8byte,共64bit */ static unsigned char buffer[64]; /* MD5按每 512bit 一组来处理,这用来存放每组的 512bit */ /* Left_Shift表示,对x进行循环左移 n 位 */ #define Left_Shift(x,n) (((x)<<(n))|((x)>>(32-(n)))) /* F、G、H、I 4个函数是MD5的4个基本的非线性函数 */ #define F(x,y,z) (((x)&(y))|((~x)&(z))) #define G(x,y,z) (((x)&(z))|((y)&(~z))) #define H(x,y,z) ((x)^(y)^

指针数组以及指向指针的指针

北城以北 提交于 2019-12-05 06:42:34
#include <stdio.h> #include <string.h> #define MAXLINES 5000 /*进行排序的最大文本行*/ char *lineptr[MAXLINES]; /*指向文本行的指针数组*/ int readlines(char *lineptr[],int nlines); void writelines(char *lineptr[],int left, int right); /*对输入的文本行进行排序*/ main() { int nlines; /*读取的输入行数目*/ if((nlines=readlines(lineptr,MAXLINES))>=0) { qsort(lineptr,0,nlines); return 0; } else { printf("error:input too big to sort\n"); return 1; } } #define MAXLEN 1000 /*每个输入文本行的最大长度*/ int getline(char *, int); char *alloc(int); /*readlines函数:读取输入行*/ int radlines(char *lineptr[],int maxlines) { int len,nlines; char *p,line[MAXLINE];

PhpStudy BackDoor2019 深度分析

北慕城南 提交于 2019-12-05 06:27:50
笔者《Qftm》原文发布《合天》: https://mp.weixin.qq.com/s?__biz=MjM5MTYxNjQxOA==&mid=2652852661&idx=1&sn=1dd018a6694b79e18087e31ac44d44fa&chksm=bd592d788a2ea46eae02350200b61e29bb944c5c444bd5c1282d58a3d43557104deb31c1d214&mpshare=1&scene=23&srcid=&sharer_sharetime=1574268683033&sharer_shareid=8f1d1cefeab55e526c6752e59ae2efde#rd 关于《PhpStudy BackDoor》风波已经过去有一段时间了,由于,前段时间一直忙于其它事情QAQ,今天有时间对该事件重新回溯&深度分析。 *严正声明:本文仅限于技术讨论与分享,严禁用于非法途径 背景分析 2019年9月20日,杭州市公安局举行新闻通报会,通报今年以来组织开展打击涉网违法犯罪暨“净网2019”专项行动战果,通报内容中提到国内著名的PHP调试环境程序集成包Phpstudy软件遭受到以马某为首的国内黑客团伙攻击并被植入后门。 Phpstudy集成环境包在国内的使用用户逾百万,据悉,此次后门攻击事件可追溯到2016年

iOS-代码混淆加固策略

微笑、不失礼 提交于 2019-12-05 05:55:15
点击上方“ iOS开发 ”,选择“置顶公众号” 关键时刻,第一时间送达! 作者:树下敲代码的超人 链接:https://www.jianshu.com/p/628a0c232c2a iOS开发整理发布,转载请联系作者获得授权 对于IOS来说,由于系统是封闭的,APP上架需要通过App Store,安全性来说相当高。但是对于大厂和知名APP而言,别人给的安全保障永远没有自己做的来得踏实。所以对于大厂、少部分企业级和金融支付类应用来说加固是相当重要的。 下面是目前几个专业加固大厂提供的加固策略 网易 网易 网易安全三板斧: 第一板斧是防静态分析,这里包括字符串加密、符号混淆、代码逻辑混淆和游戏存档加密; 第二板斧是防动态调试、反调试和通信安全(数据加密); 第三板斧是外挂检测、加速挂、内存修改挂和自动任务挂等 爱加密 爱加密 safengine afengine 几维安全 几维安全 梆梆安全 梆梆安全 本文将针对以上几点进行实现,对于一些不太容易实现的将会做方向性讨论 字符串加密 代码混淆(方法命,类命,变量名,符号表) 代码逻辑混淆 反调试 字符串加密 对字符串加密的方式目前我所了解到掌握到的最可靠方式就是用脚本将代码中的所有标记需要加密的字符串进行异或转换,这样代码中就不存在明文字符串了。当然第三方的字符串加密不可能这么简单,具体怎么做的我也不太清楚

linux与Windows进程控制

牧云@^-^@ 提交于 2019-12-05 05:30:41
进程管理控制 这里实现的是一个自定义timer用于统计子进程运行的时间。使用方式主要是 timer [-t seconds] command arguments 例如要统计 ls 的运行时间可以直接输入 timer ls ,其后的 arguments 是指所要运行的程序的参数。如: timer ls -al 。如果要指定程序运行多少时间,如5秒钟,可以输入 timer -t 5 ls -al 。需要注意的是,该程序对输入没有做异常检测,所以要确保程序输入正确。 Linux 程序思路 获取时间 时间获取函数使用 gettimeofday ,精度可以达到微秒 struct timeval{ long tv_sec;*//秒* long tv_usec;*//微秒* } 子进程创建 fork() 函数 #include <sys/types.h> #include <unistd.h> pid_t fork(void); fork 调用失败则返回-1,调用成功则: fork函数会有两种返回值,一是为0,一是为正整数。若为0,则说明当前进程为子进程;若为正整数,则该进程为父进程且该值为子进程pid。关于进程控制的详细说明请参考: 进程控制 exec 函数 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序

db2日期和时间常用汇总

谁说我不能喝 提交于 2019-12-05 03:31:33
转摘自:http://www.cnblogs.com/wanghonghu/archive/2012/05/25/2518604.html 如有侵权请联系,谢谢! db2日期和时间常用汇总 1、db2可以通过SYSIBM.SYSDUMMY1、SYSIBM.DUAL获取寄存器中的值,也可以通过VALUES关键字获取寄存器中的值。 SELECT ' HELLO DB2 ' FROM SYSIBM.SYSDUMMY1; -- HELLO DB2 SELECT ' HELLO DB2 ' FROM SYSIBM.DUAL; -- HELLO DB2 VALUES ' HELLO DB2 ' ; -- HELLO DB2 2、CURRENT DATE获取当前日期;CURRENT TIME获取当前时间;CURRENT TIMESTAMP获取当前时间戳(含年、月、日、时、分、秒)。 VALUES CURRENT DATE -- 2012/5/25 0:00:00; VALUES CURRENT TIME -- 20:48:53; VALUES CURRENT TIMESTAMP -- 2012/5/25 20:49:12; 3、YEAR()获取年;MONTH()获取月;DAY()获取日; HOUR()获取小时;MINUTE()获取分钟;SECOND()获取秒; DATE()获取日期;TIME(