火龙果软件工程技术中心摘要:所谓SMC(SelfModifyingCode)技术,就是一种将可执行文件中的代码或数据进行加密,防止别人使用逆向工程工具(比如一些常见的反汇编工具)对程序进行静态分析的方法,只有程序运行时才对代码和数据进行解密,从而正常运行程序和访问数据。
计算机病毒通常也会采用SMC技术动态修改内存中的可执行代码来达到变形或对代码加密的目的,从而躲过杀毒软件的查杀或者迷惑反病毒工作者对代码进行分析。
由于该技术需要直接读写对内存中的机器码,所以多采用汇编语言实现,这使得很多想在自己的程序中使用SMC技术进行软件加密的C/C++程序员望而却步。
针对这种现状,本文提出了几种基于C/C+
1
第1讲:2015-01-12(进制01)第2讲:2015-01-13(进制02)第3讲:2015-01-14(数据宽度-逻辑运算03)第4讲:2015-01-15(通用寄存器-内存读写04)第5讲:2015-01-16(内存寻址-堆栈05)第6讲:2015-01-19(EFLAGS寄存器06)第7讲:2015-01-20(JCC)第8讲:2015-01-21(堆栈图)第8讲:2015-01-21(宝马问题)第9讲:2015-01-22(堆栈图2)第10讲:2015-01-23(C语言01_后半段)第10讲:2015-01-23(C语言完整版)第11讲:2015-01-26(C语言02_数据类型)第12讲:2015-01-27(C语言03_数据类型_IF语句)第13讲:2015-01-28(C语言04_IF语句逆向分析上)第14讲:2015-01-28(C语言04_IF语句逆向分析下)第15讲:2015-01-29(C语言04_正向基础)第16讲:2015-01-30(C语言05_循环语句)第17讲:2015-02-02(C语言06_参数_返回值_局部变量_数组反汇编)第18讲:2015-02-02(2015-01-30课后练习)第19讲:2015-02-03(C语言07_多维数组)第20讲:2015-02-03(2015-02-02课后练习)第21讲:2015-02-04(C语言08_结构体)第22讲:2015-02-05(C语言09_字节对齐_结构体数组)第23讲:2015-02-06(C语言10_Switch语句反汇编)第24讲:2015-02-26(C语言11_指针1)第25讲:2015-02-27(C语言11_指针2)第26讲:2015-02-28(C语言11_指针3)第27讲:2015-02-28(C语言11_指针4)第28讲:2015-03-02(C语言11_指针5)第29讲:2015-03-03(C语言11_指针6)第30讲:2015-03-04(C语言11_指针7)第31讲:2015-03-06(C语言11_指针8)第32讲:2015-03-09(位运算)第33讲:2015-03-10(内存分配_文件读写)第34讲:2015-03-11(PE头解析_手动)第35讲:2015-03-12(PE头字段说明)第36讲:2015-03-13(PE节表)第37讲:2015-03-16(FileBuffer转ImageBuffer)第38讲:2015-03-17(代码节空白区添加代码)第39讲:2015-03-18(任意节空白区添加代码)第40讲:2015-03-19(新增节添加代码)第41讲:2015-03-20(扩大节-合并节-数据目录)第42讲:2015-03-23(静态连接库-动态链接库)第43讲:2015-03-24(导出表)第44讲:2015-03-25(重定位表)第45讲:2015-03-26(移动导出表-重定位表)第46讲:2015-03-27(IAT表)第47讲:2015-03-27(导入表)第48讲:2015-03-30(绑定导入表)第49讲:2015-03-31(导入表注入)第50讲:2015-04-01(C++this指针类上)第51讲:2015-04-01(C++this指针类下)第52讲:2015-04-02(C++构造-析构函数继承)第53讲:2015-04-03(C++权限控制)第54讲:2015-04-07(C++虚函数表)第55讲:2015-04-08(C++动态绑定-多态-上)第56讲:2015-04-08(C++动态绑定-多态-下)第57讲:2015-04-09(C++模版)第58讲:2015-04-10(C++引用-友元-运算符重载)第59讲:2015-04-13(C++new-delete-Vector)第60讲:2015-04-14(C++Vector实现)第61讲:2015-04-15(C++链表)第62讲:2015-04-16(C++链表实现)第63讲:2015-04-16(C++二叉树)第64讲:2015-04-17(C++二叉树实现)第65讲:2015-04-20(Win32宽字符)第66讲:2015-04-21(Win32事件-消息-消息处理函数)第67讲:2015-04-22(Win32ESP寻址-定位回调函数-条件断点)第68讲:2015-04-23(Win3
2024/7/27 6:10:04 79B 滴水三期 汇编 C语言 C++
1
Windows平台下的32/64位反汇编工具,ollydbg绿色汉化版,可在win7/864位系统下运行,无需安装即可使用!
2024/6/27 1:05:16 26.95MB ollydbg
1
交互式反汇编器专业版(InteractiveDisassemblerProfessional),人们常称其为IDAPro,或简称为IDA。
是目前最棒的一个静态反编译软件,为众多0day世界的成员和ShellCode安全分析人士不可缺少的利器!IDAPro是一款交互式的,可编程的,可扩展的,多处理器的,交叉Windows或LinuxWinCEMacOS平台主机来分析程序,被公认为最好的花钱可以买到的逆向工程利器。
IDAPro已经成为事实上的分析敌意代码的标准并让其自身迅速成为攻击研究领域的重要工具。
它支持数十种CPU指令集其中包括Intelx86,x64,MIPS,PowerPC,ARM,Z80,68000,c8051等等。
用它可以反编译许多文件。
2024/6/23 6:22:22 152.69MB 反编译
1
计算机科学的发展离不开编译技术的支持,编译技术是计算机领城发展非常成熟的一个分支。
逆向工程是软件工程中一个新的发展方向,近年来开始被人们关注,氏为一个引人入胜的研究领城。
反汇编是软件逆向工程中十分重要的内容,通过对编译原理的透彻理解,可以更加科学规范地分析和理解软件系统,从而更加歌捷地实施逆向工程。
通过深入探讨编译原理,及通过编译技术进行逆向工程实戏,提出了程序理解的一盘思路,探索出一条进行逆向工程实戏的较好方法。
2024/6/21 17:23:56 19KB 编译原理
1
MIPS汇编器与反汇编器支持20条常用的MIPS汇编指令如add\sub\slt\beq
2024/6/20 11:39:49 79KB mips asm coe
1
《网络渗透技术》由安全焦点团队中的san,alert7,eyas,watercloud这四位成员共同完成。
本书的内容不敢妄称原创,更多的是在前人的研究基础上进一步深入发掘与整理。
但是书中的每一个演示实例都经过作者的深思熟虑与实际调试,凝聚了四位作者多年积累的经验。
从安全界顶级的杂志和会议看来,中国整体的系统与网络安全技术在世界上并不出色。
因为目前中国籍的专家在历届Phrack杂志上只有两篇文章,其中一篇还是在Linenoise里,而在Blackhat和Defcon会议的演讲台上至本书截稿时还未曾出现过中国籍专家。
虽然语言问题是其中一个很大的障碍,但我们也不得不正视这个令人沮丧的结果。
现在国内市场关于网络安全的书籍数不胜数,但是真正能够直面系统与网络安全底层技术的却又寥寥无几。
《网络渗透技术》以尽可能简单的实例深入浅出地揭示了系统与网络安全底层技术,我们不敢奢望每个看过本书的读者能够成为网络安全专家,但我们希望本书能够给后来者一些引导,希望以后在Phrack,Blackhat和Defcon上看到越来越多中国籍专家的身影。
内容导读本书共分十个章节,深入浅出地介绍了系统与网络安全底层技术。
第1章基础知识非常感谢安全焦点论坛技术研究版一些朋友的提议,在本书的最开始增加基础知识这个章节。
第1章简要地介绍了几种常用调试器和反汇编工具的基本使用方法。
对系统与网络安全有一定了解的读者可以跳过这一章。
第2章缓冲区溢出利用技术缓冲区溢出利用技术是本书的重点。
本章先介绍了缓冲区溢出的历史,然后一共介绍了六种平台操作系统的利用技术。
想要了解各种平台操作系统构架的读者不能错过本章。
作者精心设计了几个浅显易懂的实例,并且记录了每一步的调试过程。
相信读者看过本章内容以后,对缓冲区溢出的原理和利用技术会有深刻的理解。
第3章Shellcode技术如果没有Shellcode,那么缓冲区溢出一般也只能达到拒绝服务等效果,渗透测试者要想获得控制,必须用Shellcode实现各种功能。
比如,得到一个Shell,监听一个端口,添加一个用户。
本章不但介绍了各种平台的Shellcode的撰写与提取方法,还深入讨论了各种高级Shellcode技术及相应源码。
如远程溢出攻击时搜索套接字Shellcode技术的各种方法,这种技术在远程渗透测试过程中将更加隐蔽。
第4章堆溢出利用技术操作系统对堆的管理比栈复杂多了,而且各种操作系统使用的堆管理算法完全不同。
本章介绍了Linux,Windows和Solaris这三种操作系统的堆溢出利用技术,作者为每种操作系统都精心设计了几个浅显易懂的实例来描述各种利用方法。
第5章格式化串漏洞利用技术格式化串漏洞的历史要比缓冲区溢出短得多,而且一般也被认为是程序员的编程错误。
但是格式化串漏洞可以往任意地址写任意内容,所以它的危害也是非常致命的。
本章主要讨论了Linux,SolarisSPARC和Windows这三种平台的利用技术,由于各种操作系统的Libc不同,所以它们的利用过程也略有不同。
第6章内核溢出利用技术本章主要讨论当内核在数据处理过程中发生溢出时的利用方法。
内核态的利用与用户态很不一样,要求读者对系统内核有比较深入的了解。
本书的这一版目前只讨论Linuxx86平台的利用方法。
第7章其他利用技术本章讨论了一些不是很常见或特定情况下的溢出利用技术,主要有*BSD的memcpy溢出、文件流溢出、C++中溢出覆盖虚函数指针技术和绕过Pax内核补丁保护方法。
其中绕过Pax内核补丁保护方法这个小节要求读者对ELF文件格式有比较深入的了解。
第8章系统漏洞发掘分析相信许多读者会喜欢这一章。
在介绍了各种系统漏洞的利用方法以后,本章开始介绍漏洞发掘的一些方法,并且有多个实际漏洞详细分析,也算是前面几章利用技术的实践内容。
第9章CGI渗透测试技术通过系统漏洞获得服务器控制是最直接有效的方法,但是在实际的渗透测试过程中,客户的服务器可能都已经打过补丁了,甚至用防火墙限制只允许Web服务通行。
这时最好的渗透途径就是利用CGI程序的漏洞。
本章先介绍了跨站脚本和Cookie的安全问题,然后重点介绍PHP的各种渗透测试技巧。
第10章SQL注入利用技术现今的CGI程序一般都使用后台数据库,CGI程序的漏洞又导致了SQL注入的问题。
SQL注入利用技术是CGI渗透测试技术的一个重大分支,本章详细介绍了MySQL和SQLServer这两种最常见数据库的注入技术。
附录A系统与网络安全术语中英
2024/3/29 22:34:33 4.71MB 网络渗透技术 网络渗透 渗透技术
1
用于反汇编程序的脱壳软件的使用教程,适用于32位与64位的程序
2024/3/21 4:05:23 528KB 脱壳教程
1
1、无需设置由于它是一个便携式工具,它不需要您将其安装在目标计算机上,因为只需拆包其存档并启动可执行文件即可完全访问其功能。
您还可以从可移动存储介质(如USB闪存驱动器或外部HDD)运行它。
此外,它不会修改系统中的注册表项,也不会在您的PC上生成其他文件或文件夹,但未经您的明确许可。
2、综合界面dnSpy配备了一个时尚,全面的用户界面,包含广泛的有用功能,它们整齐地组织在主窗口的标准菜单中。
更重要的是,它具有标准配置窗口,您可以在其中调整各种组件的设置,如其反编译器,调试器或十六进制编辑器,但也可以修改显示或其他参数。
3、.NET反汇编程序如果您需要一个高效的工具,可以通过为您提供各种有用的工具来帮助您反编译.NET程序集,您可以转到dnSpy。
它配有一个反编译器,一个调试器,一个十六进制编辑器和一个程序集编辑器,让你以有效的方式处理程序集。
主窗口附带了一个AssemblyExplorer窗格,您可以在其中访问所需程序集的树视图。
您可以通过从计算机指定适当的文件或使用“从GAC打开”选项打开程序集,该选项为您提供全局程序集缓存中可用的条目列表。
4、.NET程序集的可靠反向工程工具所有考虑的事情,dnSpy是一个方便的应用程序,使您能够以有效的方式逆向工程.NET程序集,为您提供广泛的有用工具,包括反编译器,程序集编辑器和调试器。
它不需要安装,具有全面,平滑的用户界面,并为您提供了一个标准配置窗口,您可以在其中调整各种组件的设置。
2024/3/11 10:52:12 19.24MB dnSpy NET工具 net神器 Reflector
1
华中科技大学汇编实验源代码及实验报告2.1任务1.《80X86汇编语言程序设计》教材中P31的1.14题。
要求:(1)直接在TD中输入指令,完成两个数的求和、求差的功能。
求和/差后的结果放在(AH)中。
(2)请事先指出执行指令后(AH)、标志位SF、OF、CF、ZF的内容。
(3)记录上机执行后的结果,与(2)中对应的内容比较。
(4)求差运算中,若将A、B视为有符号数,且A>B,标志位有何特点?若将A、B视为无符号数,且A>B,标志位又有何特点?2.2任务2.《80X86汇编语言程序设计》教材中P45的2.3题。
要求:(1)分别记录执行到“MOVCX,10”和“INT21H”之前的(BX),(BP),(SI),(DI)各是多少。
(2)记录程序执行到退出之前数据段开始40个字节的内容,指出程序运行结果是否与设想的一致。
(3)在标号LOPA前加上一段程序,实现新的功能:先显示提示信息“Pressanykeytobegin!”,然后,在按了一个键之后继续执行LOPA处的程序。
2.3任务3.《80X86汇编语言程序设计》教材中P45的2.4题的改写。
要求:(1)实现的功能不变,对数据段中变量访问时所用到的寻址方式中的寄存器改成32位寄存器。
(2)内存单元中数据的访问采用变址寻址方式。
(3)记录程序执行到退出之前数据段开始40个字节的内容,检查程序运行结果是否与设想的一致。
(4)在TD代码窗口中观察并记录机器指令代码在内存中的存放形式,并与TD中提供的反汇编语句及自己编写的源程序语句进行对照,也与任务2做对比。
(相似语句记录一条即可,重点理解机器码与汇编语句的对应关系,尤其注意操作数寻址方式的形式)。
(5)观察连续存放的二进制串在反汇编成汇编语言语句时,从不同字节位置开始反汇编,结果怎样?理解IP/EIP指明指令起始位置的重要性。
2.4设计实现一个学生成绩查询的程序。
1、实验背景在以BUF为首址的字节数据存储区中,存放着n个学生的课程成绩表(百分制),每个学生的相关信息包括:姓名(占10个字节,结束符为数值0),语文成绩(1个字节),数学成绩(1个字节),英语成绩(1个字节),平均成绩(1个字节)。
2、功能一:提示并输入待查询成绩的学生姓名(1)使用9号DOS系统功能调用,提示用户输入学生姓名。
(2)使用10号DOS系统功能调用,输入学生姓名。
输入的姓名字符串放在以in_name为首址的存储区中。
(3)若只是输入了回车,则回到“(1)”处重新提示与输入;
若仅仅输入字符q,则程序退出,否则,准备进入下一步处理。
3、功能二:以学生姓名查询有无该学生(1)使用循环程序结构,在成绩表中查找该学生。
(2)若未找到,就提示用户该学生不存在,并回到“功能一(1)”的位置,提示并重新输入姓名。
(3)若找到,则将该学生课程成绩表的起始偏移地址保存到POIN字变量中。
4、功能三:计算所有学生的平均成绩使用算数运算相关指令计算并保存每一个学生的平均成绩。
平均成绩计算公式:(A*2+B+C/2)/3.5,即将语文成绩A乘以权重2、英语成绩C除以权重2后,与数学成绩B一起求和,再计算该生的平均成绩。
要求避免溢出。
5、功能四:将功能二查到的学生的平均成绩进行等级判断,并显示判断结果。
(1)平均成绩等级显示方式:若平均成绩大于等于90分,显示“A”;
大于等于80分,显示“B”;
大于等于70分,显示“C”;
大于等于60分,显示“D”;
小于60分,显示“F”。
提示:使用分支程序结构,采用2号DOS系统功能调用显示结果。
(2)使用转移指令回到“功能一(1)”处(提示并输入姓名)
2023/11/8 19:29:41 282KB 汇编
1
共 41 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡