自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(183)
  • 收藏
  • 关注

原创 函数调用的汇编

【代码】函数调用的汇编。

2024-11-27 17:44:23 123

原创 windows下的调用约定

stdcallstdcallcdeclfastcallthiscall。

2024-11-26 14:53:07 132

原创 PE文件

2.CPU的某些指令是需要使用绝对地址的,比如取全局变量的地址,传递函数的地址编译以后的汇编指令中肯定需要用到绝对地址而不是相对映象头的偏移,因此PE文件会建议操作系统将其加载到某个内存地址(这个叫基地址),编译器便根据这个地址求出代码中一些全局变量和函数的地址,并将这些地址用到对应的指令中。第三个是一个可选的结构,实际上IMAGE_FILE_HEADER结构不足以定义PE文件属性,因此可选映像头中定义了更多的数据,包括加载到内存中的PE文件的基地址(映象),导入表,导出表等。

2024-11-26 14:03:22 235

原创 漏洞

当输入的密码为8位时,结果不正确,因为字符串末尾会有一个结束符00也会存储到内存里,所以实际占9位。原本存放返回值1的位置被覆盖成了0,所以最终结果会有偏差。一般函数执行完会调用jmp esp指令,所以只需要找到这条指令的位置,就可以在执行jmp之后,把下面的内容进行植入shellcode。发现如果字符串过长,导致返回值被淹没了,这样会导致程序运行崩溃。可以利用漏洞,把返回值直接进行修改。以jmp esp 为跳板的shellcode(栈溢出漏洞)确定位置(找到jmp esp)写shellcode。

2024-11-25 17:57:49 197

原创 动静态分析

通过发现dos头和pe头,来确定它是个可执行程序。

2024-11-24 21:38:52 175

原创 逆向破解识别基础

如果想实现不论值是多少都输出false,可以修改跳转,把汇编的jnz指令改为jmp实现任何条件跳转,或者可以改cmp的值,使得输出的结果是我们的预期。如果main函数中有字符串或者调用函数等一些唯一标识,可以通过搜寻这些标识找到main函数。因为main函数需要三个参数,所以遇到三个参数加一个调用,那么可能是main函数。方法二:(通过修改push的地址)(使用OllyDbg软件)方法一:(直接在内存中改)破解密码的方法(控制台)

2024-11-24 15:13:03 265

原创 汇编语言基础

mov eax,5 把5这个值放到eax寄存器里面,add eax,6 将6与eax里的值相加并将结果放到eax里。INVOKE是伪指令,可以避免使用完整的汇编指令,简化代码。不能把大的数据mov到小的存储空间中(mov reg16 mem32是不合法的)因为DWORD类型占4个字节,所以esi*4,取到var的4这个元素。16位乘法(bx,ax),乘法高位结果放到edx里。rep指的是循环执行,由ecx决定次数,类似loop。uses是伪指令,后面跟上函数的参数。if是伪指令,.endif是结尾。

2024-11-23 18:12:05 417

原创 leetcode:三数之和

【代码】leetcode:三数之和。

2024-06-10 16:23:15 199

原创 leetcode:字母异位词分组

【代码】leetcode:字母异位词分组。

2024-06-10 15:35:05 342

原创 leetcode:不同的二叉树

【代码】leetcode:不同的二叉树。

2024-06-09 17:01:54 358

原创 leetcode:摆动序列||

【代码】leetcode:摆动序列||

2024-06-08 16:51:02 172

原创 leetcode:子集||

【代码】leetcode:子集||

2024-06-02 22:07:39 246

原创 leetcode:找到K个最接近的元素

【代码】leetcode:找到K个最接近的元素。

2024-06-02 14:30:12 437

原创 leetcode:最近的请求次数

仅个人做法,非最优解。

2024-06-02 13:30:11 474

原创 leetcode:最接近的三数之和

【代码】leetcode:最接近的三数之和。

2024-06-01 20:38:39 159

原创 查找和最小的K对数字

【代码】查找和最小的K对数字。

2024-05-29 20:46:26 126

转载 二叉树层序遍历

【代码】二叉树层序遍历。

2024-05-28 21:08:40 93

原创 leetcode:水壶问题

【代码】leetcode:水壶问题。

2024-05-27 22:11:34 348

原创 leetcode:预测赢家

【代码】leetcode:预测赢家。

2024-05-26 19:00:39 174

原创 leetcode:计数质数

【代码】leetcode:计数质数。

2024-05-26 15:18:04 161

原创 leetcode:所有可能的路径

个人做法,非标准答案。

2024-05-26 13:11:04 241

原创 leetcode:根据身高重建队列

【代码】leetcode:根据身高重建队列。

2024-05-26 12:43:17 341

原创 leetcode:反转链表II

【代码】leetcode:反转链表II。

2024-05-25 20:42:34 536

原创 leetcode:重复的DNA序列

【代码】leetcode:重复的DNA序列。

2024-05-22 20:15:48 405

原创 WorkManager

WorkManager提供了更多的高级功能和更好的兼容性,而Service则更适合执行简单的后台任务。WorkManager提供了许多高级功能,例如链式任务、延迟任务、周期性任务和灵活的重试策略等,而Service的功能相对较少。WorkManager可以在不同版本的Android系统上提供一致的行为,而Service的行为可能因Android版本而异。WorkManager可以根据设备的电池和网络状态自动调整任务执行时间,而Service可能会影响设备的电池寿命和网络使用。1.定义一个后台任务。

2024-05-22 11:26:46 176

原创 Room

dao层的目的是覆盖所有业务需求,使得用户不必与底层数据库打交道。定义Entity(实体类)定义Entity(实体类)定义Database。

2024-05-22 10:32:35 135

原创 leetcode:比较版本号

本人写的代码,不一定是最优解。

2024-05-21 21:42:17 375

原创 Lifecycles

【代码】Lifecycles。

2024-05-21 19:00:41 102

原创 ViewModel

它使用了ViewModelProvider和MainViewModelFactory类,用于创建MainViewModel的实例,并传入countReserved参数,用于初始化MainViewModel中的count属性。这样,我们就可以在Activity中使用viewModel变量来访问MainViewModel中的数据和方法。ViewModel的作用是帮助我们管理UI相关的数据和业务逻辑,实现数据的存储、共享、隔离和生命周期管理,从而提高应用程序的可维护性和可扩展性。传参给viewmodel。

2024-05-21 17:56:48 226

原创 下拉刷新

当用户下拉SwipeRefreshLayout时,将会触发下拉刷新监听器中的refreshFruits()方法。refreshFruits()方法是一个私有方法,用于刷新水果列表。在该方法中,我们使用了一个线程来模拟网络请求的延迟,然后在主线程中更新水果列表,并通知适配器数据已经发生变化。最后,我们还将SwipeRefreshLayout的刷新状态设置为false,表示刷新已经完成。SwipeRefreshLayout里面可以嵌套一个控件,在里面这个控件下滑时,会触发刷新的机制。

2024-05-21 14:54:51 201

原创 可交互提示Snackbar

make()方法接受三个参数:第一个参数是一个View对象,表示Snackbar要显示在哪个视图上;第二个参数是Snackbar要显示的文本消息;第三个参数是Snackbar要显示的持续时间,可以是LENGTH_SHORT或LENGTH_LONG。

2024-05-21 14:29:15 592

原创 滑动菜单栏

drawerlayout是菜单栏的主体,一般配合NavigationView使用,实现好看的UI界面。drawerlayout的第一个布局是主界面的布局。第二个是打开菜单栏后的菜单栏的布局。此处直接由NavigationView替换即可。group表示item的选项属于group组内,并且设置了group里面的选项为单选。菜单栏由两部分组成,头部和菜单。上面已经实现了菜单。新建menu布局,表示菜单栏的选项。

2024-05-21 14:20:43 356

原创 网络

解析json格式数据。

2024-05-20 18:00:52 946

原创 Service

通常用于执行与应用程序交互不直接相关的任务。在单独的工作线程中运行,无需手动管理线程。需要手动管理线程和生命周期,而。可以与应用程序的其他组件(如。与Activity通信。

2024-05-20 14:33:42 642

原创 移除K位数字

利用单调栈,在 num[i] > num[i+1] 时,删除num[i] , 并且以此往前推,比num[i+1]大的都要依次出栈。

2024-05-19 21:51:51 227

原创 Leetcode:丑数2

自己的方法,不是最优解。

2024-05-19 20:23:27 206

原创 线程

onPostExecute() : doInBackground() 执行完毕后再执行的方法 ,这个字段是一个整数,可以用来区分不同类型的消息。onPreExecute() : 在 doInBackground() 执行前先执行的方法 ,doInBackground() : 核心方法 , 执行异步任务 , 该方法在。类是一个轻量级的数据结构,用于在线程之间传递数据和消息。是一个用于执行后台任务并更新UI的辅助类。在doInBackground中执行耗时任务,由子线程执行。字段的值来执行相应的操作。

2024-05-17 18:13:57 426

原创 安卓开发——多媒体

易于传输和共享:使用Bitmap对象可以轻松地在应用程序、服务和设备之间传输和共享图像。例如,我们可以将Bitmap对象发送给其他应用程序或服务,以便它们可以访问和处理图像。内存管理:Bitmap对象可以直接在内存中操作图像数据,这使得在处理图像时可以更快地访问和修改数据。这意味着我们可以在不同的Android设备和版本上使用相同的Bitmap对象来处理图像。便于操作:Bitmap对象提供了丰富的API,可以方便地对图像进行各种操作,如缩放、裁剪、旋转、滤镜等。音频和视频播放的方法有所不同。

2024-05-17 15:46:34 509

原创 ContentResolver

创建自己的ContentResolver。

2024-05-16 17:39:15 203

原创 持久化技术

MyDatabaseHelper继承自SQLiteOpenHelper,需要重写onCreate和onUpgrade方法。onUpgrade方法用于升级数据库。当传入的参数大于上一个版本的数据时就会调用。update后面两个参数是表示where name = The Da Vinci Code。添加一个按钮,点击后将数据提交。使用SQL操作数据库。

2024-05-16 15:12:19 723

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除