吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7590|回复: 15
收起左侧

[原创] 初入x32dbg命令行与脚本之一:

  [复制链接]
冥界3大法王 发表于 2020-7-28 10:37
https://www.52pojie.cn/thread-1230902-1-1.html这个贴子编的有很大问题,已提交组织,申请删除了!
https://www.lanzoux.com/iqYXOf0uu5a这个为测试程序(crackme.exe 和 upx3.91)
仅为测试和学习没有任何盗版哟~~
打包时,我们用:upx391w.exe C:\CRACKME.EXE
官方的脚本使用详解只能找到有限的资源,且都是有结果,没原因的。

所以,我们有必要仔细来研究下为什么?
我们先把脚本贴上,我们给每行加了编号:

1)//start   从这行中,我们学到 //添加注释
从第2)开始我们就能每行测试着来学习了!(粘入x32dbg/x64dbg的命令行插件中
2)msg "upx (3.91) unpacker"
    image.png 就是弹出个信息框,告诉用户这是upx 3.91有脱壳脚本
3)msg "make sure you're at the entry point of the program before you continue"
msg“继续之前,请确保您在程序的入口点”    意思告诉你脚本得在正确的地方使用才对,必须暂停中,比如设好断点后,不然可要报错,给你打脸的,不信你就来瞧瞧吧。
到这里之后,其实没有玩过的,可以自己研究下帮助
帮助中告诉你 msg 是个消息框,后面可以跟一个格式化的字符串,或一个变量
比如msg 2+3
msg {2+3}
msg {_zf}
msg {eax}
msg {user32.dll:0}
msg {disasm.sel()}
msg {x:00409D63}
msg {$pid}
msg {:oep}
image.png
当然当然有太多的太多变量列表了
image.png
如果自己去组合搞成表达式,那是威力无穷的
为了方便还是自己开发工具的省力,所略一次费劲,终身收益。
4)pause这个呢,等价于F12 因为制作脚本后完全是程序模拟活人来完成的自己跑,所以它们都有一个自己对应的命令


5)//clear breakpoints      
6)bc        为了让脚本使用不受影响所以一般都有清空cc断点的命令
7)bphwc  同时,清掉全部硬件断点


8)//script start   这里是脚本的正式开始部分
9)step                  等价于F8 单步,这样好理解吧 ,还是老办法,一行一行的粘入测试并看效果
image.png
想想我们在使用esp定律时,是不是也是这样的? 单步一下esp寄存器变红后,数据窗口跟随硬访下断?
10)bphws csp,r           //为什么是csp寄存器? 这个资料太少,实在是不理解!
image.png
原文这样写的,我也不明白,不知道不能瞎说!不然论坛上那些瞎眼党,无脑转发党就要开始行动了。。。
几年后,我看到我当年的那些可笑错误被传遍了网络。。。真是无语了。。。我说的不对的,我改的不对的。。。
这就造就了csdn上,还有很多地方一个错,个个错。。。对么?你测试过,通过了吗?
11)erun 这个呢就是无视异常运行  等价于shift +F9 吧  (三个类似的,不信找菜单。。。)
12)bphwc 同上,硬件断可以清掉了

13)//find oep jump  到这里就是开始了找寻oep
14)find cip,"80E9"    为啥用cip呢? 我也不理解!{:301_971:} 我是自己试出来的 ,还希望论坛明白人指点下为啥?谢谢。
image.png
这句话是重点!所以,我截图用了两个超级放大镜让楼下近视们看清楚
也许你眼神比我好!{:301_999:}
image.png
find命令看截图,咱们再来细说
参数1  是开始搜索的地址
参数2  要搜索的字节模式中间可以用??
参数3  要搜索的数据的大小,没提默认是多少,估计可能是1000吧
接下来,你必须搞清楚,必须十分的清楚,你当前在哪个区块?
我们用下面的命令让程序自己告诉你!
【memmapdump 00409D56你得到的结果是upx1】
image.png
memmapdump 00409D63结果还是upx1
memmapdump 00401000 呢?得到的区块位于upx0,即401000
后两张截图就没有必要了。
接下来再说两个小放大镜问题 80 E9
00409D60 | 83EC 80                | sub esp,FFFFFF80
00409D63 | E9 9872FFFF         | jmp <crackme2_upx.sub_401000         
80 是 00409D60 的最后一个字节
E9 00409D63 的第一个字节   
find呢,就是从内存里搜索该特征码!其他的几个脚本也是这样的“表达
找到以后呢?  存到 $result 这个变量里边
注意,该命令执行后,并不会在 【引用】标签页里有选显示
这是与findallmem命令不同的地方
不同的地方2在于findallmem命令中 $result 设置为出现的次数。
image.png

15)cmp $result,0
image.png
参数1 arg1要比较的第一个表达式
参数2  arg2要比较的第二个表达式 ;
如果计算结果为true,则$ _BS_FLAG设置为1,表示该值更大

就是比较两个表达式,看了几个脚本都这样写的
$_EZ_FLAG and $_BS_FLAG
不信可以弹框测试下,当前是多少?
msg {$_EZ_FLAG}  结果为0
msg {$_BS_FLAG}  结果为1===》现在就属于这种情况! 你必须整明白了,这点很重要

16)je error     =0相等则跳到错误处


17)//go to OEP  转到oep
18)bp $result+1   那这里就变得很简单了,刚才 的那个地址+1,设上断点
19)erun     无视异常运行
20)bc        清掉全部cc断点
21)sti       就是 StepInto   F7,单步步入

22)//finish script  脚本完成
23)ret       脚本完成当然要return了

24)error:  也就是 这里啦~~
25)msg "didn't find oep jump" 没找到oep,完蛋了~~
26)ret

好了,第一个脚本研究和分析就到这里啦。说得不对之处还望纠正。谢谢。{:301_975:}

免费评分

参与人数 6吾爱币 +4 热心值 +5 收起 理由
psx1lin + 1 用心讨论,共获提升!
gzwzj + 1 我很赞同!
爱似听花香 + 1 我很赞同!
笙若 + 1 + 1 谢谢@Thanks!
ygmz + 1 + 1 我很赞同!
fanvalen + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

千军 发表于 2020-8-3 12:53
法总你好可以受累看下我这个问题是出在哪了吗?下面这个链接就是
https://www.52pojie.cn/thread-1234686-1-1.html
(出处: 吾爱破解论坛)
iTruth 发表于 2020-7-28 12:50
帮助里说的很明确了啊,csp在x32下就是esp,在x64下就是rsp.用csp这样的寄存器的脚本可以通用x32和x64
bjbcqy 发表于 2020-7-28 10:56
fanvalen 发表于 2020-7-28 12:10
大佬终于发dbg的教程了一直不怎么会用就等你了
暴躁的希瓦拉达 发表于 2020-7-28 12:28
学习一下000
csjwaman 发表于 2020-7-28 15:47
图片做得非常漂亮
wrt110120 发表于 2020-7-28 21:25
谢谢  学习了
donwinn 发表于 2020-7-28 21:52
支持一下
tlsnake 发表于 2020-7-29 05:51
先认真学习下
谢谢楼主分享经验
麻辣隔壁 发表于 2020-7-29 06:53
哈喽,支持你哟。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-25 15:13

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表