【IDA pro常见问题】IDA pro 运行闪退 - Fatal error before kernel init - 应用程序"ida"不能打开

  • 系统环境

    Mac OS 10.12.6

  • 问题描述:

    拿到一个Android应用,需要对其进行安全测试,使用IDA pro对SO文件进行调试,日常打开IDA pro竟然闪退了,然后还给了一个错误提示“应用程序"ida"不能打开。”

    image

    看到这个信息瞬间一万个MMP从脑子中奔腾而过,给的这个信息也太少了吧。然后找到IDA pro的可执行文件 "IDA pro安装路径下的idabin目录下的ida或者ida64"(与dbgsrv同级目录)

    运行ida pro的可执行文件后再次给出简短的错误信息,“Fatal error before kernel init”,如图所示:

    image

    无奈选择重装IDA pro ,重新安装以后发现问题依旧存在,这个时候只能借助强大的Google了。经过搜索大致意思是说因为插件原因导致的启动失败。对应的解决方案如下:

    1. 删除zynamics_binexport_8.p6文件就可以解决

    2. 删除~/.idapro隐藏目录下的ida.reg文件

  • 解决方案一:

    通过搜索和查找并为找到对应的文件,怀疑是版本的问题
    
  • 解决方案二:

    经过测试最终删除~/.idapro隐藏目录
### Golang 中 RSA 公私钥生成与使用 在 Go 语言中,可以利用 `crypto/rsa` 和其他相关包来生成和操作 RSA 密钥对。下面是一个完整的例子展示如何创建并保存这些密钥。 #### 创建 RSA 密钥对 为了生成一对新的 RSA 私钥和相应的公钥,可采用如下方式: ```go package main import ( "crypto/rand" "crypto/rsa" "fmt" "log" ) func generateRSAKeyPair(bits int) (*rsa.PrivateKey, *rsa.PublicKey, error) { privateKey, err := rsa.GenerateKey(rand.Reader, bits) if err != nil { return nil, nil, fmt.Errorf("error generating key: %v", err) } publicKey := &privateKey.PublicKey return privateKey, publicKey, nil } func main() { privateKey, publicKey, err := generateRSAKeyPair(2048) if err != nil { log.Fatal(err) } fmt.Printf("Private Key:\n%+v\n", privateKey) fmt.Printf("Public Key:\n%+v\n", publicKey) } ``` 这段代码定义了一个名为 `generateRSAKeyPair` 的函数用于生成指定长度位数的 RSA 密钥对[^1]。 #### 将密钥编码为 PEM 格式 通常情况下,人们更倾向于以 `.pem` 文件的形式存储密钥数据。这可以通过调用标准库中的 `encoding/pem` 来完成: ```go package main import ( "crypto/rand" "crypto/rsa" "encoding/pem" "fmt" "io/ioutil" "log" ) // savePrivateKeyToPEMFile saves the given private key into a .pem file. func savePrivateKeyToPEMFile(filename string, privateKey *rsa.PrivateKey) error { privateBytes := pem.EncodeToMemory( &pem.Block{ Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(privateKey), }, ) err := ioutil.WriteFile(filename, privateBytes, 0600) return err } // savePublicKeyToPEMFile saves the public part of an RSA key pair to a .pem file. func savePublicKeyToPEMFile(filename string, publicKey *rsa.PublicKey) error { publicASN1, err := x509.MarshalPKIXPublicKey(publicKey) if err != nil { return err } publicBytes := pem.EncodeToMemory(&pem.Block{Type: "PUBLIC KEY", Bytes: publicASN1}) err = ioutil.WriteFile(filename, publicBytes, 0644) return err } func main() { privateKey, publicKey, err := generateRSAKeyPair(2048) if err != nil { log.Fatal(err) } err = savePrivateKeyToPEMFile("private.pem", privateKey) if err != nil { log.Fatal(err) } err = savePublicKeyToPEMFile("public.pem", publicKey) if err != nil { log.Fatal(err) } fmt.Println("Keys have been saved successfully.") } ``` 此部分展示了怎样把之前产生的密钥转换成适合长期储存的人类可读形式——即 PEM 编码格式,并将其写入磁盘上的两个独立文件中[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值