- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
武汉科锐逆向培训学习笔记
怎么寻找main函数:通常在入口下有3个push的汇编代码,而winmain是有4个push Debug中有cc初始化 _chkesp是比较栈顶的esp的平衡 Stdcall如果有输入参数的话,那么就有 ret + 数值 返回要平衡 Ida的交叉引用树是一个很好的工具 Ida按n可以改变函数的名称 Ida按;可以注释 Ida双击函数到达函数中,可以按esc回到原来的位置 Ida中局部变量用var表示,参数用arg表示 代码的管理是图(现代编译原理) 编译器的优化:1常量的归并.2:没有用的常量会优化 3种call: 1: cdecl:跟进去看看有没有对参数的访问,再来看ret 2: stdcall: 3: fastcall:头两个参数是用寄存器传参的,另外是用栈传参 2的32+3次方/11 缩小2的3次方倍 b/11 = b* 3 2的32+3次方/11 b是无符号数 a是有符号数 a/5 = a* 1 + 符号位 2的32+1次方/5 2的32+1次方/5 缩小2的1次方倍 符号位 x/2 c编译器优化: 按c语言规则,除法是向下取整的,3/2 = 1 若x为正偶数,x/2等价于x1 若x为正奇数,x/2等价于(x-1)/2,等价于x1,或者(x-1)1 所以正整数的情况下,不用处理,直接位移 按补码格式规定, 若x为负偶数,x/2等价于x1 若x为负奇数,这时候(-3)/2 = -1,除法变成了向上取整 x/2等价于(x+1)/2等价于(x+1)1 所以负数情况下不能直接位移,需要加1 手工优化asm代码是项目的结尾 1.Bat文件 md %1__sig cd %1__sig for /F %%i in (link -lib /list %1.lib) do link -lib /extract:%%i %1.lib for %%i in (*.obj) do pcf -g0 %%i sigmake -nMyLIBC *.pat MyLIBC.Sig del *.obj rem cd.. 去掉 需要的文件 1 2 3 4 对着函数按num的+和-可以隐藏和反隐藏代码 Dbg:do_while s+=i i++ while Dbg:while While() Dbg:For() i=n s += i i++ R版的do_while begin_do: [语句体] 判定:jxx begin_do R版的while 判定:jxx end_while begin_while: [语句体] 判定:jxx begin_while end_while: R版的for 判定:jxx end_while begin_while: [语句体] 判定:jxx begin_while end_while: 代码外提 静态变量初始化 的与运算,求出当前的静态变量的初始化位置 阻止文件删除 汇编 * 可以看到刚才加的事件 然后可以编译一下 这里注意一下 加入的是自动生成的名称 工具条的保存位置 汇编笔记: 运行状态 文件状态 汇编状态 6.15支持MMX指令集 6.14不支持 看ml.exe版本 汇编一个com程序 命令:debug 反汇编一个com程序 命令:-u 汇编一个程序,命令:-a (可以用汇编语言写入汇编程序) 用机械码写入汇编 命令–e 显示16进制汇编 -d 新建文件 -n 修改寄存器 –r要输入数值 写入文件 -w 这里是写入的大小 运行 –g 退出 -q -d不加参数不会读取DS中的数值 -d加参数就会读取DS中数值 这段话可以修改DS中的值 8086的16位通用寄存器是: AX,BX,CX,DX,SI,DI,BP,SP 其中前四个可以分为AH,BH,CH,DH, AL,BL,CL,DL AX:累加器,使用频度高,用与算术,逻辑,与外设传送信息 BX:基址寄存器,常用做存放储存器的地址 CX:计数器 DX:数据寄存器 SI:源变址寄存器 DI:目的变址寄存器(块操作) SP:堆栈指针寄存器 BP:基址指针寄存器 IP:指令指针寄存器 代码段: 处理器用CS:IP获得下一条要执行的指令 堆栈段: 处理器用SS:SP操作堆栈顶的数据 数据段: 处理器用DS:EA存取数据段的数据 附加段: 处理器用ES:EA存取附加段的数据 : 8086两数带进位相加 :6666 9999 :7777 8888 :CODE MOV AX,9999 MOV BX,8888 MOV CX,7777 MOV DX,6666 ADD AX,BX :低位相加 cf ADC DX,C
文档评论(0)