动态获取API地址

动态定位API函数之shellcode编写 通用shellcode编写动态定位API 背景: 如果编写的 ShellCode 采用了硬编址的方式来调用相应的API函数,这会存在操作系统的版本不一样,调用函数在内存中的地址不同而出现失败的现象。如下图在win10中就不能正常运行 这时需要通过编写一些定位程序,让 ShellCode 能够动态定位所需要的API函数地址,从中解决ShellCode 的通用性问题。 1.上述弹窗程序中最重要的函数MessageBox,它是位于 User32.dll 这个动态链接库里,默认情况下是无法直接调用的,为了能够调用 阅读详情

cncpp 

动态获取API地址是病毒界和密界中常用的程序设计技术
Author: 属于中国破解组织 - xIkUg[BCG][DFCG][OCN][DCM][CZG]
Date: 2004-07-28
Email: xikug@163.com
xIkUg's程序园: http://www.xp-program.com
XP-极限编程: http://bbs.xp-program.com


一点理论,Win32系统通过CreateProcess创建进程并运行一个程序。。。
在进入程序时跟一般的应用程序调用Call类似,会在堆栈中压入一个返回地址。。。这时压入的是kernel32.dll中一某一个返回地址,我们可以得到这个地址,然后找到kernel32.dll在内存中的基地址,然后找到Export Table,找到我们
需要GetModuleHandleA/LoadLibrary/GetProcAddress这几个Api函数的地址,就可以得到想要的Api地址,并在程序中使用了,这需要你对PE文件格式非常清楚

因为没有导入Api函数,在我们的程序中没有导入表,因此在OD中要调试这个程序就不能再用Api下断了,但是也有其他办法

下面我们来看看如何做,程序中已经添加了注释

001  .386
002  
003  .model flat, stdcall
004  
005  include d:/masm32/include/windows.inc
006  
007  
008  .code
009  
010  GetApiAddress PROC k32Base: DWORD, ApiName: DWORD
011      LOCAL    NumberOfNames: DWORD
012      
013      push    ebx
014      push    ecx
015      push    edx
016      push    ebp
017      push    esi
018      push    edi
019      
020      mov        edi, k32Base
021      mov        eax, edi
022      add        eax, [eax + 3Ch]                ;Kernel32.dll 的 PeHeader
023      
024      assume    eax: ptr IMAGE_NT_HEADERS
025      mov        ebx, edi
026      add        ebx, [eax].OptionalHeader.DataDirectory.VirtualAddress    ;IMAGE_EXPORT_DIRECTORY引出表入口
027      assume    eax: nothing
028  
029      mov        eax, ApiName
030      
031      mov        ecx, ebx
032      mov        ebx, [ecx + 1Ch]                ;AddressOfFunctions的地址
033      
034      mov        edx, ecx
035      mov        edx, [edx + 18h]                ;NumberOfNames地址
036      mov        NumberOfNames, edx
037      mov        edx, ApiName
038              
039      mov        ebp, ecx            ;IMAGE_EXPORT_DIRECTORY引出表入口
040      mov        ebp, [ebp + 20h]                ;AddressOfNames 地址
041      
042      mov        esi, ecx
043      mov        esi, [esi + 24h]                ;AddressOfNameOrdinals
044      
045  
046      push    ebx
047      push    ecx
048      push    esi
049      xor        ebx, ebx
050      xor        ecx, ecx
051      xor        eax, eax
052      add        ebp, edi
053      
054  getApiGetModuleHandleA:
055      mov        esi, edi
056      add        esi, [ebp + ecx * 4]
057  
058  cmpAPI:
059      mov        al, [edx + ebx]
060      cmp        al, [esi + ebx]
061      jne        getNext
062      inc        ebx
063      mov        al, 0
064      cmp        al, [esi + ebx]
065      jne        cmpAPI
066      je        getOK
067  getNext:
068      xor        ebx, ebx
069      inc        ecx
070      cmp        ecx, NumberOfNames
071      jne        getApiGetModuleHandleA
072         
073  getOK:
074      pop        esi
075      
076      add        esi, edi
077      ;ecx 为AddressOfNameOrdinals的index   
078      xor        eax, eax
079      mov        ax, word ptr [esi + ecx * 4]
080      
081      pop        ebx
082      pop        ebx
083      add        ebx, edi
084      mov        esi, [ebx + ecx * 4]
085      add        esi, edi                        ;esi为GetModuleHandleA的API地址
086      push    esi
087      pop        eax
088  
089      pop        edi
090      pop        esi
091      pop        ebp
092      pop        edx   
093      pop        ecx   
094      pop        ebx
095         
096      ret
097  
098  GetApiAddress endp
099  
100  start:
101      ;搜索kernel32.dll的基地址
102      mov        eax, [esp]
103      and        eax, 0ffff0000h
104      
105      xor        edx, edx
106      
107  getK32Base:
108      dec     eax                             ;逐字节比较验证
109      mov     dx,word  ptr [eax+IMAGE_DOS_HEADER.e_lfanew]   ;就是ecx+3ch
110      test    dx,0f000h                       ;Dos Header+stub不可能太大,超过4096byte
111      jnz     getK32Base                      ;加速检验
112      cmp     eax,dword ptr [eax+edx+IMAGE_NT_HEADERS.OptionalHeader.ImageBase]
113      jnz     getK32Base                      ;看Image_Base值是否等于ecx即模块起始值,
114      mov        edi, eax
115      
116      mov        eax, offset sGetModuleHandleA
117      push    eax
118      push    edi
119      call    GetApiAddress
120      mov        esi, eax                        ;esi为GetModuleHandleA的API地址
121      
122      
123      mov        eax, offset sLoadLibraryA
124      push    eax
125      push    edi
126      call    GetApiAddress                    ;ebp为LoadLibraryA的API地址
127      mov        ebp, eax
128      
129      mov        eax, offset sGetProcAddress
130      push    eax
131      push    edi
132      call    GetApiAddress
133      mov        edi, eax                        ;edi为GetProcAddress的API地址
134      
135      mov        eax, offset sUser32
136      push    eax
137      call    ebp
138      
139      mov        ebx, offset sApiMessageBoxA
140      push    ebx
141      push    eax
142      call    edi
143      
144      mov        esi, eax                        ;eax为MessageBoxA
145      
146         
147      push    0
148      mov        eax, offset sTitle
149      push    eax
150      mov        eax, offset sCaption
151      push    eax
152      push    0
153      call    esi
154      
155      ret        
156  
157      sGetModuleHandleA        db        'GetModuleHandleA', 0
158      sGetProcAddress            db        'GetProcAddress', 0
159      sLoadLibraryA            db        'LoadLibraryA',0
160      sFreeLibrary            db        'FreeLibrary',0
161      sUser32                    db        'user32',0
162      
163      sApiMessageBoxA            db        'MessageBoxA',0
164      
165      sCaption                db        'Hello xIkUg!',0
166      sTitle                    db        'test',0
167      
168  end start
169  

源代码可到我的论坛下载:http://bbs.xp-program.com

病毒技术之动态获取API函数地址 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>; 公用模块:_GetKernel.asm; 根据程序被调用的时候堆栈中有个用于 Ret 的地址指向 Kernel32.dll; 而从内存中扫描并获取 Kernel32.dll 的基址;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 阅读详情

相关推荐

专治疑难系列 - 解决打印机凭证冲突问题

一、问题描述 二、解决方法 三、问题已解决

Passerby_Wang的博客 2万+

关于动态获取API地址

关于动态获取API地址 有些时候,我们需要动态获取一些API的VA,然后才能调用它们.比如在对PE可执行文件进行二次开发或编写注入shellcode时,这时很有可能我们想调用的API没有被该PE文件导入,或者其所处的DLL根本没被该PE引用载入.这时,我们的解决方法可以是(罗云彬的>和>都是用的这个方法,具体细节有点不同): (1)动态获取kernel.dll载入基地址

tony的专栏 1168

winget安装提示:执行此命令时发生意外错误: InternetOpenUrl() failed. 0x80072efd

当我们使用Winget包管理器安装应用,提示错误:执行此命令时发生意外错误: InternetOpenUrl() failed. 0x80072efd 该怎么处理呢?请听我娓娓道来。

Linux I Tell U 8139

动态获取API入口地址,使exe文件的导入表为空

本文出自罗云彬的win32汇编那本书,我稍微做了一下修改 Windows在执行一个exe文件的时候会调用Kernel32.dll中的CreateProcess来启动应用程序的主程序,在执行应用程序之前windows会push返回地址。这个返回地址通过程序入口的[esp]就能得到。为什么要说这个返回地址呢,因为这个返回地址在Kernel32.dll模块中,而GetProcAddress和LoadL

liumengcheng的专栏 1921

固件测试工具选型需要考察的功能点汇总

通过专业的固件测试工具可以帮助我们提高测试效率、提升测试的覆盖度、确保测试的准确性,保障产品的安全和质量。本文我们讲固件测试工具的功能点进行梳理和汇总,方便大家在采购固件测试工具时进行选型比对。

daopuyun的博客 2112

VASP+机器学习快速收敛AIMD

本文介绍了如何利用VASP结合机器学习技术快速收敛AIMD(从头算分子动力学)模拟。首先,通过训练机器学习力场,生成关键文件如ML_ABN(包含结构数据集)、ML_FFN(存储回归结果)和ML_LOGFILE(记录训练日志)。接着,配置INCAR文件以设置计算参数,包括并行化、分子动力学和机器学习相关参数。KPOINTS文件用于定义K点网格。计算完成后,备份CONTCAR文件作为后续模拟的初始结构。最后,利用训练好的力场文件进行纯机器学习力场分子动力学模拟,并提交任务执行。

qq_44812865的博客 1406

动态内存管理讲解

关于malloc free calloc realloc以及柔性数组的讲解

lovepotato_的博客 454

嵌入式硬件实战:RC、LC与RL滤波电路的设计与选型指南

本文深入探讨了嵌入式系统中RC、LC与RL滤波电路的设计与选型策略。通过生活化比喻和实战案例,详细解析了三种滤波电路的工作原理、应用场景及工程注意事项,帮助工程师根据电流大小、频率特征和成本预算选择最优方案,提升嵌入式硬件设计的稳定性和抗干扰能力。

kiwi8的博客 284

HTML自动获取地址,如何动态获取API入口地址

在本文中介绍另一个相对独立的技术:动态获取API 入口地址。文章附带的源码有两个工程:GetApiAddr 为一个独立的动态获取 API 入口地址的程序;另一个 Virus为在上一篇文章基础上进行扩展的病毒程序,这个程序把工程目录下的 test.exe 复制一份为 test_virus.exe并在这个文件上添加动态获取API入口地址的代码,如果程序运行成功,打开 test_virus.exe后会弹...

weixin_31869579的博客 595

【华为OD】华为性格测试(综合测试)高分策略

1、性格测试非常重要,是一次否决制,18 个月有效期,所以态度一定要认真对待,不要随便乱选;2、做题原则:正向原则,积极乐观向上3、时间为 25-30 分钟,会频繁出现重复选项重复出现的题目注意一致性。

笑着的程序员的博客 3万+

040、全志V853低功耗AI视觉平台的ISP调优——电池供电场景下的画质与功耗平衡

本文分享了全志V853 AI视觉平台在电池供电场景下的ISP调优经验。作者通过实际项目踩坑案例,揭示了V853 ISP的特殊性:不同于主流平台,其ISP与CPU共享时钟域,降噪能力有限,需特别注意功耗控制。关键优化策略包括:关闭无效ISP模块、优化Sensor联动时钟、采用场景自适应配置、开发快速启动模式等。特别指出V853个体差异大,量产需考虑高低温影响。文章强调V853的ISP功耗优化需从寄存器级别精打细算,不能简单套用其他平台经验,建议选型时单独评估ISP功耗,避免续航缩水。

zzfmlxs的博客 26

动态获取API函数地址

cvc论坛里好久没人写基础文章了,我就大胆地来个大家写个有关API函数地址获取的文章,希望对初学病毒的你有所帮助  要想动态地获得一个API函数的地址,我们通常都是调用系统的LoadLibraryA()函数和GetProcAddress()函数来动态地获得。LoadLibraryA()用来加载API函数对应的动态链接库 (dll),GetProcAddress()函数用来获得API函数对应

B_H_L的专栏 8130

量化交易:如何在QMT中运行Python策略并在VSCode中高效调试?

哈喽,大家好,我是木头左!

木头大左的博客 3759

动态获取API的地址

原理: 现在虽然大部分Win32程序都使用ExitProcess函数来终止执行,但是其实用ret指令也是可以的。我们的应用程序的主程序可以被看成是一个被Windows调用的子程序。当父进程要创建一个子进程时,它会调用Kernel32.dll中的CreateProcess函数,CreateProcess函数在完成装载应用程序后,就会把一个返回地址用push压入栈,这个返回地址是子进程用ret来结束...

weixin_43575859的博客 1372

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

PE学习3-动态获取Kernel32的基址,动态搜索API地址

;------------------------ ;AUTHOR:leeleehom DATE:09/04/2010 20:12 ;SearchKernel32Base.asm ;功能描述:动态搜索KERNEL32.DLL的基址,动态搜索API地址 ;------------------------ .386 .model flat, stdcall option casemap:none ;------------------------ include windows.inc ;-

WIN32汇编学习园地 1322

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

病毒程序的重定位+动态获取API+获取kernel32.dll基地址+钩子+驻留内存

1. 病毒程序:1)宿主:被病毒感染的程序。例如:exe dll office文档   2)重定位:在病毒体中使用绝对位置规定的变量或入口地址,病毒体被插入到宿主程序时,这些规定的绝对位置可以已经被宿主程序使用,从而病毒体无法使用。为保证病毒体在宿主中正常执行,需要在病毒代码中使用重定位的技术。 3)重定位的实现: 病毒代码重定位: call @@1 @@1:pop edx ……….

chopstics的专栏 4017

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

动态获取API函数地址---对抗win7 aslr安全机制

本人近期在研究缓冲区溢出,在学习中发现,win7下系统关键函数的地址随机化了(每次重启后地址有变),为了解决地址定位问题,在偌大的互联网上找了好久,贴来分享下,以作备用。 -----------------------------------------------------------------------------------------------------------------

gudujianjsk的专栏 1901

Android通过反射EthernetManager Api设置以太网为静态IP地址或者动态获取IP

一、对于一些工控行业的Android主板一般都会扩展个以太网接口,也就是可以插网线进行上网;然后在系统设置页面有个以太网菜单可以进行IP、网关等设置,如下: 二、那怎么通过代码去设置呢? 1、Android系统在Framework层是有提供操作以太网Api的也就是android.net.EthernetManager,但是Google把Api给隐藏了;所以最终你是调用不了的 2、那需要怎么操作才能调用到隐藏的Api呢?相信你肯定会立马想到使用反射去调用;对,没错!这里我就是使用的这个方式;当然如果你公

上辈子作恶多端,这辈子写前端。 1万+

android6.0默认动态获取静态地址,Android通过反射EthernetManager Api设置以太网为静态IP地址或者动态获取IP...

/*** 文件名: EthernetUtil* 创建时间: 2020/8/21 on 11:22* 描述: TODO 设置以太网静态ip 动态ip地址** @author 阿钟*/public class EthernetUtil {/*** 设置以太网动态获取IP*/public static boolean setDynamicIp(Context context) {try ...

weixin_39668965的博客 1056

linux+获取ip+api,linux – 如何动态获取VLAN接口的IP地址?

VLAN是第2层功能,而IP / DHCP是第3层,我只是希望清楚,但在这种情况下它们彼此有很多关系.基本上您真正需要做的就是确保您的L2 / 3交换机/路由器配置为允许您的DHCP服务器不仅可以路由到/来自所有VLAN,还可以提供“DHCP Helper”服务,以便所有VLAN中的所有客户端都可以参考当他们发出DHCP请求时.在Cisco L2 / 3设备上,’dhcp helper’命令配置此...

weixin_28861381的博客 217

Windows动态获取函数地址技术解析与应用

动态链接库(DLL)是Windows系统模块化设计的核心组件,通过导出表机制实现函数动态加载。在二进制安全领域,动态获取函数地址技术通过解析PE文件结构和进程环境块(PEB),绕过静态导入实现API调用,是Shellcode编写和漏洞利用的关键基础。该技术涉及内存地址计算、导出表遍历等底层操作,能有效规避安全软件的静态检测。在逆向工程、恶意代码分析等场景中,掌握动态获取LoadLibraryA/GetProcAddress等核心API的方法,对理解Windows内存管理和攻防对抗原理具有重要意义。

weixin_30219613的博客 306
上一篇: 999句英语经典口语
下一篇: 跨进程API Hook
普通网友
博客等级 码龄22年 1万+粉丝 3156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值