@@ -41,7 +41,7 @@ func init() {
41
41
dyldCmd .AddCommand (dyldDisassCmd )
42
42
43
43
// dyldDisassCmd.Flags().StringP("symbol", "s", "", "Function to disassemble")
44
- // dyldDisassCmd.Flags().Uint64P("vaddr", "a", 0, "Virtual address to start disassembling")
44
+ dyldDisassCmd .Flags ().Uint64P ("vaddr" , "a" , 0 , "Virtual address to start disassembling" )
45
45
dyldDisassCmd .Flags ().Uint64P ("count" , "c" , 0 , "Number of instructions to disassemble" )
46
46
dyldDisassCmd .Flags ().BoolVarP (& demangleFlag , "demangle" , "d" , false , "Demandle symbol names" )
47
47
// dyldDisassCmd.Flags().StringP("sym-file", "s", "", "Companion symbol map file")
@@ -54,7 +54,7 @@ func init() {
54
54
var dyldDisassCmd = & cobra.Command {
55
55
Use : "disass" ,
56
56
Short : "🚧 [WIP] Disassemble dyld_shared_cache symbol in an image" ,
57
- Args : cobra .MinimumNArgs (2 ),
57
+ Args : cobra .MinimumNArgs (1 ),
58
58
RunE : func (cmd * cobra.Command , args []string ) error {
59
59
60
60
var data []byte
@@ -65,7 +65,7 @@ var dyldDisassCmd = &cobra.Command{
65
65
66
66
imageName , _ := cmd .Flags ().GetString ("image" )
67
67
instructions , _ := cmd .Flags ().GetUint64 ("count" )
68
-
68
+ startVMAddr , _ := cmd . Flags (). GetUint64 ( "vaddr" )
69
69
// symbolName, _ := cmd.Flags().GetString("symbol")
70
70
// doDemangle, _ := cmd.Flags().GetBool("demangle")
71
71
@@ -147,11 +147,17 @@ var dyldDisassCmd = &cobra.Command{
147
147
a2sFile .Close ()
148
148
}
149
149
150
- if len (args ) > 1 {
151
- log .Info ("Locating symbol: " + args [1 ])
152
- symAddr , image , err := f .GetSymbolAddress (args [1 ], imageName )
153
- if err != nil {
154
- return err
150
+ if len (args ) > 1 || startVMAddr > 0 {
151
+ var symAddr uint64
152
+ var image * dyld.CacheImage
153
+ if len (args ) > 1 {
154
+ log .Info ("Locating symbol: " + args [1 ])
155
+ symAddr , image , err = f .GetSymbolAddress (args [1 ], imageName )
156
+ if err != nil {
157
+ return err
158
+ }
159
+ } else {
160
+ symAddr = startVMAddr
155
161
}
156
162
157
163
off , _ := f .GetOffset (symAddr )
0 commit comments