
C++
文章平均质量分 53
小道安全
这个作者很懒,什么都没留下…
展开
-
浅谈程序的数字签名
数字签名原理解析原创 2022-08-25 09:52:21 · 2604 阅读 · 0 评论 -
API安全的应用和分析
API安全攻防应用原创 2022-08-24 15:01:07 · 1505 阅读 · 0 评论 -
软件开发过程中常见漏洞的解析
软件漏洞的解析原创 2022-07-19 18:44:38 · 2096 阅读 · 0 评论 -
arm汇编中DCB、DCW、DCD、DCQ指令
背景在ida中进行分析so文件,就是elf文件,它所对应的arm汇编,在汇编中会时常碰到一些下面的汇编指令。DCB是arm汇编中的伪指令,下面就针对这个指令相关做下小记录。伪指令及DC系列指令ARM 伪指令它不是ARM 指令集中的指令,只是为了方便编译器编程而定义的指令,使用时可以像其他ARM 指令一样使用,但在编译时这些指令将被等效的ARM指令代替。DCB它关联的伪指令有DCB、DCW、DCD、DCQ指令。它们都是用于分配一段内存单元,并对其进行做初始化工作。不过它们分配的内存空间大小不同原创 2022-05-12 10:02:40 · 18986 阅读 · 2 评论 -
代码宏定义中使用循环语句
背景今天无意间在看某开源的代码,看到了下面的一段比较有趣的代码。它有趣的地方在于使用do{ …}while(0)循环语句,并且使用的在于defind的宏定义函数中。/** * Assert that err matches expect */#define uc_assert_err(expect, err) \do {原创 2022-04-20 14:55:32 · 1806 阅读 · 0 评论 -
几个容易搞混的指针类型
指针类型原创 2022-03-23 16:48:03 · 163 阅读 · 0 评论 -
对中病毒微信样本的逆向分析
https://mp.weixin.qq.com/s/243hAp8rGcjHXkoWSG6xgQ原创 2022-02-10 23:50:47 · 1876 阅读 · 0 评论 -
探索android系统中的强指针实现
强指针和弱指针基础android中的智能指针包括:轻量级指针、强指针、弱指针。强指针:它主要是通过强引用计数来进行维护对象的生命周期。弱指针:它主要是通过弱引用计数来进行维护所指向对象的生命周期。如果在一个类中使用了强指针或者弱指针的技术,那么这个类就必须从RefBase这个类进行做继承,因为强指针和弱指针是通过RefBase这个类来提供实现的引用计数器。强指针和弱指针关系相对于轻量级指针来说更加亲密,因此他们一般是相互配合使用的。强指针原理分析以下针对源码的分析都是来源于android5.0原创 2021-10-06 23:43:24 · 572 阅读 · 0 评论 -
解析android系统中的轻量级指针
智能指针来源由于android系统底层的很大的一部分是用C++实现的,C++的开发就难免会使用到指针的这个知识 点。而C++的难点和容易出问题的也在于指针。使用指针出错,常常会引发带来对项目具有毁灭性的错误,内存泄漏、逻辑错误、系统崩溃。引发指针错误情况表现常常有如下几个表现情况:1.申请了内存空间,但是忘记释放指针所指向的对象占用的内存空间。2.使用了无效的指针。因此在android的C++代码部分采用了智能指针的技术。智能指针通过一种能够自动危害对象引用计数的技术。来解决C++中指针存在的缺陷原创 2021-10-06 12:36:09 · 470 阅读 · 2 评论 -
Binder线程池的启动流程分析
理论基础BinderBinder它是android中的一种进程间通信机制,它主要采用的是CS架构模式。Binder框架中主要涉及到4个角色Client、Server、Service Manager及Binder驱动,其中Client、Server、Service Manager运行在用户空间,Binder驱动运行在内核空间。线程池线程池它是一种用于多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,原创 2021-10-04 22:12:06 · 463 阅读 · 2 评论 -
解析dex2oat的实现
简介在Android系统5.0及以上系统开始逐渐丢弃Dalvik虚拟机,由于ART虚拟机对内存分配和回收都做了算法优化,降低了内存碎片化程度,回收时间也得以缩短,所有android系统5.0及以上都在主推ART虚拟机。在ART虚拟机中ART则会将Dex通过dex2oat工具编译得到一个ELF文件,它是一个可执行的文件。所以下面我们就针对ART的dex2oat实现进行做分析。dex2oat介绍Dex2oat的全称是:dalvik excutable file to optimized art file,原创 2021-09-09 10:12:45 · 3593 阅读 · 1 评论 -
android匿名共享内存原理浅读
理论基础android系统在应用程序框架层中提供了两个C++类MemoryHeapBase和MemoryBase来创建和管理匿名共享内存。如果一个进程需要与其他进程共享一块完整的匿名共享内存,那么就可以通过使用MemoryHeapBase类类创建这块匿名共享内存。如果一个进程创建一块匿名共享内存后,只希望与其他进程共享其中的一部分,那么就可以通过MemoryBase类来创建这块匿名共享内存。IMemory.h:定义内存相关类的接口,表示堆内存的类IMemoryHeap和BnMemoryHeap,表示一原创 2021-08-18 22:23:10 · 1256 阅读 · 1 评论 -
从汇编角度看函数
函数1. 函数简介2. 从汇编中看函数1. 函数简介在代码开发过程中,函数是一个必然存在的,它是一个固定的一个程序段,或称其为一个子程序,它在可以实现固定运算功能的同时还带有一入口和一个出口,所谓的入口,就是函数所带的各个参数,我们可以通过这个入口,把函数的参数值代入子程序,供计算机处理,所谓出口,就是指函数的计算结果,也称为返回值,在计算机求得之后,由此口带回给调用它的程序。函数主要需要关注两个方向问题:函数参数,函数返回值2. 从汇编中看函数函数功能的实现部分PUSH EBP 提升堆栈原创 2021-07-29 10:58:04 · 570 阅读 · 1 评论 -
多线程同步方法
文章目录1.互斥锁2.条件变量3.信号量1.互斥锁pthread_mutex_init(初始化锁)pthread_mutex_lock(阻塞加锁)pthread_mutex_trylock(非阻塞加锁)pthread_mutex_unlock(解锁)pthread_mutex_destroy(销毁锁)2.条件变量pthread_cond_init(初始化条件变量)pthread_cond_wait(无条件等待)pthread_cond_timewait(计时等待)pthread_con原创 2021-05-22 07:11:24 · 289 阅读 · 0 评论 -
对伪造docx病毒文件的完整分析
文章目录1.病毒文件的基本信息分析1.1 病毒文件具体展示1.2 病毒信息具体提示1.3 trojan.generic病毒的定义信息1.4 分析病毒的加壳情况1.5 分析病毒所依赖的模块信息1.6 监控病毒文件行为2.病毒文件的关键功能信息分析2.1 病毒样本的反调试功能2.2 每次只能启动一个病毒样本实例2.3 病毒文件结束自身进程2.4 启动原始的docx文件2.5 进行信息收集上传3. 总结1.病毒文件的基本信息分析1.1 病毒文件具体展示病毒文件用的资源图标是wps的图标,以此让大家误认为是d原创 2021-04-07 17:20:55 · 1448 阅读 · 8 评论 -
VC实现将网址解析出所有ip地址
通过调用gethostbyname 系统函数进行解析void GetHostNamebyIp(char* hostName){ if(NULL == hostName) { return; } int WSA_return = 0; WSADATA WSAData; HOSTENT *host_entry; char szIP[1024] = {0}; AfxMessageBox(hostName); WSA_return=WSAStartup(0x0202,&WS原创 2021-03-31 10:56:32 · 3270 阅读 · 8 评论 -
教你如何写更安全的代码
文章目录1.技术背景2.字符串的安全方案1.直接使用字符串2.字符串赋值到数组使用3.调用系统函数安全方案1.直接调用系统的函数2.自定义实现函数再调用函数4.总结1.技术背景作为程序开发人员,我们害怕,听到开发的代码,被测试出bug;我们更害怕,听到我们所开发出来的产品上线了,被新手安全研究员给反汇编逆向破解,代码功能直接被人给盗取了。下面根据我自己的一些项目经验,跟大家分享两点如何能开发出相对安全的代码。以下方案不局限于任何语言代码开发,是一个相对通用的安全编码方案。2.字符串的安全方案1.直接原创 2021-03-23 10:25:59 · 1835 阅读 · 5 评论 -
如何提高自己代码的安全性?
编码安全技巧: 请点击链接.原创 2021-03-20 23:53:10 · 1184 阅读 · 0 评论 -
夺取应用程序 “制空权“:内存数据
文章目录1.技术背景2.效果展示3.代码实现4. 知识清单PE结构概述PEB结构概述调用系统未导出函数方法5. 关键函数及结构解析1.ReadProcessMemory函数2. _LIST_ENTRY结构3. _PEB_LDR_DATAS结构4. _LDR_MODULE 结构1.技术背景在病毒查杀,应用安全对抗,静态逆向应用,动态逆向应用,最重要的对象就是,应用程序的内存数据。病毒查杀对抗:需要获取查杀对象的内存数据进行和病毒库的特征做比对。应用安全对抗:需要保护自身的内存数据不被转存。静态逆向原创 2021-03-15 22:29:22 · 1505 阅读 · 8 评论 -
应用程序内存遍历获取
链接: 内存获取.原创 2021-03-15 10:40:01 · 500 阅读 · 0 评论 -
C++调用json案例总结
文章目录1.JSON简介2.json的下载3.json编译成lib4.C++调用json1.JSON简介JSON(JavaScript Object Notation, JS 对象简谱) 它是一种轻量级的数据交换格式。基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,是一个完全独立于编程语言的文本格式来存储和表示数据。因为简洁和清晰的层次结构的特性使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。2.json的下载以原创 2021-03-11 11:13:50 · 1107 阅读 · 2 评论 -
未定义UNICODE_STRING 标识解决方案
文章目录1.问题描述2.问题查找3.问题解决1.问题描述我们在编码中使用到UNICODE_STRING这个类型,那么就需要包含#include <winternl.h>头文件。但是当我们同时包含#include <Windows.h> 头文件的时候。包含的具体情况是如下图情况就会出现找不到UNICODE_STRING这个类型2.问题查找通过多次测试分析主要问题还是头文件包含顺序导致冲突而无法识别到#include <winternl.h>头文件,从而无法使原创 2021-03-11 10:41:12 · 1534 阅读 · 0 评论 -
一文带你掌握监控进程技术实现
文章目录1.技术应用背景2.效果展示3.功能代码实现4.知识背景清单5.WMI相关概念6.WMI架构解析1.技术应用背景目前已知在杀毒厂商以及游戏厂商的安全对抗过程中,常常需要准确的监控收集并进行检测用户创建打开的EXE应用程序是否是安全的。同时也可以将此技术应用于其他应用的安全对抗方案中。那么如何去准确的监控和收集用户每次点击打开的EXE应用程序信息呢?接下来我就进行还原实现下如何准确的监控并收集用户每次点击打开EXE应用程序技术。2.效果展示下图展示的是开启监控程序,这是进行监控电脑上包括系统自原创 2021-03-01 00:09:54 · 4239 阅读 · 14 评论 -
应用层的程序监控方案
链接: [监控方案]https://mp.weixin.qq.com/s?__biz=MzUxODkyODE0Mg==&mid=2247484190&idx=1&sn=3bcd6f613a2a16d058b40d73f33d5ffc&chksm=f980217fcef7a869ebcb150571bde3262dbfb4318261b72dde531423364ab7d151f8d1b40292&mpshare=1&scene=1&srcid=0226原创 2021-02-26 14:25:30 · 912 阅读 · 1 评论 -
专注逆向安全开发的研究
十年的安全逆向对抗研究,专注于逆向,安全开发,病毒木马对抗的技术输出,欢迎关注我的公众号 “游戏安全攻防”。原创 2021-01-22 17:43:46 · 904 阅读 · 2 评论 -
游戏客户端安全方案。
客户端版本号也能让游戏客户端变得不安全。移动端的游戏通常都会根据客户端版本号决定是否要提示客户端升级或下载新的资源。开发通常都会使用 1.1, 1.3, 1.6 这样的版本号。连入网络后和最新客户端版本号进行比较,决定是否升级。进行版本比较的代码,使用了字符串比较。我们都应该知道对于字符串来说: "1.2" 是大于 "1.1", "2.0" 是大于 "1.9" 。而且支持含有多个小数点的版本号,例如 "1.1.0" 是大于 "1.0.9" 的。一行代码,看上去很简单不会有什么问题。在实际原创 2021-01-04 14:23:28 · 5770 阅读 · 9 评论 -
android的主流壳特点。
1.爱加密加固:爱加密加固一般有两个Application入口类,为SuperApplication和NativeApplication,壳的入口点为com.shell.SuperApplication,assets目录下有ijiami.dat、ijiami2.dat、ijiami.ajm,壳的so为libexec.so和libexecmain.so,它们可能在libs目录或assets目录中。2.梆梆加固:Assets目录下有secData0.jar,libs目录下为libSecShell.s原创 2021-01-06 16:48:06 · 6452 阅读 · 9 评论 -
必须知道的导致程序崩溃点。
发生事情的背景:1.在代码开发过程中,有的时候我们会在源代码中添加一些调试代码和信息打印,因为想看看程序执行到这个点会发生些什么。(每次出现这种情况的时候,我建议你想想是否添加一个单元测试用例会更有意义?)调试完就没用的代码,通常没有必要留着。但有的时候,我们仍会留下一些日志打印,以便出现问题时可以更好地进行诊断。2.在C++代码中可以通过条件编译来防止调试代码影响到生产环境,我们也可以通过日志级别来控制调试信息的输出。不过由于疏忽,有时我们仍然可以在生产环境的日志里看到开发人员留下的古怪信息,如果不小原创 2021-01-14 18:18:12 · 1189 阅读 · 2 评论