精华内容
下载资源
问答
  • 动态定位API的shellcode

    千次阅读 2014-03-27 17:35:54
    动态定位API的shellcode前面的HOOK IAT RING3>>文章中使用到了shellcode,那么这个shellcode是怎么制造出来的呢,本文将为你一步一步的解惑这个shellcode的主要功能是调用MessageBoxA弹出一个空的对话框,注意此时的...

    动态定位API的shellcode

    前面的<<HOOK IAT RING3>>文章中使用到了shellcode,那么这个shellcode是怎么制造出来的呢,本文将为你一步一步的解惑

    这个shellcode的主要功能是调用MessageBoxA弹出一个空的对话框,注意此时的地址空间是在别的进程,由于不同的操作系统会影响动态链接库的加载地址,而且不同版本的dll中函数的偏移量RVA也不尽相同,因此写一个通用型的shellcode就显得非常的有必要 

     

    那么shellcode要怎么动态去定位API的地址呢,方法还是一样的,首先定位函数所在的模块,然后在EAT里面进行搜索即可,只要找到Kernel32.dll中的GetProcAddress和LoadLibraryA的地址就可以通过这两个获得其他模块中函数的地址

     

    注意:网上的很多此类代码并没有通过搜索kernel32.dll模块,而是直接去寻找Ldr->InInitializationModuleList的第3个模块,这是有问题的,因为从win7开始引入了MinWin的概念导致InInitializationModuleList中的第三个模块是KernelBase.dll,第四个才是Kernel32.dll,不过Ldr->InMemoryOrderModuleList中的第三个模块并没有改变还是Kernel32.dll,为了以防万一还是搜索吧,搜索的时候用的是比较模块的第七个字符是不是'3’来匹配,因为kernel32.dll的第七个字符就是3,这样就可以不用通过计算哈希值来比较

     

    下面贴出内嵌汇编代码,并加了一些注释(winxp,win7x86,win7x64以兼容32位的模式运行,都没问题~)

    这个shellcode是我花了一个下午的时间写的,由于是新手,如果下文中有什么纰漏的话欢迎指正!

    #include <windows.h>
    #include <stdio.h>
    
    void PopMessageBox()
    {
        __asm{
            jmp start
    
    find_function:
            push ebp
            mov ebp,esp
    
            mov eax,fs:[0x30]                //fs points to teb in user mode,get pointer to peb
            mov eax,[eax+0x0c]                //get peb->ldr
            mov eax,[eax+0x14]                //get peb->ldr.InMemoryOrderModuleList.Flink(1st entry)
    module_loop:
            mov eax,[eax]                    //skip the first entry or get the next entry
            mov esi,[eax+0x28]                //get the BaseDllName->Buffer
            cmp byte ptr [esi+0x0c],'3'        //test the module's seventh's wchar is '3' or not,kernel32.dll
            jne module_loop
    
            //====================================
            //find kernel32.dll module
            //====================================
            mov eax,[eax+0x10]                //LDR_DATA_TABLE_ENTRY->DllBase
    
            //====================================
            //kernel32.dll PE Header
            //====================================
            mov edi,eax
            add edi,[edi+0x3c]                //IMAGE_DOS_HEADER->e_lfanew
    
            //====================================
            //kernel32.dll export directory table
            //====================================
            mov edi,[edi+0x78]                //IMAGE_NT_HEADERS->OptinalHeader.DataDirectory[EAT].VirtualAddress
            add edi,eax
    
            mov ebx,edi    // ebx is EAT's virtual address,we’ll use it later
    
            //====================================
            //kernel32.dll Name Pointer Table
            //====================================
            mov edi,[ebx+0x20]                //IMAGE_EXPORT_DESCRIPTOR->AddressOfNames RVA
            add edi,eax
    
            xor ecx,ecx                        //NameOrdinals
    
    name_loop:
            mov esi,[edi+ecx*4]
            add esi,eax
            inc ecx
            mov edx,[esp+8]                    //first parameter
            cmp dword ptr [esi],edx
            jne name_loop
            mov edx,[esp+0xc]                //second parameter
            cmp dword ptr [esi+4],edx
            jne name_loop
    
            //======================================
            //kernel32.dll Ordinal Table
            //======================================
            mov edi,[ebx+0x24]
            add edi,eax
            mov ecx,[edi+ecx*2]
            and ecx,0xFFFF                   //cause ordinal is USHORT of size,so we just use its lower 16-bits
    
            //======================================
            //kernel32.dll Address Table
            //======================================
            mov edi,[ebx+0x1c]
            add edi,eax
            dec ecx    //subtract ordinal base
            sal ecx,2
            mov edi,[edi+ecx]
            add eax,edi
    
            pop ebp
            ret 8
    
    start:
            //====================================
            // Get GetProcAddress's address
            //====================================
            push 0x41636f72    //rocA
            push 0x50746547    //Getp
            call find_function
    
            push eax                        //store GetProcAddress in stack
    
            //====================================
            //Get LoadLibraryA's address
            //====================================
            push 0x7262694c    //Libr
            push 0x64616f4c    //Load
            call find_function
    
            push eax                        //store LoadLibraryA in stack
    
            //            stack snap
            //-----------------------------high address
            //    GetProcAddress's address
            //-----------------------------
            //    LoadLibraryA's address      <-----------------esp
            //-----------------------------low address
    
            //====================================
            // Get User32.dll's image base
            //====================================
            push 0x3233                        //32
            push 0x72657375                    //user
            push esp                        //lpFileName
            call eax                        //call LoadLibraryA("user32.dll")
    
            add esp,8                        //cause we push user32 string
    
            //====================================
            //Get MessageBox's address
            //====================================
            push 0x41786f                    //oxA
            push 0x42656761                    //ageB
            push 0x7373654d                    //Mess
            push esp                        //lpProcName
            push eax                        //hModule
            call [esp+0x18]                    //call GetProcAddress(hModule,"MessageBoxA")
    
            add esp,0xc                        //cause we push MessageBoxA string
    
            push 0
            push 0
            push 0
            push 0
            call eax                        //call MessagBoxA(0,0,0,0)
    
            add esp,8                        //cause we push GetProcAddress and LoadLibrary in stack
        }
    }
    
    int main()
    {
        PopMessageBox();
        return 0;
    }
    复制代码

    至于怎么转为shellcode,这里提供一个方法,就是按F10进入VS的调试模式,然后再右键选择查看汇编代码,找到内嵌汇编的开始地址,复制那个地址处的内容直到内嵌汇编的右大括号,放到十六进制的编辑器中比如NotePad++,然后替换空格为\0x,再稍作修改即可,这里说的比较的模糊,等有时间的时候再回头过来照顾一下新手吧,先把上面的汇编消化掉~

     

    ps:喜欢贴代码,不想打字。。。怎么破。。。

    http://www.cnblogs.com/unixstudio/archive/2012/11/09/2761883.html
    展开全文
  • Android动态定位权限

    千次阅读 2019-09-17 16:29:38
    判断是否开启了定位权限 if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){//未开启定位权限 //开启定位权限,200是标...

    判断是否开启了定位权限

    if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)
                    != PackageManager.PERMISSION_GRANTED){//未开启定位权限
                //开启定位权限,200是标识码
                ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},200);
            }else{
                //开始定位
                Toast.makeText(MainActivity.this,"已开启定位权限",Toast.LENGTH_LONG).show();
            }
    

    //设置打开

        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
            switch (requestCode){
                case
                        200:
                    if (grantResults[0]==PackageManager.PERMISSION_GRANTED){
                    }else {
                        Toast.makeText(this,"未开启定位权限,请手动到设置去开去权限", Toast.LENGTH_SHORT).show();
                    }
                    break;
                default:break;
            }
        }
    
    展开全文
  • 动态定位模糊度确定分类 初始化 初始化就是快速静态定位和金泰定位中所采用的方法,先静止,进行求解模糊度,这种方法的缺点显而易见,在动态定位的过程必须一直跟踪卫星信号,且视场中如果出现新的卫星也不能...

    动态定位模糊度确定分类

    1. 初始化
      初始化就是快速静态定位和金泰定位中所采用的方法,先静止,进行求解模糊度,这种方法的缺点显而易见,在动态定位的过程必须一直跟踪卫星信号,且视场中如果出现新的卫星也不能利用。
    2. 实时模糊度结算
      实时模糊度解算是指接收机处于运动的状态下利用一个或几个接收机的观测资料来确定模糊度的计数,也称为在航模糊度解算计数ARPR(Ambiguity Resolution On the Fly)。
      搜索算法
      搜索算法,分为两种搜索方法:坐标域搜索和模糊度域搜索。
      坐标域搜索是指的模糊函数法,这个方法在静态定位的模糊度解算一文的博客中讲到,可以翻我的博客或者点击链接静态定位模糊度解算,其中在书上有降到其近似坐标可以用伪距观测值来求得,但是还得用相位观测值,书上没有提到。
      模糊度域搜索算法:模糊度域搜索算法在快速静态定位中提到了,可以查看我的博客或者点击链接快速静态定位的模糊度解算.
      实时模糊度解算方法:
      最小二乘模糊度搜索法、FARA法、快速模糊度搜索滤波法、LAMBDA法及某些特殊的约束方法。
      实时模糊度解算法优点:
      不管卫星信号出现了失锁,还是视场中出现了新的卫星时,无需中断观测重新进行初始化,就能在尽可能短的时间内重新确定他们的整周模糊度,获取尽可能完整的动态定位结果。

    总结

    终于几乎完成了相对定位的GPS书原理过程,一下子塞进来很多,没有时间积淀的过程所以需要写博客来加深自己的记忆,后悔本科的时候没有好好的自学下,推推公式。
    大致讲下的我相对定位的学习路线,如果你也是初学者,千万不要先看代码,先把书上的理论先读一读,大致就是伪距和相位观测值定位观测方程->相对定位的观测方程推到->周跳的探测和修复(这一部分我也没有仔细的好好看)->模糊度的确定(这一部分我把静态定位、快速静态定位和动态定位都看了,其中快速动静态定位和动态定位中用的方法是差不多)。

    展开全文
  • 利用Xpath进行动态定位元素

    千次阅读 2020-04-21 15:02:24
    xpath中提供了三个非常好的方法来为我们定位部分属性值: 1、contains(a, b) 如果a中含有字符串b,则返回true,否则返回false 2、starts-with(a, b) 如果a是以字符串b开头,返回true,否则返回false 3、ends-with(a,...

    xpath中提供了三个非常好的方法来为我们定位部分属性值:

    1、contains(a, b) 如果a中含有字符串b,则返回true,否则返回false
    2、starts-with(a, b) 如果a是以字符串b开头,返回true,否则返回false
    3、ends-with(a, b) 如果a是以字符串b结尾,返回true,否则返回false
    在这里插入图片描述
    如代码:
    在这里插入图片描述
    需要定位到上述元素,如下:
    1)driver.find_element_by_xpath("//div[contains(@id,‘aa’)]")
    选取id值包含“aa”的div节点
    2)driver.find_element_by_xpath("//div[starts-with(@id,‘aa’)]")
    选取id值以“aa”开头的div节点

    展开全文
  • Lottie动画动态定位以及缩放

    千次阅读 2017-07-21 17:08:59
    有时候我们需要用Lottie来播放一些,相对与某些位置的非固定动画,这时候就需要给他进行定位缩放了,请看我的方法。刚开始的时候,我觉得这是一件非常简单的事情,不就是确定一个点,然后不同设备根据这个点的比例来...
  • 据说,有码农的地方就有江湖,近期有朋友向编者咨询关于小程序开发定位的若干问题,那么今天小编就本着无私奉献的精神把自己的实战经验整理分享出来,仅供各位江湖朋友参考。应用场景:根据当前移动设备上小程序的...
  • 对于“下一步”功能,之前实现了对运行时栈的展示,目前,又进一步完善了“下一步”的展示功能,实现了对当前字节码的动态定位和展示。 当提交了一个待观测的文件之后,Cobra会自动定位到第一条字节码指令,并高亮...
  • 欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 ...
  • 使用js动态定位目标

    千次阅读 2006-10-10 16:19:00
    背景 :有时候你想定位一个按钮或者图片(比如为了鼠标一移上去就会弹出一个层),想知道它到底处于屏幕的那个坐标,而且很多页面都要用包含这个按钮,js中有很多xxxleft,xxxtop属性,到底该怎么用下面的代码来自...
  • 转载于:https://www.cnblogs.com/linsx/p/9934856.html
  • 对于UIRect利用Anchor的定位 基本用发如下图:    xia
  • center: [center * Number(i + 1) + "%", "60%"], //每个圆环图的位置,动态计算 //第一个是内径。第二个是外径。内劲变大就是圆环 radius: [center + "%", center + center + "%"], //每个圆环图的大小,动态...
  • 静态重定位动态定位

    万次阅读 多人点赞 2018-06-04 18:50:31
    区别这两个概念之前,要知道 重定位 的概念。重定位,通常来说把在装入时对目标程序中指令和数据地址修改的过程称为重定位。...各个用户进程很难共享内存中同一程序的副本动态定位动态运行的...
  • 地址重定位:静态重定位动态定位

    万次阅读 多人点赞 2014-09-19 09:33:13
    地址重定位就是操作系统将逻辑地址转变为物理地址的过程。。。也就是对目标程序中的指令和数据进行修改的过程 将逻辑地址空间重定位到物理地址空间的时机有三种:  1、程序编译连接时。  2、程序装入内存...
  • 静态重定位动态定位

    千次阅读 2015-07-02 16:49:26
    对程序进行重定位的技术按重定位的时机可分为两种:静态重定位动态定位。 1.静态重定位 静态重定位是在目标程序装入内存时,由装入程序对目标程序中的指令和数据的地址进行修改,即把程序的逻辑地址都改成...
  • 在做一个大创的过程中真是遇到很多坎坷,但是硬着头皮上的收获也很多。 经过大量的查找学习,终于完成一个Android6.0以上...Android6.0以上动态定位权限申请 第一点 了解Android原生GPS定位过程 10.14 Android GPS初涉
  • Selenium 定位动态元素

    2019-07-17 12:22:00
    目前,我是可以通过css定位到该元素的,但是click没用,这个元素是动态的,只有鼠标指针移上去之后,ClassName的属性才会变化. 我尝试过使用ActionChains的move_to_element方法将鼠标悬停和ActionChains的double_click...
  • Selenium定位动态元素

    2020-05-27 13:39:00
    selenium做网页UI自动化的时候,会遇到网页元素id/name是动态生成的情况,可以考虑模糊匹配定位,匹配元素定位中不变且唯一的地方. 可以使用的方法有 starts-with(以什么开始) ends-with(以什么结束) contains ...
  • 动态定位执行过程

    千次阅读 2017-06-21 23:10:01
    ld-linux.so.2的_dl_runtime_resolve函数,这个函数解析出puts的绝对地址,回填到GOT[5]。 所有动态库函数在第一次调用时,都是通过XXX@plt...linux 动态链接器提供动态重位功能,所有外部函数只有调用时才做重定位
  • 地址重定位:静态重定位动态定位
  • selenium定位动态id元素

    万次阅读 多人点赞 2017-01-16 16:40:24
    做web自动化时,常常会碰到需要定位的元素id不是固定的...因该元素id是动态的,无法通过id属性进行定位,只好换成xpath. 1.通过绝对路径定位: By.xpath("/html/body/div[3]/div[2]/div/form/div/div[5]/div/div[3...
  • 对程序进行重定位的技术按重定位的时机可分为两种:静态重定位动态定位。静态重定位:是在目标程序装入内存时,由装入程序对目标程序中的指令和数据的地址进行修改,即把程序的逻辑地址都改成实际的地址。对每个...
  • Android 动态申请定位权限

    千次阅读 2020-03-30 17:21:11
    AndroidManifest.xml(清单文件)添加需要的权限 <uses-permission android:name="android.permission.ACCESS_...-- 用于进行网络定位 --> <uses-permission android:name="android.permission.ACCES...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 382,737
精华内容 153,094
关键字:

动态定位