二进制程序补丁实验——修改软件时间限制

对于“ESP定律脱壳实验“中的脱壳程序结果,换种分析方法

x32dbg分析

加断点

打开脱壳程序,在“符号”标签页选择DiskProbe_dump_SCY.exe模块,搜索GetSystemTime
右键,选择切换断点

在断点中查看是否标记

分析断点代码

F9执行到断点,但是我们要的是调用这个函数的位置,不是这个函数的内部位置,有两个方法

  1. 执行到这里时,栈顶就是这个函数调用完之后的下一条指令地址
    (右击栈顶地址,选择在反汇编中转到指定DWORD
  2. 调试器中断的地址是函数的开头代码,但是这个函数是外部定义的系统函数,属于系统空间地址。可以利用调试器的运行到用户代码功能,alt+F9快速执行这个函数,跳到用户代码位置,即这个函数调用完的位置
用第一种方法

在汇编代码中,常见的比较会使用cmp指令进行比较操作,然后使用跳转指令进行分支操作,常见的条件跳转指令有jg, jle, jb, je, jz, ...

分析代码段,发现退出程序

所以跳转发生在GetSystemTime和这条指令之间,借用蓝色虚线进行分析,认为这条指令是关键跳转

cmp esi,eax
jg diskprobe_dump_scy.435463

我们可以对其进行取反,即将jg改为jle
选中指令,单击空格,修改指令即可
F9测试发现成功了

补丁

使用补丁进行修改,然后打开测试

ida pro静态分析

查找GetSystemTime函数调用代码

在import模块中搜索即可

我们复制这个地址,在IDA View-A搜索(快捷键g)

单击这个函数,使用快捷键x打开交差引用列表,单击OK跳转到函数调用的地址

代码分析

我们可以看到两个鲜明的红色箭头,然后有一处消息框函数

offset就是消息框显示的消息,我们先双击这条消息,进入数据页面,然后按快捷键a,自动进行字符串解析,然后按esc退出,显示出字符串结果

我们分析上面的代码,不难得出要修改的是第一个跳转

选中之后使用Edit -> Patch Program -> Assemble…进行修改即可

补丁

菜单命令 Edit -> Patch Program -> Apply patches to input file… ,打开补丁对话框,单击确定

可以重命名

测试成功

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇