19187| 94
|
[调试逆向] 逆向之汇编学习总结 |
发表于 2019-10-23 20:23
辅以神兵OD,逆向美哉!
内存基本概念寄存器位于CPU内部,执行速度快,但比较贵;而内存通过引脚与CPU相连,速度相对较慢,但成本较低,所以可以做的很大。寄存器和内存没有本质区别,都是用于存储数据的容器,都是定宽的。 内存的数量特别庞大,无法每个内存单元都起一个名字,所以用编号来代替,我们称计算机CPU是32位或者64位,主要指的就是内存编号的宽度(寻址宽度),而不是寄存器的宽度。 计算机内存的每一个字节会有一个编号(即内存编号的单位是字节),编号从0开始,32位计算机的编号最大是32位,也就是FFFFFFFF,也就是说,32位计算机内存寻址的最大范围是FFFFFFFF+1 , 即4GB,这也是为什么我们在一个XP的系统上面如果物理内存超过4G是没有意义的原因。 [内存编号]表示地址,每个内存单元的宽度为8,超过8位的数据会溢出到下一个内存单元。 内存读写
寻址公式1. [立即数]
2. [reg]
3. [reg+立即数]
*4. [reg+reg{1,2,4,8}]**:注意,这里只能取1,2,3,4中的一个。
*5. [reg+reg{1,2,4,8}+立即数]**
堆栈操作堆栈模型: 压入数据:
读取数据:
弹出数据:
push指令:完成上述模拟的压入数据操作,ebx和esp分别为占地和栈顶,由cpu调配,随着压栈操作而自动变化,与容器宽度有关加减2或4。
pop指令:完成上述模拟的弹出数据操作,ebx和esp分别为占地和栈顶,由cpu调配,随着出栈操作而自动变化。
popad指令:pushad的逆操作,恢复现场。 标志寄存器别问,问就是背CF进位标志(Carry Flag),如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。
PF奇偶标志PF(Parity Flag):奇偶标志PF用于反映运算结果中最后一个字节中“1”的个数的奇偶性,如果“1”的个数为偶数,则PF的值为1,否则其值为0。
AF辅助进位标志(Auxiliary Carry Flag),在发生下列情况时,辅助进位标志AF的值被置为1,否则其值为0:
ZF零标志(Zero Flag):零标志ZF用来反映运算结果是否为0,如果运算结果为0,则其值为1,否则其值为0。 SF符号标志(Sign Flag):符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。
OF溢出标志(Overflow Flag):溢出标志OF用于反映有符号数加减运算所得结果是否溢;如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。 最高位进位与溢出的区别:
是否溢出的判别规律:
DF方向标志位,默认从右操作数到左操作数,可以通过
相关指令
|
指令 | 解释 | 条件 | 例子 |
---|---|---|---|
JE、JZ |
结果为0时跳转(相等时跳转) | ZF=1 |
cmp al,al jz 0x19ff74 |
JNE, JNZ |
结果不为零则跳转(不相等时跳转) | ZF=0 |
cmp al,cl jnz 0x19ff74 |
JS |
结果为负则跳转 | SF=1 |
mov al,1 sub al,3 js 0x19ff74 |
JNS |
结果为非负则跳转 | SF=0 |
mov al,2 sub al,1 jns 0x19ff74 |
JP, JPE |
结果中1的个数为偶数则跳转 | PF=1 |
cmp al,al jp 0x19ff74 |
JNP, JPO |
结果中1的个数为偶数则跳转 | PF=0 |
mov al,1 cmp al,0xff jnp 0x19ff94 |
JO |
结果溢出了则跳转 | OF=1 |
mov al,07f add al,4 jo 0x19ff74 |
JNO |
结果没有溢出则跳转 | OF=0 |
mov al,07f add al,0 jno 0x19ff74 |
JB, JNAE |
小于则跳转 (无符号数) | CF=1 |
mov al,2 mov cl,1 cmp cl,al jb 0x19ff90 |
JNB, JAE |
大于等于则跳转 (无符号数) | CF=0 |
mov al,2 mov cl,1 test cl,al jb 0x19ff90 |
JBE, JNA |
小于等于则跳转 (无符号数) | CF=1 or ZF=1 |
cmp al,al jbe 0x19ff90 |
JNBE, JA |
大于则跳转(无符号数) | CF=0 and ZF=0 |
mov al,2 mov cl,1 cmp al,cl jnbe 0x19ff90 |
JL, JNGE |
小于则跳转 (有符号数) | SF≠ OF |
mov al,1 mov cl,2 cmp al,cl jl 0x19ff74 |
JNL, JGE |
大于等于则跳转 (有符号数) | SF=OF |
mov al,1 mov cl,2 cmp cl,al jnl 0x19ff74 |
JLE, JNG |
小于等于则跳转 (有符号数) | ZF=1 or SF≠ OF |
mov al,2 mov cl,1 cmp cl,al jle 0x19ff90 |
JNLE, JG |
大于则跳转(有符号数) | ZF=0 and SF=OF |
mov al,2 mov cl,1 cmp cl,al jnle 0x19ff90 |
first crackme
在Win32弹窗接口下断点:bp MessageBoxA
右键堆栈窗口栈顶处[0019FDB4],Follow In Disassember,观察反汇编窗口,如下:
禁用掉之前win32的断点后,再次点击小三角运行程序,并输入注册信息,点击确定,观察反汇编窗口,如下:
跟踪堆栈,回溯上判断程序的入口,在jcc指令处设置断点,并清除其它断点,然后修改jcc指令为相反逻辑,如下:
先将断点取消,然后右键反汇编窗口,选择Copy to executable->All Modifications
,这是跳转到保存结束的界面,右键反汇编窗口选择save
即可。
运行破解之后的程序CRACKME233.EXE,如果输入注册信息包含数字的话,第一次弹窗仍然为判断失败的提示,点击确定后才弹出判断成功的提示,接下来想办法干掉第一次判断失败的提示!
参与人数 49 | 威望 +1 | 吾爱币 +57 | 热心值 +47 | 收起 理由 |
---|---|---|---|---|
whitemoon | + 1 | + 1 | 热心回复! | |
kof888 | + 1 | + 1 | 热心回复! | |
智小白 | + 1 | 用心讨论,共获提升! | ||
jaley | + 1 | + 1 | 用心讨论,共获提升! | |
sy888 | + 1 | + 1 | 谢谢@Thanks! | |
我很菜 | + 1 | + 1 | 很详细,谢谢 | |
15914143399 | + 1 | + 1 | 热心回复! | |
往事如烟123 | + 1 | + 1 | 谢谢啦,这篇文章真不错希望楼再接再厉! | |
雪痕 | + 1 | 666 | ||
zhengyg | + 1 | + 1 | 谢谢@Thanks! | |
dkmg | + 1 | + 1 | 谢谢@Thanks! | |
hafeng45 | + 1 | + 1 | 我很赞同! | |
yjwgrwz | + 1 | + 1 | 我很赞同! | |
小小色 | + 1 | + 1 | 谢谢Thanks! | |
chengan1998 | + 1 | + 1 | 欢迎分析讨论交流,吾爱破解论坛有你更精彩! | |
SВ | + 1 | + 1 | 我很赞同! | |
chenhuitian321 | + 1 | + 1 | 用心讨论,共获提升! | |
椎名牧 | + 1 | + 1 | 用心讨论,共获提升! | |
Randolp欢 | + 1 | + 1 | 我很赞同! | |
2019ghua | + 1 | + 1 | 基础教程,必须点赞 | |
windtrace | + 1 | + 1 | 谢谢@Thanks! | |
九天临兵斗 | + 1 | + 1 | 热心回复! | |
AltRick | + 1 | + 1 | 用心讨论,共获提升! | |
lirise | + 1 | + 1 | 谢谢@Thanks! | |
zxc125864 | + 1 | + 1 | 用心讨论,共获提升! | |
huangyutong | + 1 | + 1 | 我很赞同! | |
筱轩孜 | + 1 | + 1 | 谢谢@Thanks! | |
木子阿四 | + 1 | + 1 | 谢谢@Thanks! | |
pengsx01 | + 1 | + 1 | 用心讨论,共获提升! | |
hhk007 | + 1 | + 1 | 欢迎分析讨论交流,吾爱破解论坛有你更精彩! | |
Pony21 | + 1 | + 1 | 辛苦码字,谢谢 | |
瞎扯蛋 | + 1 | 谢谢@Thanks! | ||
a5606495 | + 1 | + 1 | 用心讨论,共获提升! | |
poise2200 | + 1 | + 1 | 用心讨论,共获提升! | |
wjsbsjs | + 1 | + 1 | 热心回复! | |
Phantom可 | + 1 | + 1 | 真的辛苦 排版 还是内容都很厉害 | |
gh饕餮 | + 1 | + 1 | 用心讨论,共获提升! | |
Hmily | + 1 | + 7 | + 1 | 用心讨论,共获提升! |
LOLQAQ | + 1 | + 1 | 我很赞同! | |
misszzy | + 2 | + 1 | 好文章,谢谢 | |
zxcvbnms | + 2 | + 1 | 很详细的教程 | |
dreamer2020 | + 1 | + 1 | 谢谢@Thanks! | |
.Net_破解 | + 1 | + 1 | 老哥精华帖 | |
fengzhiwen | + 1 | + 1 | 用心讨论,共获提升! | |
墨言此生 | + 1 | + 1 | 用心讨论,共获提升! | |
vipcrack | + 1 | + 1 | 谢谢@Thanks! | |
xuexiyixiaxia | + 1 | + 1 | 用心讨论,共获提升! | |
pwp | + 2 | + 1 | 辛苦了 | |
Hacker-无心 | + 1 | + 1 | 多谢楼主整理,最近自己在不断摸索反汇编,也没有看什么教程,就是不断撞墙. |
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。
|
发表于 2019-10-23 20:30
| ||
|
发表于 2019-10-23 20:53
| ||
发表于 2019-10-23 20:34
| ||
发表于 2019-10-23 20:39
| ||
|
发表于 2019-10-23 22:13
| ||
发表于 2019-10-23 22:16
| ||
RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )
GMT+8, 2024-5-10 07:12
Powered by Discuz!
Copyright © 2001-2020, Tencent Cloud.