Hacker News new | past | comments | ask | show | jobs | submit | bbayer's comments login

Do you mind to share genre?


Why would a decompiler execute code that has decompiled?


The context of the log messages seems to imply that it's part of an automated (or semi-automated) string decryption system. Many binaries obfuscate strings using some simple encryption algorithm to defeat trivial analysis (i.e. "strings"), and manually reversing those is tedious. It's nice to have an automated decryption routine, but not so nice if it consists of just eval() with no sandbox...


Even if the binary isn't malicious executing random parts of a program has high risk of breaking or at least polluting the current system. Most executables will have some side effects on the system due to interactions with file system or other processes. There is no point in having executable which only crunches numbers in a loop with no sideeffects (unless it's a benchmark or something like ls executable) so in most cases there will be sideffects. And doing them in uncontrolled manner will be pure chaos. Something as seemingly harmless as backuping software can overwrite stuff if not executed in correct way.

Assuming sandbox is working correctly any parts with sideffects will probably not be very productive for deobfuscation anyway. Such automated decryption strategy would work best for purely functional parts of code. But the parts that interact with os and filesystem are either not part of decryption code (so no point executing) or if they are part of decryption they are probably the parts which try to defeat such automated decryption by detecting sandboxed/emulated environment and stopping decryption (again no point executing it without some manual intervention or very carefully designed fake environment simulating a specific target).


For further deobfuscation you might want to record runtime stats and code flow.


I want to learn PCB design, mostly with ARM and ESP based designs. How would I learn basics? I know theory part but I really couldn't figure out why they determine which component and which value they have to use. I mean there are resistors, capacitors all over the place but I really want to learn reason behind it. Also I guess there are some basics related power, battery, UART, USB etc. Is there any source that covers all of these concepts?


There are certain usage patterns that you will find all over the place, e.g.:

- Current-limiting resistors

- The resistor divider (two resistors between e.g. 3.3V and GND. The point between the two resistors will be between 3.3V and 0V, depending on the resistor values. Sometimes you need a certain voltage. For example to bias transistors.

- Delays, using a resistor and a capacitor. The values will determine the delay.

- Capacitors next to oscillators

- Filters, using a resistor and a capacitor. The order and the values will determine the cutoff frequency.

- Most capacitors on a PCB probably sit right next to a chip. Often, at least one per chip. They get rid of noise already on the line, and act as short-term energy storage for the chip next to it.

- Decoupling capacitors to get rid of the DC component of a signal (i.e. if there is a signal fluctuating between 4.5V and 5.5V before the cap, it'll be -0.5V and 0.5V behind the cap. Often, you need to add a DC component and later remove it, so that's two capacitors already.


Obvious but it never occurred to me that experienced person sees far fewer parts than layman when looking at the board, for expert its like yeah "file read there", "serialization here" (if I were to use programming analogy) but layman sees gazillion little parts magically working together.


"You get used to it, I don't even see the code. All I see is blonde, brunette, redhead."


I think cockroach, beetle and woodworm is more appropriate when talking about code.


They were quoting "The Matrix". But you're probably correct, even in the movies the existence of "The One" was a pretty serious security bug, and the entire need for "agents" was a workaround for other bugs.


"if there is a signal fluctuating between 4.5V and 5.5V before the cap, it'll be -0.5V and 0.5V behind the cap" if there's a resistance to ground after the capacitor. I've accidentally planned an audio amp with input decoupling capacitors, didn't add ground resistors before the capacitors, so if you plug it into an audio output with DC-blocking capacitors but not resistors to ground, the voltage in the middle could be anything.


Also worth mentioning are pull-up or pull-down resistors. They give a pin a default state when nothing is driving the pin. You will often see them on reset pins and on inputs from buttons.


> I mean there are resistors, capacitors all over the place but I really want to learn reason behind it.

There are some good YouTube channels that go into this. EEVBlog[1] has made a lot of really nice videos about the fundamentals, as has w2aew[2]. And I found MicroType Engineering[3] to be a good source of practical information on designing circuits.

Capacitors next to ICs are almost always for decoupling[4]. Similar to how the cistern in your toilet provides a large amounts of water in a short amount of time without affecting the water pressure in the rest of the house, hence decoupling the local water flow from the main supply, decoupling capacitors can supply a lot of current for a short amount of time.

However what values to use can seemingly be a bit of a black art[5], not helped by the fact there's so much outdated information and rules of thumb out there from the days of through-hole components which just doesn't apply to modern surface mounted components (like needing multiple different values).

On the other hand, resistors on a data line can be there to protect against ESD events[6], for example.

Some of it might be a bit more advanced than what you need right now, but there's definitely some good stuff for people starting out. If for nothing else highlighting areas you should be aware of.

[1]: https://www.youtube.com/@EEVblog/playlists

[2]: https://www.youtube.com/@w2aew/playlists

[3]: https://www.youtube.com/c/MicroTypeEngineering

[4]: https://www.youtube.com/watch?v=BcJ6UdDx1vg

[5]: https://www.youtube.com/watch?v=k7aPb585Y6k

[6]: https://www.youtube.com/watch?v=6OxE06n6n44


Also Phil's Lab, especially for PCB design specifically (though he covers schematics too, I'd say it's typically not as beginner-friendly/a faster-paced run-through so you understand what he's laying out).


As an EE I can vouch 100 times for Phil's Lab. He really knows his stuff and honestly is as close to the actual job as it can get.


Make: Electronics by Charles Platt will take you through all the whys and wheres, starting at the very basics. I highly recommend it.

Also, I'll recommend the "Follow the example" approach of just looking at the data sheets for various components and modules. Especially stuff like the Arduino Uno - It's got a microcontroller, and then everything around it is just support. You start to see patterns where there (for example) a 10uF and 0.1uF Capacitor around power inputs. And they're everywhere so even if you don't know why (yet) you do know that you need capacitors around power inputs.


I started by building a programmable mechanical keyboard based on this macropad tutorial (see link). If you want to simplify it somewhat, replace all the microcontroller circuitry (oscillator, capacitors, USB interface, etc.) with an Arduino, and use through-hole diodes. It's a really cool feeling to finish your design, order custom PCBs from jlcpcb, do a bit of soldering, and end up with a useful, working keyboard.

https://wiki.ai03.com/books/pcb-design/page/pcb-guide-part-1...


I followed this to make a very basic PCB and had it shipped to me, worked fine. Guides you through all the basic steps with KiCad.

https://youtube.com/playlist?list=PL3bNyZYHcRSUhUXUt51W6nKvx...


Read the datasheets. They usually have recommended layouts and configurations.


Yes, this is the way. Datasheets and application notes will tell you nearly everything you need to know. If you don’t understand why something is done or how something works, look it up at that point. Starting from fundamentals is going to be a much slower path than just following manufacturer examples.


For designing with basic components I recommend starting with microcontrollers on a breadboard. There's plenty of great youtube channels that talk about this stuff as well, like GreatScott and Ben Eater


Phil's Lab on YouTube has great PCB design tutorials that cover how to think about layout and design, how to use Kicad, and even how to turn your design into a real product.

https://youtube.com/@PhilsLab


So you want to learn electronics? I suggest that you take the time to actually learn the theory behind it and learn how resistance, capacitance, inductance affects the system. It is hard but helps a lot. If you want to understand digital systems, then learn how digital basic components work and how you combine them to create more complex systems. Had electronics as my major in my bachelor's degree, and the mental model is really important when it comes to electronics, and the only way to really understand it and get the correct mental model is by repeatedly analyzing the networks and the change over time (resistance,capacitance,inductance) and all of sudden it makes perfectly sense!


Underlying theory is important, but seeing practical examples that _explicitly applies theory_ has been critical in my particular electronics adventure. There are more ways to apply Ohm's Law (or Kirchhoff's Laws) than you can shake a stick at and seeing someone explicitly do the math and apply it while explaining a circuit that I am interested in has helped me get better at applying it.

I think the hardest things for me so far been (a) getting my head around the idea that everything in a circuit is happening all at once (rather than iteratively like an algorithm) and (b) "input" and "output" are convenience terms, e.g. an opamp can sink current through its "output". Both of these insights have come from seeing real circuits analyzed on YouTube.


In addition to the other replies which list a number of good resources, I've found reddit.com/r/PrintedCircuitBoard interesting to watch. It's mostly people asking for reviews of their projects, and there's a lot of tips and tricks to pick up in the review comments.

You can also see a nice progression there from beginner PCBs to more advanced things.


Such modular design is tricky. Some parts require close distance to specific components like clocks. OP did a good job by solving such problems.


I think starting a side project with a goal of revenue is not practical. For me, doing side project is doing something that you can't normally do in day to day job. So, it has to something that I love to spend time for. On the other hand, I always think about making many part when I start something new. My side projects are generally about making games and mobile applications, search engine optimization, writing programs that transform data from one form to another. When I finish a side project, I don't hesitate to putting some ads and make passive income. It is lovely to make money while you are sleeping from something that you have enjoyed creating it.


It reminds me the joyful moments while I plugged my Commodore 64 to TV set.


That was my very first thought too. Joyful moments indeed.


> Peter has adopted the code and molded it for years, Anakin to a digital C3PO. He'd grown attached to his creation. He loved Art more than anyone else alive.

True gold.


Flash Player itself has a lot of security vulnerabilities but Adobe Flash as IDE still has no competitor even today IMHO. There is no such tool that combines code and graphics with ease like Adobe Flash. You can use it as an animator, you can use it as graphic designer, you can use it as developer. All these features just came together perfectly and it made sense. I am still missing this usability.


After several years of struggling with side projects I found one thing that motivates me: money. I don't even start a project if there is no possibility of some revenue. %99 of ideas got eliminated immediately. Every people have their own motivation though but having side income from a side project even you are sleeping is different thing. I have limited time for side projects. I always think I have one bullet so trying to use it wisely.


This is certainly a useful lens through which to help you focus, but I've found that I'm now ONLY motivated to do things because of the possibility of financial upside. Have you encountered the same?


Actually speaking yes. I spent a lot of time to think about it. Here is my little thought process to keep my motivation;

Why am I working? Why am I spending my 1/3 of my time with my daily job. Is career real thing or other words is it really necessary to make money? Does it really matter to have high work satisfaction even though you earn little? I am working because of money. Money doesn't bring happiness but it brings freedom. At the end of the day what I need is freedom. It doesn't matter if I have shinny career if I can earn same money with something else. I have limited time and more money to become free. So I need to use my time wisely to get more money to become free eventually. It doesn't matter if I am using shiny programming language, technology or IDE. At the end of the day nobody will give a shit about what I am using. Quickest is the best because I have counted days in my life. I don't have time to learn new things every time I start a new projects. I already know everything I need to make money. Learning is not a goal but it is a reward when I become free.


I have been in Bangalore and I really couldn't understand who is honking to me because everybody honk. It is just chaos.


Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: