首页
社区
课程
招聘
未解决 [求助]x32dbg的脚本,有三条命令不明白,求指点迷津
发表于: 2020-7-28 08:07 3029

未解决 [求助]x32dbg的脚本,有三条命令不明白,求指点迷津

2020-7-28 08:07
3029

https://www.lanzoux.com/iqYXOf0uu5a这个为测试程序(crackme.exe and upx3.91)
www.52pojie.cn/thread-1230902-1-1.html

贴子太长,配图请看这里。谢谢~~

//start

msg "upx (3.91) unpacker"

msg "make sure you're at the entry point of the program before you continue"

pause

 

//clear breakpoints

bc

bphwc

 

//script start

step

bphws csp,r

erun

bphwc

 

 //find oep jump

find cip,"80E9" //不明白这句话,找cip指的是哪里? 说有这个cip寄存器呢?结果找到,如何把找到的地址分配给 $result?

cmp $result,0

je error

 

//go to OEP

bp $result+1//还有这里不明白的,变量加1是怎么来的 

erun

bc

sti

 

//finish script

ret

  

error:

msg "didn't find oep jump"

ret


[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 6628
活跃值: (1964)
能力值: ( LV4,RANK:42 )
在线值:
发帖
回帖
粉丝
2
cip == eip or rip  我记得是这样的
2020-7-28 08:49
0
雪    币: 6628
活跃值: (1964)
能力值: ( LV4,RANK:42 )
在线值:
发帖
回帖
粉丝
3
find 是x32dbg内置的脚本命令 它的返回值就是固定放在$result
2020-7-28 08:51
0
雪    币: 8599
活跃值: (5065)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
bp $result+1
变量加1,这个你要结合上下文,也就是find cip,"80E9"
加1 跳过80,就刚好在E9上下断点。
2020-7-28 09:53
0
雪    币: 889
活跃值: (4027)
能力值: ( LV5,RANK:69 )
在线值:
发帖
回帖
粉丝
6
80E9就是特征码
2020-7-28 10:14
0
雪    币: 34577
活跃值: (7135)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
蜜蜂啊 find 是x32dbg内置的脚本命令 它的返回值就是固定放在$result
感谢大家来抽空解答
若是用了这个
findallmem csp,"E9 98 72 FF FF"    呢? 
$result 设置为出现的次数。也就是说这个是和find不同的地方,find能把得到的那个变量($result+1设成断点)
若是出现在 【引用 标签页】第2个,是不是也就没办法了?
还是只能用find来解决oep问题,其他的用在特殊场合。

比如说,我有一个这样的思路,不知对也不对。
有一个程序叫 MindMaster ,我知道注册码在那个文件中
但它是QT的程序,实在的不熟悉,不知用哪个函数能跟到那个注册码文件名

我想编个脚本 
:再来重复向下运行
findallmem 未知寄存器,"XXXXXX特征码"
cmp $result,0
step                  
。。。
也不知这个思路是不是真的能成立

反正我知有一个命令这样的
setstring 6114, "TestString"
TraceIntoConditional "CmpStr([esp],$UNICODE,.6114)",10000
就想多学会一种方法解决问题。
2020-7-28 10:49
0
雪    币: 1254
活跃值: (630)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8

In addition to the registers in the architecture, x64dbg provides the following registers: CAX , CBX , CCX , CDX , CSP , CBP , CSI , CDI,CIP . These registers are mapped to 32-bit registers on 32-bit platform, and to 64-bit registers on 64-bit platform. For example, CIP is EIP on 32-bit platform, and is RIP on 64-bit platform. This feature is intended to support architecture-independent code.

2020-7-28 11:31
0
雪    币: 8599
活跃值: (5065)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
ninebell 感谢大家来抽空解答 若是用了这个 findallmem csp,"E9 98 72 FF FF" 呢? $result 设置为出现的次数。也就是说这个是和find不同 ...
你这语文水平,实在是不敢恭维。真心看不懂你要表达什么意思。
2020-7-28 14:28
0
雪    币: 2899
活跃值: (1753)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
10
我不知道你在纠接什么,这个CIP,在32位里面就是指的EIP,如果在64位上就是RIP,EIP里保存了CPU即将执行的指令的地址,重点,是指令的地址,它会不断增加的。你也看得到现在的地址是00409D56,因为脚本停在这里,这个地址里目前保存的数据是8D442480(在计算机里指令和数据是分不开的),4个字节,所以它的下一个地址就是00409D5A -4 =00409D56,脚本的意思,从这个地址开始查找这些指令,比对,如果找到了80E9,E9就是JMP指令的哈,就把保存有80E9指令的地址返回给result,很显然,这个地址是指向80,而不是E9,而我们需要在E9上下断,所以会有result+1的做法。其实这个脚本也可以改成这样:find cip,"E9"  然后  bp $result     //下断在E9上,E9就是JMP啦,脚本作者可能是为了稳健才写成查找80E9的。你甚至可以改成:find cip,"E99872ffff"   ,这样result应该会是地址409D63, 然后精确的在E9上下断,bp $result ,再乱搞一下,你甚至可以find cip,"75FA",然后bp $result+5
2020-7-29 16:36
0
雪    币: 2899
活跃值: (1753)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
11
00409D4E | 54                       | push esp                                |
00409D4F | 50                       | push eax                                |
00409D50 | 53                       | push ebx                                | ebx:PEB.InheritedAddressSpace
00409D51 | 57                       | push edi                                |
00409D52 | FFD5                     | call ebp                                |
00409D54 | 58                       | pop eax                                 |
00409D55 | 61                       | popad                                   |
00409D56 | 8D4424 80                | lea eax,dword ptr ss:[esp-80]           |
00409D5A | 6A 00                    | push 0                                  |
00409D5C | 39C4                     | cmp esp,eax                             |
00409D5E | 75 FA                    | jne 409D5A                              |
00409D60 | 83EC 80                  | sub esp,FFFFFF80                        |
00409D63 | E9 9872FFFF              | jmp 401000                              |
00409D68 | 0000                     | add byte ptr ds:[eax],al                |
00409D6A | 0000                     | add byte ptr ds:[eax],al                |
2020-7-29 16:50
0
游客
登录 | 注册 方可回帖
返回
//