吃麻花麻花疼 发表于 2024-4-27 04:21

Go语言验证程序如何破解

本人小白,学习刚满3个月。深夜闲来无事,想研究研究go语言编译出的程序,便写了个简单的比对思路package main

import "fmt"

func main() {
        trueKey := "123456"
        var userKey string

        fmt.Printf("Please enter key->")
        fmt.Scan(&userKey)

        if trueKey == userKey {
                fmt.Println("Success")
        } else {
                fmt.Println("False")
        }
}真的很简单吧?
可是拖入OD分析后,直接傻眼了。。。
程序基址居然是20000???

点进去之后,这又是什么???

字符串这么乱???

思来想去,着实不知如何入手,不知各位大神可否指点一二?

吃麻花麻花疼 发表于 2024-4-27 04:25

一心急,忘放程序链接了,着实抱歉,此处补链:https://pan.baidu.com/s/1E2nVaWI71WHGZ4FoHwbyRg?pwd=7pdk

LeyBc 发表于 2024-4-27 04:21

1.打开OD 附加软件 运行按下ALT+M 搜索 Please enter key 因为界面上有这个玩意.

2.记录下 地址 00471A8D 当然 你电脑可能不太一样

3.继续ALT+M搜索 8D1A4700 这样可以搜索到 上面这个地址 在内存中的位置[前面3步,你可以用CE 更简单]

4.记录地址 004573B0到反汇编窗口 跳过去,跳过去之后 鼠标上下随意滑动一下


5.下断点 自己调试就行了




风起陇东 发表于 2024-4-27 08:22

坐等看回复。

星野爱 发表于 2024-4-28 16:14

能不能挂蓝奏 百度云真懒得下

吃麻花麻花疼 发表于 2024-4-28 17:33

星野爱 发表于 2024-4-28 16:14
能不能挂蓝奏 百度云真懒得下

蓝奏云网盘下载地址:https://wwm.lanzoul.com/iGXgt1wv0bgh
密码:dsiu

LeyBc 发表于 2024-4-29 11:55

本帖最后由 LeyBc 于 2024-4-29 11:56 编辑



第1个跳转长度对比 nop掉
第2个跳转是注册码对比 直接jmp

00FC742F   .8B4424 40                     MOV EAX, DWORD PTR SS:
00FC7433   .8378 04 06                      CMP DWORD PTR DS:, 0x6
00FC7437      75 25                           JNZ SHORT 00FC745E
00FC7439   .8B00                            MOV EAX, DWORD PTR DS:
00FC743B   .8D0D E8F8FD00                   LEA ECX, DWORD PTR DS:         ;123456StringFormat[]byte' for string390625uint16uint32uint64structchan<-<-chan ValueGetACPsysmontimersefenceselect, not object next= jobs= goid sweepB -> % util alloc freespan= prev= list=, i =code= addr= m->p= p->m=SCHEDcurg= ctxt: min=max= (..
00FC7441   .890C24                        MOV DWORD PTR SS:, ECX
00FC7444   .894424 04                     MOV DWORD PTR SS:, EAX
00FC7448   .C74424 08 06000000            MOV DWORD PTR SS:, 0x6
00FC7450   .E8 6BBBF6FF                     CALL 00F32FC0
00FC7455   .0FB64424 0C                     MOVZX EAX, BYTE PTR SS:
00FC745A   .84C0                            TEST AL, AL
00FC745C      75 56                           JNZ SHORT 00FC74B4
00FC745E   >C74424 28 00000000            MOV DWORD PTR SS:, 0x0
00FC7466   .C74424 2C 00000000            MOV DWORD PTR SS:, 0x0





00FC7433   .8378 04 06                      CMP DWORD PTR DS:, 0x6
00FC7437      90                              NOP
00FC7438      90                              NOP
00FC7439   .8B00                            MOV EAX, DWORD PTR DS:
00FC743B   .8D0D E8F8FD00                   LEA ECX, DWORD PTR DS:         ;123456StringFormat[]byte' for string390625uint16uint32uint64structchan<-<-chan ValueGetACPsysmontimersefenceselect, not object next= jobs= goid sweepB -> % util alloc freespan= prev= list=, i =code= addr= m->p= p->m=SCHEDcurg= ctxt: min=max= (..
00FC7441   .890C24                        MOV DWORD PTR SS:, ECX
00FC7444   .894424 04                     MOV DWORD PTR SS:, EAX
00FC7448   .C74424 08 06000000            MOV DWORD PTR SS:, 0x6
00FC7450   .E8 6BBBF6FF                     CALL 00F32FC0
00FC7455   .0FB64424 0C                     MOVZX EAX, BYTE PTR SS:
00FC745A   .84C0                            TEST AL, AL
00FC745C      EB 56                           JMP SHORT 00FC74B4
00FC745E   >C74424 28 00000000            MOV DWORD PTR SS:, 0x0
00FC7466   .C74424 2C 00000000            MOV DWORD PTR SS:, 0x0



对比一下


yu6862854 发表于 2024-4-29 17:00

Go语言验证程序如何破解

吃麻花麻花疼 发表于 2024-4-29 20:00

本帖最后由 吃麻花麻花疼 于 2024-4-29 20:03 编辑

LeyBc 发表于 2024-4-29 11:55
第1个跳转长度对比 nop掉
第2个跳转是注册码对比 直接jmp


感谢老哥,方便分享一下是如何定位到这串关键指令的吗?只能单步分析吗?

吃麻花麻花疼 发表于 2024-4-30 17:05

LeyBc 发表于 2024-4-30 14:31
1.打开OD 附加软件 运行按下ALT+M 搜索 Please enter key 因为界面上有这个玩意.

2.记录下 地址 00471A8 ...

明白了,感谢感谢!
页: [1]
查看完整版本: Go语言验证程序如何破解