【OS】07 – 突破512字节的限制(中)【主要内容:内存比较函数 MemCmp 和根目录区查找函数 FindEntry 】
原理参考:【OS】07 - 突破512字节的限制(中)   0x01 验证1:内存比较函数 MemCmp 1.1 code ;@ ;目的: 验证MemCmp函数 ;参考此函数调用即可 org 0x7c00 jmp short start nop define: BaseOfStack equ 0x7c00 ;start from here start: mov ax, cs mov ss, ax mov ds, ax mov es, ax mov sp, BaseOfStack ; test MemCmp mov si,MsgStr mov di,Target mov cx,MsgLen call MemCmp cmp cx,0 jz lable jmp last lable: mov bp,MsgStr mov cx,MsgLen call Print last: hlt jmp last ; ds:si --> source ; es:di --> destination ; cx --> length ; ; return: ; (cx == 0) ? equal : noequal MemCmp: push si push di push ax compare: cmp cx, 0 jz equal mov al, [si] cmp al, byte [di] jz goon jmp noequal goon: inc si inc di dec cx jmp compare equal: noequal: pop ax pop di pop si ret ; es:bp --> string address ; cx --> string len…
调试器 – gdb
  GDB的常规应用(动态分析工具==目标=>进程) 自定义程序的启动方式(指定影响程序运行的参数),指定了命令行参数(本质是main函数的参数),软件运行的结果就可能是不同的 设置 条件断点(条件满足时暂停程序的执行,用于递归和循环语句) 回溯检查导致程序异常结束的原因(Core Dump),gdb监视,如果访问0地址处,程序告诉你具体出问题的代码行 动态改变程序执行流(定位问题的辅助方式),跳过某一行程序的执行 GDB是GNU项目中的调试器,能够跟踪或改变程序的执行 GDB同时支持软件断点,硬件断点和数据断点。   GDB的启动方式 直接启动: gdb gdb test.out //这样是关注test.out文件产生的进程(file是gdb内部的指令,指明当前的gdb需要关注的进程) gdb test.out core // 异常崩溃产生的core文件 动态链接: gdb test.out pid // gdb监视test.out产生的某个进程,gdb动态跟踪进程的行为   示例一:直接启动 :~$ gdb // 启动 (gdb) file test.out // 载入目标程序 前两行 ==> gdb test.out gdb关注目标程序对应的进程 (gdb) set args arg1 arg2 // 指定程序执行时的命令行参数,指定启动test.out的参数 (gdb) run // 执行目标程序   示例二:动态链接(调试正在运行的程序) :~$ sudo gdb // 用sudo启动gdb,要动态链接,必须这样,否则没权限 (gdb) attach 进程的pid号 // 链接到目标进程,链接成功后 (前两行 ==> gdb a…
栈溢出:代码植入
0x01 代码植入原理: 通过栈溢出让程序执行输入数据中植入的代码,把返回地址覆盖为buffer的起始地址,植入的代码放到buffer中 实验验证:向password.txt文件中植入一个二进制机器码,这段机器码用来调用windows的一个api函数MessageBoxA,最终在桌面弹出一个消息框并显示"failwest"字样。   code /***************************************************************************** To be the apostrophe which changed "Impossible" into "I'm possible"! POC code of chapter 2.4 in book "Vulnerability Exploit and Analysis Technique" file name : stack_overflow_exec.c author : failwest date : 2006.10.1 description : demo show how to redirect EIP to executed extra binary code in buffer Noticed : should be complied with VC6.0 and build into debug version the address of MessageboxA and the start of machine code in buffer have to be make sure …
thumbnail
潜行
痛是一种什么样的感觉?如果你没有经历过,我无论怎么去描述,你都无法真正去体会。你有没有独自忍受疼痛,行走在茫茫大路。十几米的距离,一步一颠,硬是折腾十几分钟。人来人往,却没有一个搀扶的手,没有一个依靠。冰凉的阳光倾斜而下,普撒整个寒冬。略带寒意的微风,带走脸庞的余温。我独行在这个陌生的城市,慢慢潜行。看着路边的风景,心里少不了孤独的滋味。这一刻,才深知身影的单薄,才明白无言的深意。抬头看向南方,坚定了神情,大笑了出来。可口的饭菜,你不吃,就不知道它的美味。困难的事,你不做,就不知道它的难处。痛也好,苦也罢,都要自己去经受。唯有如此,才能体验深刻。有了这些经历作比较,就会知道平凡的生活是多么的难得,触手可及的一切是多么珍贵。就会主动珍惜时间,珍惜情谊,珍惜真心和真情。在这个单薄身影中,相互依靠。携手潜行,共赴未来。
thumbnail
网站:被攻击后的思考
午后,泡上一杯奶茶,静让温热香甜的茶水驱去冬日的寒气。照常习惯性打开手机,点入朋友建立的网站,编写文章。无法访问!无法访问!无法访问!一下子懵了!过往的思绪一下子冲入脑海,一阵心惊。之前发生过这种情况,结果是所有文章全部丢失,一切重新归零。带着一颗担忧的心前去探秘,是被恶意攻击了,网站瘫痪,无法访问。朋友对我说,留有备份,稍等片刻就能恢复。说的是很轻松,但我知道没那么容易。这注定少不了一顿摸索,排查。对于计算机,我就是门外汉。但这一次事件,却引发了我的思考!以前历史老师常挂嘴边的话一下子蹦入我的脑海:『 落后就要挨打、弱就是原罪。』以前不以为意,但经此一事后让我重新深刻认识到这句话。我们看到路边的蚂蚁,昆虫,或许只是觉得好玩,便去调戏、玩弄它。但看到蛇,蝎,会本能的远离,这是一个有趣的现象。有时候并不需要原因,或许只是一个好奇,或许只是想调戏一下,或许只想用来练手……就这,我们的网站论陷了!辛苦建立、维护的空间崩溃了,用心书写的原创文章全部被窃走……,瞬间回到解放前。试想一下,若是没有留存备份,若是没有过硬的技术,若是没有提前预想到这种情况,提前留有后手,那带来的结果只有一个:完犊子!除了抱怨还有什么?还有空荡荡的“无法访问”陪伴,还有那种愤怒但又没什么办法的无奈,还有痛恨不够强大的心急……前事不忘,后事之师。从历史长河之中,从这次事件当中,我找到了答案。我们为什么要变强、为什么要自强不息?因为我们要守护原创,守护这辛苦开拓出的一方美好。只有足够强大,才能让敌有所忌惮,才能抵御一切来犯之敌,才能让其承受相应代价,才能护住这一方美好。因为爱,所以不容侵犯。因为守护,所以努力变强。只有足够强大,才能护得一方安宁。前一段时间,网上流传了一句非常共鸣的话:“哪有什么岁月静好,只是有人替你负重前行!”现在…
栈溢出:突破密码验证程序 – 控制程序执行流程
  0x01 淹没帧状态值控制程序执行原理 /***************************************************************************** To be the apostrophe which changed "Impossible" into "I'm possible"! POC code of chapter 2.2 in book "Vulnerability Exploit and Analysis Technique" file name : stack_overflow_var.c author : failwest date : 2006.9.20 description : demo show nearby var overrun in stack input 8 letters to bypass authentication Noticed : complied with VC6.0 and build into begug version version : 1.0 E-mail : failwest@gmail.com Only for educational purposes enjoy the fun from exploiting :) ******************************************************************************/ #include <stdio.h> #define PASSWORD "1234567" int …
栈溢出:突破密码验证程序 – 修改邻居变量
  0x01 修改邻里变量的原理 1.1 程序: /***************************************************************************** To be the apostrophe which changed "Impossible" into "I'm possible"! POC code of chapter 2.2 in book "Vulnerability Exploit and Analysis Technique" file name : stack_overflow_var.c author : failwest date : 2006.9.20 description : demo show nearby var overrun in stack input 8 letters to bypass authentication Noticed : complied with VC6.0 and build into begug version version : 1.0 E-mail : failwest@gmail.com Only for educational purposes enjoy the fun from exploiting :) ******************************************************************************/ #include <stdio.h> #define PASSWORD "1234567" i…
Ollydbg中寻找main函数入口
《C++反汇编与逆向分析技术》讲解如何查找main函数: OllyDbg默认情况下将程序中断在PE装载器开始处,不是在main函数开始处,因为需要手工识别main函数的位置。 识别main函数如同识别一个人。要识别一个人,首先观察外观,识别身体和外貌特征,把这些特征和自己认识的人匹配,从而判断这个人的身份。   main函数特征: 1、有3个参数,分别是argc、argv、环境变量信息,而且main函数是启动函数中唯一具有3个参数的函数。同理WinMain函数是启动函数中唯一具有4个参数的函数。 2、main函数返回需要调用exit函数,结束程序根据main函数调用特征,找到入口代码第一次调用exit函数处,离exit最近的且有3个参数的函数通常就是main函数。 老钱这里只讲到了识别main函数啊,没有讲怎么找到main函数。       F8大法好(借鉴下,这个比较容易) 文章参考:https://blog.csdn.net/qingshenxue/article/details/6209788 ===================== 先声明下:这个和脱壳没关系,不是找壳里面的程序入口哦,只是程序本身的入口,个别朋友不要误会哈。 一般用OllyDBG打开程序的时候,并不是直接定位到程序入口,而是还要先进行一系列的初始化工作,但做这些工作的反汇编代码我们是不需要的,所以我们要快速跳过,直接到程序入口。 我先把方法写出来,然后再简单分析一下初始化的时候都干了什么。 1. 一路F8下去,分别步过下列两个函数: call dword ptr ds:[<&KERNEL32.GetVersion>] ; kernel32.GetVersio…
thumbnail
时间酿造真情
随着时间的流逝,我们逐渐长大,而个人的经历,也逐渐丰富起来。曾经那些玩伴,也各奔前程,过着自己的生活。想要见一面,走走闹闹,不觉间已成为一种奢侈。回忘过往的经历,一幕幕在脑中闪现:旅游景点晃晃荡荡,夜幕降临挥汗憨笑,雷电交织拳脚击撞,意外惊喜温馨感动,彼此考虑相互依靠……一张桌子,三两小菜,几副碗筷,聊不完的话题,笑不完的哈声…探望现在,伙伴们各自努力,各自奔赴。有了成年人的思考,琐碎便成了生活。一个电话,一封信件,一个朋友圈,诉说的总是美好、圆满。但谁曾想到,这不过是你不想让朋友、家人挂念的说辞罢了。成年人的世界总是积累了一个一个的故事,只有在夜深人静的的时候,才会向身旁的影子倾诉。或许在等待未来某一天,我们再次相遇时,备上三两小菜,一壶好茶,畅谈天明吧。时间永前,我们跟随时间,也逐渐长大。而我们的角色,也在变换。经历的多了,担子重了,故事也多了。有了好故事,自然想要和知己分享分享。或许只有在那一刻,孤零的灵魂才会有归属的踏实,才会迸发久违的憨笑。现在的网络确实很发达,虽在五湖四海,但能做到随想随聊。有好多的话想说,好多的事想诉,但每每拨通电话,是不是就言不含情,意不达心了。隔着屏幕,又怎会有面对面的真情流露,实实在在的真实体验呢?我们都在努力变好,都在各自岗位上奋勇拼搏。期待着下一次的见面,遇见更好的彼此。备一壶好茶,聊一个天明。
2024年你有什么新年愿望?
          如图:。           与其说新年愿望,不如说是新年规划,按照规划的方向好好生活,我更多的还是想要追求心态上的:"松弛感"、"平衡感",工作上的:"多渠道收入"、"工作开心"。     同时许下愿望:可以在国内的每个城市都小住一段时间,感受不同城市的温度,嗯...有人一起就更完美。    
thumbnail
思考:慢就是快
以前读书上学那会儿,老师说不要急于求成,慢慢来,总是不以为意。心思也没怎么放在学习上,稀里糊涂地过日子。后来面临现实问题,方知书到用时方恨少,便下决心好好学,努力学。广泛购书,上网课,报学习班……,一顿操作猛如虎,回头一看,手里空空,独留悔恨在心头。都说心急吃不了热豆腐!可现实的急需、催促,又怎能让我不心急?但现实结果告诉我,慢下来才能深入,才能专业。“社会发展太快了,你不要走太快,慢下来等一等灵魂。”稳扎稳打,步步为营。看似是慢,但实际并不慢。允许自己慢慢进步,就是最快的进步。龟兔赛跑这个故事,值得我们深思一下。