dword

Windows Embedded CE 6.0 Internals (3) Memory Continued

﹥>﹥吖頭↗ 提交于 2020-03-29 03:43:04
对我来说写一篇博客真的不容易,我是个十足的完美主义者,但是水平很一般,所以我会花上很多时间去修补文章。也许文章并不能让你满意,如果你有任何的建议,任何的,我都非常期待你能告诉我。这篇文章仍然是继续 Windows Embedded CE Internals (2) 内存部分。 从硬件视角看内存 从硬件上看,可作为内存的大体分为RAM、ROM、Nand/Nor Flash(兼具RAM和ROM特性的混合体)。 RAM 內存 可以进一步分为静态随机存取存储器( SRAM )和动态随机存取存储器( DRAM )两大类。 SRAM 具有快速访问的优点,但生产成本较为昂贵,一个典型的应用是 高速缓存 。而 DRAM 由于具有较低的单位容量价格,所以被大量的采用作为系统的 主存储器 。 以下简单列举一些RAM: DRAM SRAM VRAM(Video RAM) DDR SDRAM(Double Data Rate SDRAM) DDRII(Double Data Rate Synchronous DRAM) 那么RAM、ROM、Flash有哪些区别?我在这里简单的总结一下: 1.RAM需要供电才能保存数据,而ROM、Flash都不需要。 2.内存中的代码能够直接被执行的前提是CPU能够随机读取这个内存里面的数据,RAM满足这个条件的,还满足这个条件的是ROM和Nor Flash(也就是XIP)

Windows Embedded CE 6.0 Internals (4) The Mechanism of API

荒凉一梦 提交于 2020-03-29 03:38:31
引言 在调用系统提供的( System call )或者自己实现的DLL文件(有导出函数)中的API时,我很好奇其中的机制,也就是:我们为什么能调用这些API? 另外,安全和效率总是矛盾的,那么CE如何保证这两者? 现在的CE是不是不堪一击,用户态进程无意的操作是否就能让系统Crash,或者几行 Shellcode 就能瓦解它的安全体系? 这个问题让我想起来前几天看到的新闻,关于Windows桌面操作系统和Mac系统安全性的比较,就像查理·米勒所说的: “Mac OS X就像是你生活在一所乡村里的,没有锁的房子,而Windows则是一间只有门闩的城市公寓。” 笔者尝试搞清楚其中的一些问题,欢迎交流,如发现文章错误或者欠妥的地方,请不吝赐教。 1.什么是系统调用? “In computing , a system call is the mechanism by which a program requests a service from an operating system's kernel .” 简单的说就是 系统内核提供给程序各种服务的一种方法 。与系统调用类似的还有异常、中断(参加 WindowsCE异常和中断服务程序初探 或者《Windows Internals》)。 “On Unix , Unix-like and other POSIX -compatible

【逆向笔记】OD工具使用-逆向TraceMe.exe

两盒软妹~` 提交于 2020-03-26 23:46:03
阅览目录 名词注释 OD快捷键熟悉 逆向之猜 算法逆向 暴力破解 样本引用 回到顶部 名词注释 System breakpoint:系统断点,OllyDbg用CreateProcessA加载DEBUG_ONLY_THIS_PROCESS参数执行,程序运行之后会触发一个INT13,在系统空间里。 Entry point of main module:主模块的入口点,即文件的入口点。 WinMain:程序的WinMain()函数入口点 OD的设置中-选项-事件中设置 OD快捷键熟悉 1、F2 下断点, 2、Alt+b 打开断点编辑器,可编辑所有下过的断点 3、空格键 可快速切换断点状态。 4、Ctrl+F9.当位于某个CALL中,这时想返回到调用这个CALL的地方时,可以按“Ctrl+F9”快捷键执行返回功能。这样OD就会停在遇到的第一个返回命令(如RET、RETF或IRET)。 5、Alt+F9 如果跟进系统DLL提供的API函数中,此时想返回到应用程序领空里,可以按快捷键“Alt+F9”执行返回到用户代码命令。 6、Ctrl+G 跳转到API、地址的位置 逆向之猜 逆向与开发的知识是成正比关系,只有对开发特别熟悉,逆向一个程序才能猜测到该用哪个关键的API才能快速定位到程序的数据处理。 通过PEID查看程序特征,根据程序语言用IDE生成特征或者熟悉开发的API函数

C++的那些事:你真的了解引用吗

柔情痞子 提交于 2020-03-25 07:42:34
一、引用的本质是什么 说到引用,一般C++的教材中都是这么定义的: 1,引用就是一个对象的别名。 2,引用不是值不占内存空间。 3,引用必须在定义时赋值,将变量与引用绑定。 那你有没有想过,上面的定义正确吗?编译器是如何解释引用的? 这里先给出引用的本质定义,后面我们再进一步论证。 1,引用实际是通过指针实现的。 2,引用是一个常量指针。 3,引用在内存中占4个字节。 4,在对引用定义时,需要对这个常量指针初始化。 二、探究本质 我们从最简单的变量的定义开始,看编译器会做哪些事情。 int var = 42; mov dword ptr [var],2Ah // 对应汇编代码 上面语句申请了一块内存空间,占4个字节,存放了一个int型的变量。内存里放的是42的二进制码。 汇编代码向我们表达的意思就是把42写入以var为地址的内容区域。var有点像我们理解上的指针,只是编译器并没有把它抽象出来,而是让我们更表象的理解:申请一个变量,它的值为42。 那么 var这个变量名放在哪呢 ? 我们知道程序如果访问内存里的数据,需要通过地址来进行访问,所以上面的代码在经过编译器生成目标代码时,用存放42的地址了所有的var,所以结论时, 目标文件中不存在var,所以变量名本身是不占内存的 。 而我们知道,引用是变量的一个别名。那么,从这很多人会联想到,引用会不会也只是一个名字而已

使用Python打造一款间谍程序

走远了吗. 提交于 2020-03-24 16:47:35
知识点 这次我们使用python来打造一款间谍程序 程序中会用到许多知识点,大致分为四块   win32API 此处可以在MSDN上查看   Python基础重点在cpytes库的使用,使用方法请点击 此处   C语言基础   Hook ​ 程序的基本原理在于通过注册Hook,记录系统事件 那么什么是Hook呢 Hook 技术又叫做钩子函数,系统在调用函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递 注册Hook时我们需要先导入DLL库,在Python中我们使用ctypes来导入,导入方法如下 user32 = CDLL("user32.dll") kernel32 = CDLL("kernel32.dll") 我们导入了user32.dll和kernel32.dll 这两个DLL有什么用处呢    user32.dll   是Windows用户界面相关应用程序接口,用于包括Windows处理,基本用户界面等特性,如创建窗口和发送消息   kernel32.dll  控制着系统的内存管理、数据的输入输出操作和中断处理 流程部分 知道了我们要使用什么样的工具,那么第一步应该怎么做呢 1.首先我们需要先注册Hook到系统上,通过user32.dll中的SetWindowsHookExA函数

ANONYMOUS LOGON是怎么回事

一曲冷凌霜 提交于 2020-03-24 07:39:32
这是计算机里面匿名访问时会出现的东东... 意思是匿名登陆,所以这个用户是最低权限的,只有浏览,也就是只读的权限。ftp或http下载软件的时候,如果不登陆,就是这种状态。 除非你关闭了 137-139.445端口,彻底禁用所有网上邻居、windows共享 否则会有这个的,而且很正常。只要有人打开网上邻居,而且里面有你的电脑、就多半会有这个纪录。 方法1 如果你坚持使用网络共享 , 那么走注册表 hkey_local_machine\system\currentControlSet\Services\lanmanserver\parameters Lmannounce : dword= 0 requiresecuritysignature :dword=1 restrictnullsessaccess :dword = 1 NullSessionPipes = (空) NullSessionShares =(空) 方法2 如果你觉得你不用别人的网络共享,别人也不能登陆你的 HKEY_LOCAL_MACHINE Key: System\Controlset\Services\NetBT\Parameters SMBDeviceEnabled : REG_DWORD = 0 hkey_local_machine\system\currentControlSet\Services

手脱ACProtect V1.4X(有Stolen Code)

倾然丶 夕夏残阳落幕 提交于 2020-03-23 14:44:16
1.载入PEID ACProtect V1.4X -> risco 首先需要说明的是,这个壳被偷取的代码非常多,如果去找的话会比较麻烦,所以我们换一种另类的方法,不脱壳也可以使用资源修改器对程序进行修改。先来看下被偷取的代码 0040A41E >/$ 55 push ebp 0040A41F |. 8BEC mov ebp,esp 0040A421 |. 6A FF push -1 0040A423 |. 68 C8CB4000 push 跑跑排行.0040CBC8 0040A428 |. 68 A4A54000 push <jmp.&MSVCRT._except_handler3> ; Entry address; SE handler installation 0040A42D |. 64:A1 0000000>mov eax,dword ptr fs:[0] 0040A433 |. 50 push eax 0040A434 |. 64:8925 00000>mov dword ptr fs:[0],esp 0040A43B |. 83EC 68 sub esp,68 0040A43E |. 53 push ebx 0040A43F |. 56 push esi 0040A440 |. 57 push edi 0040A441 |. 8965 E8 mov [local.6]

手脱ASProtect v1.23 RC1(有Stolen Code)

馋奶兔 提交于 2020-03-23 14:43:27
1.载入PEID ASProtect v1.23 RC1 常见ASprotect版本壳: ASProtect 1.23 RC4 按shift+f9键26次后来到典型异常 ASProtect 1.31 04.27 按shift+f9键36次后来到典型异常 ASProtect 1.31 05.18 按shift+f9键40次后来到典型异常 ASProtect 1.31 06.14 按shift+f9键38次后来到典型异常 2.载入OD,不勾选内存访问异常,其他异常全部勾选,然后使用最后一次异常法,应该是第26次,第27次就会跑飞 00401000 > 68 01C06D00 push SoWorker.006DC001 ; //入口点 00401005 E8 01000000 call SoWorker.0040100B 0040100A C3 retn 0040100B C3 retn 0040100C 74 23 je short SoWorker.00401031 0040100E C039 74 sar byte ptr ds:[ecx],74 00401011 0FD19CA4 0599E0>psrlw mm3,qword ptr ss:[esp+CFE09905] 00401019 AA stos byte ptr es:[edi] 3.落脚点在这个位置

手脱Upack 2.x - 3.x

狂风中的少年 提交于 2020-03-23 13:47:13
1.PEID查壳 Upack 2.x - 3.x Heuristic Mode -> Dwing 2.载入OD,一上来就是一个大跳转,先F8跟一会 00401030 >- E9 56D40300 jmp 跑跑排行.0043E48B ; //程序入口点 00401035 42 inc edx ; 跑跑排行.<ModuleEntryPoint> 00401036 79 44 jns short 跑跑排行.0040107C 00401038 77 69 ja short 跑跑排行.004010A3 0040103A 6E outs dx,byte ptr es:[edi] 0040103B 67:40 inc eax ; kernel32.BaseThreadInitThunk 0040103D 0000 add byte ptr ds:[eax],al 3.来到这里,我们看到一个push,可以使用ESP定律,下硬件访问断点,然后shift+F9运行一下 0043E49B F3:AB rep stos dword ptr es:[edi] 0043E49D AD lods dword ptr ds:[esi] 0043E49E 50 push eax 0043E49F 97 xchg eax,edi ; //ESP定律 0043E4A0 51 push ecx 0043E4A1 58

手脱ASProtect v1.23 RC1(无Stolen Code)

拥有回忆 提交于 2020-03-23 13:46:56
1.载入PEID ASProtect v1.23 RC1 2.载入OD,不勾选内存访问异常,其他异常全部勾选 00401000 > 68 01C04200 push 跑跑排行.0042C001 ; //入口处 00401005 E8 01000000 call 跑跑排行.0040100B 0040100A C3 retn 0040100B C3 retn 0040100C D6 salc 0040100D 54 push esp 0040100E 4A dec edx 0040100F 60 pushad 00401010 55 push ebp 3.使用最后一次异常法,来到最后一次异常处应该是第16次,第17次就跑飞了 009E2CD1 3100 xor dword ptr ds:[eax],eax ; //落脚点 009E2CD3 64:8F05 0000000>pop dword ptr fs:[0] 009E2CDA 58 pop eax 009E2CDB 833D 7C6D9E00 0>cmp dword ptr ds:[9E6D7C],0 009E2CE2 74 14 je short 009E2CF8 009E2CE4 6A 0C push 0C 009E2CE6 B9 7C6D9E00 mov ecx,9E6D7C 009E2CEB 8D45 F8 lea eax