- 博客(416)
- 资源 (56)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 静态反调试技术(2)
NtQueryInformationProcess()下面介绍一种利用NtQuertInformationProcess()API探测调试器的技术。通过NtQuertInformationProcess()API可以获取各种与进程相关的信息。函数定义如下NtQueryInformationProcess ( IN HANDLE ProcessHandle, // 进程句柄 IN PROCESSINFOCLASS InformationClass, // 信息类型 OUT PVOID Process
2021-01-26 11:43:48
4382
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 静态反调试技术(1)
声明静态反调试目的被调试的进程用静态反调试技术来侦测自身是否处于被调试状态,若侦测到处于被调试的状态,则执行非常规代码(主要是终止代码)来阻止。具体的实现方法包括调试器检测方法,调试环境检测方法,强制隔离调试器的方法等等。反调试破解方法主要用来从探测代码获取信息,然后修改信息本身使反调试技术失效。注意许多静态反调试技术对OS具有很强的依懒性。这意味着静态反调试技术在Windows XP 系统下可以正常使用,而在Windows Vista/7操作系统中可能失效PEB...
2021-01-25 22:43:10
3931
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 详解虚函数的实现过程之菱形继承(5)
大家看到标题,会不会菱形继承的虚表会不会是重复的呢?祖父类的虚表会不会在子类会不会是两份相同呢?那么我们一起来探索一下吧,冲冲冲!!首先我们来分析一下:它一共定义了四个类,分别为CFurniture,CSofa,CBed和CSofaBed。CFurniture为祖父类,从CFurniture类中派生了两个子类:CSofa与CBed,它们在继承时使用了virtual的方式,即虚继承。接下来我们来看看CSofaBed的对象的内存结构图那么这些数据都有什么含义呢?如下所示:看了一下,大概能看懂
2020-12-18 14:16:19
3709
3
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 详解虚函数的实现过程之虚基类(4)
博客虚函数实现过程3 时提到过虚基类,这里呢,我们来详细讲述一下:当我们在虚函数的声明结尾处添加“=0”,这种虚函数就被称为纯虚函数。它好似一个没有实现只有声明的函数,它的存在就是为了让类具有抽象类的功能,让继承自抽象类的子类都有虚表和虚表指针。使用过程中,利用抽象类指针可以更好地完成多态工作。如下分析:大家想一想,只有声明却没有实现的函数,它的虚表指针指向的函数那是什么玩意?它还是指向一个函数指针吗?这个函数指针指向的地方是哪里呢?会不会是空?里面难不成放了一个null?还是放了一个报错?或者
2020-12-18 11:20:03
3520
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 详解虚函数的实现过程之多重继承(3)
这里大家猜一下,SofaBed会占多少个字节呢?首先我们是不是得猜一下它有几个虚表指针?4* 4(4个int数据)+2*4(两个虚表指针)=24(字节)那我们一起接下来去验证一下为什么会有两个虚表指针呢?冲冲冲!!!是不是感觉很神,对吧?两个虚表指针,它怎么排兵布阵的呀?这得接下来一起看看喽:从上面表格可以看出它所继承的父类中各自有一个指针,查了一下指针指向的地方,分别是0x426198与0x42501C,接下来我们去看看这两个地方所存在的数据:啊这,这两个虚表里面保存了子类的虚函数和...
2020-12-18 10:58:57
8139
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 详解虚函数的实现过程之单继承(2)
从汇编分析一下下面的多态模拟结构利用 父类指针指向子类的特性,可以间接调用各子类中的虚函数。虽然指针类型为父类,但由于虚表的排列顺序是按虚函数在类继承层次中首次声明的顺序依次排列的,因此,只要继承了父类,其派生类的虚表中的父类部分的排列就与父类的一致,子类新定义的虚函数将会按照声明顺序紧跟其后。我们给Speak函数传递任何一个基于CPerson的派生对象地址都能正确调用虚函数ShowSpeak,那么当我们调用虚函数时,它是如何实现调用的呢?请看下面分析分析如下:地址401108的eax是t
2020-12-18 01:17:04
8220
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 详解虚函数的实现过程之初探虚表(1)
空对象它有一字节的大小,在没有任何成员变量但是却有虚函数的对象里,它的大小是四个字节,这是为什么呢?因为含有虚函数的对象里,对象的起始地址往后四个字节其实是 一个指针,它指向了一个数组,这个数组的元素是 指针,这些数组的元素指向的地方就是虚函数实现的地方,我们称这个数组叫做 虚表。而指向这个虚表的指针我们成为 虚表指针。这个对象为什么是4个字节的大小,也就是含有这个虚表指针。对于开发者而言,虚表指针都是隐藏的,在常规的开发过程中,我们感受不到它们的存在,要想感知它们的存在,看看底层的汇编代码即可,或者
2020-12-17 21:51:56
8117
5
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 c++对象长度之内存对齐(2)
内存对齐在VC++6.0中,类和结构体中的数据成员是根据它们在类或结构体中出现的顺序来依次申请申请内存空间的,由于内存对齐的原因,它们并不一定会像数组那样连续地排列。由于数据类型的不同,因此占用的内存空间大小也会不同,因此占用的内存空间大小也会不同,在申请内存时,会遵守一定的规则。要找对齐的话,我个人感觉应该先找到编译器的指定对齐值,因为结构体中的当前数据成员类型长度为M,指定的对齐值是N,那么实际的对齐值为q=min(M,N),其成员的地址安排在q的倍数上。但是,并非设定了默认对齐值就将结构体的对
2020-12-14 15:41:13
2226
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 2020-11-27(switch的优化问题)
第一次看switch的case表的时候,那是半年前了,看完了有序线性然后去看非线性索引时,实在看不下去了,今天再一次拿出这本书,把switch 的 有序线性 ,非线性,以及 判断树 看了一遍,感触挺深的吧,接下来让我们一起被switch虐吧。1.首先,二话不说,上代码,代码具有较高说服力两份代码debug版本相比较后,大家可以发现,if……else if 结构会在条件跳转后紧跟语句块;而switch结构则将所有条件跳转都放置到了一起,并没有发现case语句的踪影。通过条件跳转指令,跳转到相应的ca
2020-11-27 23:04:06
20223
7
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 2020-11-25(《深入理解计算机系统》多级页表详解)
一、端到端地址翻译示例从图上看,TLBI占了t位,而TLBT占了n-p-t位。上节我们刚把TLB开了个头,多说无益,还是具体来玩个实际例子吧,具体来做一个端到端(虚拟地址到物理地址)的地址翻译示例,来统筹下之前讲的知识点。先来做如下约定:1、老规矩,存储器按字节寻址,访问也按一字节访问;2、虚拟地址14位长(n=14),物理地址12位长(m=12),位数少点玩起来方便;3、页面大小是64字节(P=64),也就是说(p=6)4、TLB是四路组相联,总共16个条目;5、L1 d-cache是物理
2020-11-25 22:17:48
3162
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 条件跳转指令总结
指令全称cmp a,bflag条件jz/jejump if zero/equala=bZF=1jnz/jnejump if not zero/equala!=bZF=0jb/jnae/jcjump if below/not above or equal/carrya<b,无符号数CF=1ja/jnbejump if above/not below or equala>b,无符号数jna/jbejump if not ab...
2020-11-13 22:30:35
3268
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 2020-11-10(安卓如何传递数据)
1.从文件读取 保存文件的路径使用api去获取a.getCacheDir();获取/data/data/包名/Cache这个路径b.getFilesDir();获取/data/data/包名/files这个路径c.openFileInput(“文件名”)操作getFiles()目录下的文件,返回一个输入流FileInutStreamd.openFileOutput(“文件名”,mode)操作getFilesDir()目录下的文件,返回一个输出流 FileOutputStreame.Environ
2020-11-10 21:05:46
376
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 2020-11-5(安卓)
setContentView(R.layout.activity_main)这个表示加载界面意思是这行执行完了activity_main.xml文件里面所有的东西都创建了java对象,已经在创建在内存后,然后再findViewById中放入对应控件Id值查找时才能找到对应控件View看得见 EdiText TextView CheckBoxButton看不见的Viewgroup (group里面可以添加一些子view)LinearLayout RelativeLayo
2020-11-05 00:23:07
6597
12
原创 OLLVM虚假控制流源码分析
这里的ObfTimes对应过来的默认值就是1,对函数进行混淆的次数,ObfProbRate就是30,对基本块进行混淆的概率,分别是opt时传入的参数。枚举这个函数的所有基本块,如果这个函数后面基本块中含有invoke(调用了某个函数),它就不执行了,就退出这个基本块。每个基本块都有ObfProbRate的概率被混淆,即基本块调用了addBogusFlow函数。这个函数的作用就是对指定函数的每个基本块以ObfProbRate的概率去进行调用函数混淆。判断有没有bcf也就是虚假控制流,有的话就进入。
2023-07-17 17:57:18
402
原创 android linker加载和链接机制
至此so文件的读取,加载工作就分析完毕了,我们可以发现,Android对so的加载操作只是以段为单位,跟section完全没有关系,另外,通过查看verifyElfheader的代码,我们还可以发现,android系统仅仅对ELF文件头的e_ident,e_type,e_version,e_machine进行验证(当然,e_phnum也是不能错的)所以,这就解释了为什么有些加壳so文件头的section相关字段可以任意修改,系统也不会报错了。首先是init_array节区的数据结构。
2023-07-13 14:43:41
1435
原创 OLLVM控制流平坦化源码分析+魔改
需要把vertor里面的第一个基本块即入口基本块单独拿出来进行处理:对入口基本块进行判断,如果是无条件跳转则不进行任何处理,否则需要找到最后一条指令,将整个if结构给split,Module是指模块,Function模块下的函数,BasicBlock函数下的基本块,Instruction 基本块下的IR指令。创建一个switch指令,位置是在loopentry基本块下,且创建了0个case,然后设置了条件为load,就上面的load。紧接着创建一个基本块,然后在基本块里面创建一个跳转指令,
2023-07-07 19:33:09
2056
原创 MoeCTF2021 逆向赛题总结
文章目录Midpython.exechall.bc因为大晚上才看题的,就随便看看那几个高分值的:Midpython.exepython代码写成的exe,进行反编译,先搞成pyc,然后把pyc反编译成py,但是再第二个步骤反编译成py的时候出现了如下报错:Traceback (most recent call last): File "g:\python3.7.6-64\lib\runpy.py", line 193, in _run_module_as_main "__main__",
2022-09-30 14:24:29
645
3
原创 Androidstudio上传图片至七牛云
进行图片上传大概分为五步:客户端用户登录到APP的账号系统里面;客户端上传文件之前,需要向业务服务器申请七牛的上传凭证,这个凭证由业务服务器使用七牛提供的服务端SDK生成;客户端使用七牛提供的客户端SDK,调用上传方法上传文件,上传方法中必须有上传凭证和文件内容(由于七牛允许大小为0的文件,所以文件上传之前,建议检查文件大小。如果业务不允许文件大小为0,那么需要自行检测下);客户端文件上传到七牛之后,可选的操作是七牛回调业务服务器,(即七牛把文件相关的信息发送POST请求到上传策略里面指定的回调.
2022-09-30 14:23:05
738
原创 Androidstudio开发界面感想
文章目录网图显示加入依赖在build.gardle或者maven核心插入代码作品展示网图显示加入依赖在build.gardlerepositories { google() jcenter()}dependencies { implementation 'com.github.bumptech.glide:glide:4.11.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'}或者m
2022-09-30 14:22:45
191
原创 XCTF hello_pwn level2 get_shell
hello_pwn这里需要满足的条件是60016C处的字符串为nuaa这里的话需要覆盖,从601068覆盖到6010CC即可,6010CC处用nuaa进行覆盖:# coding:utf-8 from pwn import * r = remote("111.200.241.244",57818)#远程连接payload = 'a'*(0x6c-0x68)+ 'aaun'r.recvuntil("lets get helloworld for bof\n")r.sendline(paylo
2022-09-30 14:20:51
850
原创 HANDLE HMODULE HINSTANCE HWND
Handle 是代表系统的内核对象,如文件句柄,线程句柄,进程句柄。HMODULE 是代表应用程序载入的模块,win32系统下通常是被载入模块的线性地址。HINSTANCE 在win32下与HMODULE是相同的东西,在Win32下还存在主要是因为win16程序使用HINSTANCE来区别task。HWND 是窗口句柄。HWND、HANDLE、HMODULE、HINSTANCE之间的差别不是在变量类型上,而是在语义上。HWND是线程相关的,你可以通过HWND找到该窗口所属进程和线程Handle
2022-05-11 21:37:46
621
原创 SetDlgItemText GetDlgItemText SetDlgItemInt 和GetDlgItemInt GetDlgItem
SetDlgItemText函数功能在对话框中设置控件的标题或文本。函数声明WINUSERAPIBOOLWINAPISetDlgItemTextA( _In_ HWND hDlg, _In_ int nIDDlgItem, _In_ LPCSTR lpString);第一个参数输入参数,包含控件的对话框的句柄。第二个参数输入参数,要设置标题或文本的控件。第三个参数输入参数,要复制到控件的文本返回值类型:布尔如果函数成功,则返回值为非零。如果函数失败
2022-05-11 21:37:10
1134
原创 windows驱动开发
时间戳验证失败error -2: "Inf2Cat, signability test failed." Double click to see the tool output. E:\论文\MyDriver1\MyDriver1 Package\Win8Debug\inf2catOutput.log 1 1 MyDriver1 Package使用local时间而不是UTC时间就可以了。打开package工程的属性,在inf2cat工具的属性中进行设置。关闭驱动签名检查F8关闭警告报错
2022-05-11 21:35:53
250
原创 InlineHook2
00000000`8003f1208003f120 00000000`80aaa1aa 00000000`8003f1308003f130 00000000`8003f138 00000000`8003f1408003f140 00000000`8003f148 00000000`8003f1508003f150 00000000`8003f158 00000000`8003f160目标0x8053E545 写入目标是0x8003f120#include <...
2022-05-11 21:33:57
203
原创 windows内核试验07_中断现场03
文章目录TSS段结构如下:找到TSS段(这里写出T55,雪特写错了吧),基址是0x80042000,记住是上面带有busy的基址,并非下面,下面 available(avl)代表未使用的,或者在windbg中读取基址:段选择子为5,基址段位如下:TSS段结构如下:方向正好相反,经计算,进零环需要用esp为0c458b24...
2022-05-11 21:33:19
127
原创 InlineHook3(单步异常挂钩,监测调试器行为)
#include <iostream>#include<Windows.h>char* p;int i;void JmpTarget();void __declspec(naked) IdtEntry() { p = (char*)0x8003f120; for (int i = 0; i < 64; i++) { *p = ((char*)JmpTarget)[i]; p++; } __asm {
2022-05-11 21:29:23
267
原创 Windows内核试验13_系统调用
文章目录ReadMemHookBaseInlineHook3AllocMemReadMemHookBase#include<stdio.h>#include<stdlib.h>#include<Windows.h>DWORD Target[3] = { 0x8003f120,0x8003f1c0,0x8003f200 };DWORD* ServiceTable = (DWORD*)0x8003f3c0;void SystemCallEntry();voi
2022-05-11 21:28:50
215
原创 Android_NetWork_Test
文章目录api27以前配置文件申请网络权限异步发送网络请求使用HttpURLConnectionapi27以后换成商城apiGsonfomat插件:api27以前配置文件申请网络权限<uses-permission android:name="android.permission.INTERNET"></uses-permission>异步发送网络请求使用HttpURLConnectionpackage com.kanxue.androidnetwork;impor
2022-04-08 23:06:21
2159
原创 androidstuido_schooltest_9_Dialog
文章目录MainActivity.javaactivity_main.xmlDialogActivity.javaactivity_dialog.xmlSimpleConponentActivity.javaactivity_simple_conponent.xmldialog_view.xmlMainActivity.javapackage com.kanxue.myapplication;import androidx.appcompat.app.AppCompatActivity;impo
2022-04-03 22:58:07
1949
原创 androidstuido_schooltest_8_Network
文章目录MainActivity.javaactivity_main.xmloutput:MainActivity.javapackage com.kanxue.school_test_2;import androidx.appcompat.app.AppCompatActivity;import android.app.ProgressDialog;import android.os.AsyncTask;import android.os.Bundle;import android.os
2022-04-03 18:19:38
1778
原创 androidstuido_schooltest_7_storage
文章目录MainActivity.javaactivity_main.xmlSPTestActivity.javaactivity_sptest.xmlInnerFileActivity.javaactivity_inner_file.xmlOfActivity.javaactivity_of.xmlDbActivity.javaactivity_db.xmlDBHelper.javaMainActivity.javapackage com.kanxue.school_test_1;import a
2022-04-03 16:40:38
1923
原创 androidstuido_schooltest_5_media
文章目录activity_main.xmlMainActivity.javaactivity_main.xml<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com
2022-04-03 03:11:10
214
原创 androidstuido_schooltest_6_media_service
文章目录activity_main.xmlMainActivity.javaMusicService.javaactivity_main.xml<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://sc
2022-04-03 03:10:35
215
原创 androidstuido_schooltest_3_EditText
MainActivity:package com.kanxue.school_test_3;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.text.Editable;import android.text.TextWatcher;import android.util.Log;import android.view.KeyEvent;import androi
2022-04-03 00:02:27
199
原创 androidstuido_schooltest_4_phone
文章目录MainActivity.javaactivity_main.xml动态申请权限类权限:MainActivity.javapackage com.kanxue.school_test_7;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import androidx.core.app.ActivityCompat;import androidx.core.content.
2022-04-03 00:01:31
368
1
原创 androidstuido_schooltest_2_TextView
MainActivity:package com.kanxue.schooltest_2;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.text.Html;import android.widget.TextView;public class MainActivity extends AppCompatActivity { TextView textVi
2022-04-03 00:00:48
347
原创 androidstuido_schooltest_1
文章目录Mainactivity.java:activity_main.xml:output:Mainactivity.java:package com.kanxue.schooltest_1;import android.os.Bundle;import com.google.android.material.snackbar.Snackbar;import androidx.appcompat.app.AppCompatActivity;import android.view.Vie
2022-04-02 23:59:53
205
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人